From e7aee1d2d2db52df4d21eee5435c21068a746815 Mon Sep 17 00:00:00 2001 From: ndyysagiii <118824217+ndyysagiii@users.noreply.github.com> Date: Sat, 13 Jul 2024 15:19:18 +0700 Subject: [PATCH] first commit --- .editorconfig | 18 + .env.example | 64 + .gitattributes | 11 + .gitignore | 20 + README.md | 66 + app/Exports/ProsesExport.php | 59 + app/Http/Controllers/AlgoritmaController.php | 506 + app/Http/Controllers/Controller.php | 8 + app/Http/Controllers/DashboardController.php | 19 + app/Http/Controllers/HasilController.php | 60 + app/Http/Controllers/LoginController.php | 43 + app/Http/Controllers/ProsesController.php | 39 + app/Http/Controllers/TransaksiController.php | 68 + app/Http/Middleware/isAuth.php | 25 + app/Http/Middleware/isNoAuth.php | 25 + app/Imports/TransaksiImport.php | 25 + app/Jobs/ProcessEclatJob.php | 242 + app/Models/Confidence.php | 40 + app/Models/Itemset1.php | 30 + app/Models/Itemset2.php | 36 + app/Models/Itemset3.php | 36 + app/Models/Proses.php | 39 + app/Models/Transaksi.php | 18 + app/Models/User.php | 47 + app/Providers/AppServiceProvider.php | 24 + artisan | 15 + bootstrap/app.php | 18 + bootstrap/cache/.gitignore | 2 + bootstrap/providers.php | 5 + composer.json | 70 + composer.lock | 9091 +++++ config/app.php | 126 + config/auth.php | 115 + config/cache.php | 107 + config/database.php | 170 + config/excel.php | 379 + config/filesystems.php | 76 + config/logging.php | 132 + config/mail.php | 116 + config/queue.php | 112 + config/services.php | 38 + config/session.php | 217 + database/.gitignore | 1 + database/factories/UserFactory.php | 44 + .../0001_01_01_000000_create_users_table.php | 49 + .../0001_01_01_000001_create_cache_table.php | 35 + .../0001_01_01_000002_create_jobs_table.php | 57 + ...24_05_29_014227_create_transaksi_table.php | 29 + .../2024_05_29_014312_create_proses_table.php | 31 + ...024_05_29_014451_create_itemset1_table.php | 31 + ...024_05_29_014456_create_itemset2_table.php | 32 + ...024_05_29_014501_create_itemset3_table.php | 32 + ...4_05_29_020022_create_confidence_table.php | 37 + database/seeders/DatabaseSeeder.php | 25 + package.json | 13 + phpunit.xml | 33 + public/.htaccess | 21 + .../icons/tabler-icons/fonts/tabler-icons.eot | Bin 0 -> 1521944 bytes .../icons/tabler-icons/fonts/tabler-icons.svg | 9012 +++++ .../icons/tabler-icons/fonts/tabler-icons.ttf | Bin 0 -> 1521760 bytes .../tabler-icons/fonts/tabler-icons.woff | Bin 0 -> 775616 bytes .../tabler-icons/fonts/tabler-icons.woff2 | Bin 0 -> 552144 bytes .../css/icons/tabler-icons/tabler-icons.css | 12031 ++++++ public/assets/css/styles.css | 6 + public/assets/css/styles.min.css | 16908 ++++++++ public/assets/images/backgrounds/rocket.png | Bin 0 -> 15492 bytes public/assets/images/logos/dark-logo.svg | 7 + public/assets/images/logos/favicon.png | Bin 0 -> 583 bytes public/assets/images/products/s1.jpg | Bin 0 -> 117358 bytes public/assets/images/products/s11.jpg | Bin 0 -> 231624 bytes public/assets/images/products/s4.jpg | Bin 0 -> 84198 bytes public/assets/images/products/s5.jpg | Bin 0 -> 124284 bytes public/assets/images/products/s7.jpg | Bin 0 -> 78225 bytes public/assets/images/profile/user-1.jpg | Bin 0 -> 30954 bytes public/assets/js/app.min.js | 37 + public/assets/js/dashboard.js | 211 + public/assets/js/sidebarmenu.js | 52 + public/assets/libs/apexcharts/LICENSE | 21 + public/assets/libs/apexcharts/README.md | 228 + .../libs/apexcharts/dist/apexcharts.amd.js | 2 + .../libs/apexcharts/dist/apexcharts.common.js | 14 + .../libs/apexcharts/dist/apexcharts.css | 581 + .../libs/apexcharts/dist/apexcharts.esm.js | 14 + .../assets/libs/apexcharts/dist/apexcharts.js | 32687 ++++++++++++++++ .../libs/apexcharts/dist/apexcharts.min.js | 14 + .../libs/apexcharts/dist/locales/ar.json | 63 + .../libs/apexcharts/dist/locales/ca.json | 55 + .../libs/apexcharts/dist/locales/cs.json | 55 + .../libs/apexcharts/dist/locales/de.json | 55 + .../libs/apexcharts/dist/locales/el.json | 55 + .../libs/apexcharts/dist/locales/en.json | 55 + .../libs/apexcharts/dist/locales/es.json | 55 + .../libs/apexcharts/dist/locales/et.json | 63 + .../libs/apexcharts/dist/locales/fa.json | 55 + .../libs/apexcharts/dist/locales/fi.json | 55 + .../libs/apexcharts/dist/locales/fr.json | 55 + .../libs/apexcharts/dist/locales/he.json | 55 + .../libs/apexcharts/dist/locales/hi.json | 55 + .../libs/apexcharts/dist/locales/hr.json | 55 + .../libs/apexcharts/dist/locales/hu.json | 64 + .../libs/apexcharts/dist/locales/hy.json | 55 + .../libs/apexcharts/dist/locales/id.json | 47 + .../libs/apexcharts/dist/locales/it.json | 55 + .../libs/apexcharts/dist/locales/ja.json | 55 + .../libs/apexcharts/dist/locales/ka.json | 55 + .../libs/apexcharts/dist/locales/ko.json | 55 + .../libs/apexcharts/dist/locales/lt.json | 55 + .../libs/apexcharts/dist/locales/lv.json | 64 + .../libs/apexcharts/dist/locales/nb.json | 55 + .../libs/apexcharts/dist/locales/nl.json | 55 + .../libs/apexcharts/dist/locales/pl.json | 55 + .../libs/apexcharts/dist/locales/pt-br.json | 55 + .../libs/apexcharts/dist/locales/pt.json | 55 + .../libs/apexcharts/dist/locales/rs.json | 55 + .../libs/apexcharts/dist/locales/ru.json | 55 + .../libs/apexcharts/dist/locales/se.json | 55 + .../libs/apexcharts/dist/locales/sk.json | 55 + .../libs/apexcharts/dist/locales/sl.json | 55 + .../libs/apexcharts/dist/locales/sq.json | 55 + .../libs/apexcharts/dist/locales/th.json | 55 + .../libs/apexcharts/dist/locales/tr.json | 55 + .../libs/apexcharts/dist/locales/ua.json | 55 + .../libs/apexcharts/dist/locales/zh-cn.json | 55 + .../libs/apexcharts/dist/locales/zh-tw.json | 55 + public/assets/libs/apexcharts/package.json | 106 + .../assets/libs/apexcharts/src/apexcharts.js | 762 + .../libs/apexcharts/src/assets/apexcharts.css | 688 + .../libs/apexcharts/src/assets/ico-camera.svg | 5 + .../libs/apexcharts/src/assets/ico-home.svg | 4 + .../libs/apexcharts/src/assets/ico-menu.svg | 1 + .../src/assets/ico-minus-square.svg | 9 + .../libs/apexcharts/src/assets/ico-minus.svg | 4 + .../apexcharts/src/assets/ico-pan-hand.svg | 9 + .../libs/apexcharts/src/assets/ico-pan.svg | 4 + .../apexcharts/src/assets/ico-plus-square.svg | 4 + .../libs/apexcharts/src/assets/ico-plus.svg | 4 + .../apexcharts/src/assets/ico-refresh.svg | 4 + .../libs/apexcharts/src/assets/ico-reset.svg | 4 + .../libs/apexcharts/src/assets/ico-select.svg | 4 + .../apexcharts/src/assets/ico-select1.svg | 3 + .../apexcharts/src/assets/ico-zoom-in.svg | 5 + .../apexcharts/src/assets/ico-zoom-out.svg | 10 + .../libs/apexcharts/src/assets/ico-zoom.svg | 4 + .../assets/libs/apexcharts/src/charts/Bar.js | 492 + .../libs/apexcharts/src/charts/BarStacked.js | 481 + .../apexcharts/src/charts/BoxCandleStick.js | 428 + .../libs/apexcharts/src/charts/HeatMap.js | 241 + .../assets/libs/apexcharts/src/charts/Line.js | 728 + .../assets/libs/apexcharts/src/charts/Pie.js | 1057 + .../libs/apexcharts/src/charts/Radar.js | 524 + .../libs/apexcharts/src/charts/Radial.js | 469 + .../libs/apexcharts/src/charts/RangeBar.js | 454 + .../libs/apexcharts/src/charts/Scatter.js | 267 + .../libs/apexcharts/src/charts/Treemap.js | 302 + .../src/charts/common/bar/DataLabels.js | 442 + .../src/charts/common/bar/Helpers.js | 638 + .../src/charts/common/circle/Helpers.js | 30 + .../src/charts/common/line/Helpers.js | 149 + .../src/charts/common/treemap/Helpers.js | 192 + .../apexcharts/src/libs/Treemap-squared.js | 290 + .../libs/apexcharts/src/locales/ar.json | 63 + .../libs/apexcharts/src/locales/ca.json | 55 + .../libs/apexcharts/src/locales/cs.json | 55 + .../libs/apexcharts/src/locales/de.json | 55 + .../libs/apexcharts/src/locales/el.json | 55 + .../libs/apexcharts/src/locales/en.json | 55 + .../libs/apexcharts/src/locales/es.json | 55 + .../libs/apexcharts/src/locales/et.json | 63 + .../libs/apexcharts/src/locales/fa.json | 55 + .../libs/apexcharts/src/locales/fi.json | 55 + .../libs/apexcharts/src/locales/fr.json | 55 + .../libs/apexcharts/src/locales/he.json | 55 + .../libs/apexcharts/src/locales/hi.json | 55 + .../libs/apexcharts/src/locales/hr.json | 55 + .../libs/apexcharts/src/locales/hu.json | 64 + .../libs/apexcharts/src/locales/hy.json | 55 + .../libs/apexcharts/src/locales/id.json | 47 + .../libs/apexcharts/src/locales/it.json | 55 + .../libs/apexcharts/src/locales/ja.json | 55 + .../libs/apexcharts/src/locales/ka.json | 55 + .../libs/apexcharts/src/locales/ko.json | 55 + .../libs/apexcharts/src/locales/lt.json | 55 + .../libs/apexcharts/src/locales/lv.json | 64 + .../libs/apexcharts/src/locales/nb.json | 55 + .../libs/apexcharts/src/locales/nl.json | 55 + .../libs/apexcharts/src/locales/pl.json | 55 + .../libs/apexcharts/src/locales/pt-br.json | 55 + .../libs/apexcharts/src/locales/pt.json | 55 + .../libs/apexcharts/src/locales/rs.json | 55 + .../libs/apexcharts/src/locales/ru.json | 55 + .../libs/apexcharts/src/locales/se.json | 55 + .../libs/apexcharts/src/locales/sk.json | 55 + .../libs/apexcharts/src/locales/sl.json | 55 + .../libs/apexcharts/src/locales/sq.json | 55 + .../libs/apexcharts/src/locales/th.json | 55 + .../libs/apexcharts/src/locales/tr.json | 55 + .../libs/apexcharts/src/locales/ua.json | 55 + .../libs/apexcharts/src/locales/zh-cn.json | 55 + .../libs/apexcharts/src/locales/zh-tw.json | 55 + .../libs/apexcharts/src/modules/Animations.js | 261 + .../libs/apexcharts/src/modules/Base.js | 25 + .../libs/apexcharts/src/modules/Core.js | 614 + .../libs/apexcharts/src/modules/CoreUtils.js | 386 + .../libs/apexcharts/src/modules/Crosshairs.js | 138 + .../libs/apexcharts/src/modules/Data.js | 705 + .../libs/apexcharts/src/modules/DataLabels.js | 373 + .../libs/apexcharts/src/modules/Events.js | 118 + .../libs/apexcharts/src/modules/Exports.js | 364 + .../libs/apexcharts/src/modules/Fill.js | 381 + .../libs/apexcharts/src/modules/Filters.js | 212 + .../libs/apexcharts/src/modules/Formatters.js | 182 + .../libs/apexcharts/src/modules/Graphics.js | 842 + .../libs/apexcharts/src/modules/Markers.js | 245 + .../libs/apexcharts/src/modules/Range.js | 548 + .../libs/apexcharts/src/modules/Responsive.js | 73 + .../libs/apexcharts/src/modules/Scales.js | 586 + .../libs/apexcharts/src/modules/Series.js | 453 + .../libs/apexcharts/src/modules/Theme.js | 239 + .../libs/apexcharts/src/modules/TimeScale.js | 917 + .../apexcharts/src/modules/TitleSubtitle.js | 52 + .../libs/apexcharts/src/modules/Toolbar.js | 532 + .../src/modules/ZoomPanSelection.js | 777 + .../src/modules/annotations/Annotations.js | 321 + .../src/modules/annotations/Helpers.js | 245 + .../modules/annotations/PointsAnnotations.js | 122 + .../modules/annotations/XAxisAnnotations.js | 118 + .../modules/annotations/YAxisAnnotations.js | 112 + .../libs/apexcharts/src/modules/axes/Axes.js | 39 + .../apexcharts/src/modules/axes/AxesUtils.js | 247 + .../libs/apexcharts/src/modules/axes/Grid.js | 521 + .../libs/apexcharts/src/modules/axes/XAxis.js | 633 + .../libs/apexcharts/src/modules/axes/YAxis.js | 558 + .../src/modules/dimensions/Dimensions.js | 336 + .../apexcharts/src/modules/dimensions/Grid.js | 151 + .../src/modules/dimensions/Helpers.js | 100 + .../src/modules/dimensions/XAxis.js | 385 + .../src/modules/dimensions/YAxis.js | 205 + .../apexcharts/src/modules/helpers/Destroy.js | 88 + .../src/modules/helpers/InitCtxVariables.js | 104 + .../src/modules/helpers/Localization.js | 39 + .../src/modules/helpers/UpdateHelpers.js | 282 + .../apexcharts/src/modules/legend/Helpers.js | 296 + .../apexcharts/src/modules/legend/Legend.js | 481 + .../apexcharts/src/modules/settings/Config.js | 345 + .../src/modules/settings/Defaults.js | 857 + .../src/modules/settings/Globals.js | 226 + .../src/modules/settings/Options.js | 1082 + .../src/modules/tooltip/AxesTooltip.js | 193 + .../src/modules/tooltip/Intersect.js | 369 + .../apexcharts/src/modules/tooltip/Labels.js | 506 + .../apexcharts/src/modules/tooltip/Marker.js | 188 + .../src/modules/tooltip/Position.js | 434 + .../apexcharts/src/modules/tooltip/README.md | 20 + .../apexcharts/src/modules/tooltip/Tooltip.js | 886 + .../apexcharts/src/modules/tooltip/Utils.js | 359 + .../assets/libs/apexcharts/src/svgjs/svg.js | 3752 ++ .../libs/apexcharts/src/utils/DateTime.js | 240 + .../libs/apexcharts/src/utils/Resize.js | 45 + .../assets/libs/apexcharts/src/utils/Utils.js | 402 + .../libs/apexcharts/types/apexcharts.d.ts | 1198 + public/assets/libs/bootstrap/LICENSE | 22 + public/assets/libs/bootstrap/README.md | 247 + .../bootstrap/dist/css/bootstrap-grid.css | 4226 ++ .../bootstrap/dist/css/bootstrap-grid.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.min.css | 6 + .../dist/css/bootstrap-grid.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-grid.rtl.css | 4225 ++ .../dist/css/bootstrap-grid.rtl.css.map | 1 + .../dist/css/bootstrap-grid.rtl.min.css | 6 + .../dist/css/bootstrap-grid.rtl.min.css.map | 1 + .../bootstrap/dist/css/bootstrap-reboot.css | 591 + .../dist/css/bootstrap-reboot.css.map | 1 + .../dist/css/bootstrap-reboot.min.css | 6 + .../dist/css/bootstrap-reboot.min.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.css | 588 + .../dist/css/bootstrap-reboot.rtl.css.map | 1 + .../dist/css/bootstrap-reboot.rtl.min.css | 6 + .../dist/css/bootstrap-reboot.rtl.min.css.map | 1 + .../dist/css/bootstrap-utilities.css | 5099 +++ .../dist/css/bootstrap-utilities.css.map | 1 + .../dist/css/bootstrap-utilities.min.css | 6 + .../dist/css/bootstrap-utilities.min.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.css | 5090 +++ .../dist/css/bootstrap-utilities.rtl.css.map | 1 + .../dist/css/bootstrap-utilities.rtl.min.css | 6 + .../css/bootstrap-utilities.rtl.min.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.css | 11783 ++++++ .../libs/bootstrap/dist/css/bootstrap.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.min.css | 6 + .../bootstrap/dist/css/bootstrap.min.css.map | 1 + .../libs/bootstrap/dist/css/bootstrap.rtl.css | 11747 ++++++ .../bootstrap/dist/css/bootstrap.rtl.css.map | 1 + .../bootstrap/dist/css/bootstrap.rtl.min.css | 6 + .../dist/css/bootstrap.rtl.min.css.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.js | 6295 +++ .../bootstrap/dist/js/bootstrap.bundle.js.map | 1 + .../bootstrap/dist/js/bootstrap.bundle.min.js | 7 + .../dist/js/bootstrap.bundle.min.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.esm.js | 4422 +++ .../bootstrap/dist/js/bootstrap.esm.js.map | 1 + .../bootstrap/dist/js/bootstrap.esm.min.js | 7 + .../dist/js/bootstrap.esm.min.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.js | 4468 +++ .../libs/bootstrap/dist/js/bootstrap.js.map | 1 + .../libs/bootstrap/dist/js/bootstrap.min.js | 7 + .../bootstrap/dist/js/bootstrap.min.js.map | 1 + public/assets/libs/bootstrap/js/dist/alert.js | 100 + .../libs/bootstrap/js/dist/alert.js.map | 1 + .../libs/bootstrap/js/dist/base-component.js | 100 + .../bootstrap/js/dist/base-component.js.map | 1 + .../assets/libs/bootstrap/js/dist/button.js | 82 + .../libs/bootstrap/js/dist/button.js.map | 1 + .../assets/libs/bootstrap/js/dist/carousel.js | 471 + .../libs/bootstrap/js/dist/carousel.js.map | 1 + .../assets/libs/bootstrap/js/dist/collapse.js | 311 + .../libs/bootstrap/js/dist/collapse.js.map | 1 + .../assets/libs/bootstrap/js/dist/dom/data.js | 67 + .../libs/bootstrap/js/dist/dom/data.js.map | 1 + .../bootstrap/js/dist/dom/event-handler.js | 284 + .../js/dist/dom/event-handler.js.map | 1 + .../libs/bootstrap/js/dist/dom/manipulator.js | 85 + .../bootstrap/js/dist/dom/manipulator.js.map | 1 + .../bootstrap/js/dist/dom/selector-engine.js | 86 + .../js/dist/dom/selector-engine.js.map | 1 + .../assets/libs/bootstrap/js/dist/dropdown.js | 473 + .../libs/bootstrap/js/dist/dropdown.js.map | 1 + public/assets/libs/bootstrap/js/dist/modal.js | 400 + .../libs/bootstrap/js/dist/modal.js.map | 1 + .../libs/bootstrap/js/dist/offcanvas.js | 298 + .../libs/bootstrap/js/dist/offcanvas.js.map | 1 + .../assets/libs/bootstrap/js/dist/popover.js | 102 + .../libs/bootstrap/js/dist/popover.js.map | 1 + .../libs/bootstrap/js/dist/scrollspy.js | 312 + .../libs/bootstrap/js/dist/scrollspy.js.map | 1 + public/assets/libs/bootstrap/js/dist/tab.js | 334 + .../assets/libs/bootstrap/js/dist/tab.js.map | 1 + public/assets/libs/bootstrap/js/dist/toast.js | 241 + .../libs/bootstrap/js/dist/toast.js.map | 1 + .../assets/libs/bootstrap/js/dist/tooltip.js | 648 + .../libs/bootstrap/js/dist/tooltip.js.map | 1 + .../libs/bootstrap/js/dist/util/backdrop.js | 166 + .../bootstrap/js/dist/util/backdrop.js.map | 1 + .../js/dist/util/component-functions.js | 47 + .../js/dist/util/component-functions.js.map | 1 + .../libs/bootstrap/js/dist/util/config.js | 80 + .../libs/bootstrap/js/dist/util/config.js.map | 1 + .../libs/bootstrap/js/dist/util/focustrap.js | 130 + .../bootstrap/js/dist/util/focustrap.js.map | 1 + .../libs/bootstrap/js/dist/util/index.js | 351 + .../libs/bootstrap/js/dist/util/index.js.map | 1 + .../libs/bootstrap/js/dist/util/sanitizer.js | 123 + .../bootstrap/js/dist/util/sanitizer.js.map | 1 + .../libs/bootstrap/js/dist/util/scrollbar.js | 139 + .../bootstrap/js/dist/util/scrollbar.js.map | 1 + .../libs/bootstrap/js/dist/util/swipe.js | 156 + .../libs/bootstrap/js/dist/util/swipe.js.map | 1 + .../js/dist/util/template-factory.js | 178 + .../js/dist/util/template-factory.js.map | 1 + public/assets/libs/bootstrap/js/index.esm.js | 19 + public/assets/libs/bootstrap/js/index.umd.js | 34 + public/assets/libs/bootstrap/js/src/alert.js | 87 + .../libs/bootstrap/js/src/base-component.js | 85 + public/assets/libs/bootstrap/js/src/button.js | 72 + .../assets/libs/bootstrap/js/src/carousel.js | 475 + .../assets/libs/bootstrap/js/src/collapse.js | 302 + .../assets/libs/bootstrap/js/src/dom/data.js | 55 + .../bootstrap/js/src/dom/event-handler.js | 320 + .../libs/bootstrap/js/src/dom/manipulator.js | 71 + .../bootstrap/js/src/dom/selector-engine.js | 83 + .../assets/libs/bootstrap/js/src/dropdown.js | 454 + public/assets/libs/bootstrap/js/src/modal.js | 377 + .../assets/libs/bootstrap/js/src/offcanvas.js | 283 + .../assets/libs/bootstrap/js/src/popover.js | 97 + .../assets/libs/bootstrap/js/src/scrollspy.js | 294 + public/assets/libs/bootstrap/js/src/tab.js | 305 + public/assets/libs/bootstrap/js/src/toast.js | 225 + .../assets/libs/bootstrap/js/src/tooltip.js | 633 + .../libs/bootstrap/js/src/util/backdrop.js | 149 + .../js/src/util/component-functions.js | 34 + .../libs/bootstrap/js/src/util/config.js | 66 + .../libs/bootstrap/js/src/util/focustrap.js | 115 + .../libs/bootstrap/js/src/util/index.js | 336 + .../libs/bootstrap/js/src/util/sanitizer.js | 118 + .../libs/bootstrap/js/src/util/scrollbar.js | 114 + .../libs/bootstrap/js/src/util/swipe.js | 146 + .../bootstrap/js/src/util/template-factory.js | 160 + .../assets/libs/bootstrap/js/tests/README.md | 73 + .../libs/bootstrap/js/tests/browsers.js | 79 + .../bootstrap/js/tests/helpers/fixture.js | 47 + .../js/tests/integration/bundle-modularity.js | 7 + .../bootstrap/js/tests/integration/bundle.js | 6 + .../bootstrap/js/tests/integration/index.html | 67 + .../integration/rollup.bundle-modularity.js | 17 + .../js/tests/integration/rollup.bundle.js | 24 + .../libs/bootstrap/js/tests/karma.conf.js | 171 + .../bootstrap/js/tests/unit/.eslintrc.json | 13 + .../bootstrap/js/tests/unit/alert.spec.js | 259 + .../js/tests/unit/base-component.spec.js | 168 + .../bootstrap/js/tests/unit/button.spec.js | 183 + .../bootstrap/js/tests/unit/carousel.spec.js | 1570 + .../bootstrap/js/tests/unit/collapse.spec.js | 1062 + .../bootstrap/js/tests/unit/dom/data.spec.js | 106 + .../js/tests/unit/dom/event-handler.spec.js | 480 + .../js/tests/unit/dom/manipulator.spec.js | 135 + .../js/tests/unit/dom/selector-engine.spec.js | 236 + .../bootstrap/js/tests/unit/dropdown.spec.js | 2430 ++ .../bootstrap/js/tests/unit/jquery.spec.js | 60 + .../bootstrap/js/tests/unit/modal.spec.js | 1298 + .../bootstrap/js/tests/unit/offcanvas.spec.js | 912 + .../bootstrap/js/tests/unit/popover.spec.js | 413 + .../bootstrap/js/tests/unit/scrollspy.spec.js | 946 + .../libs/bootstrap/js/tests/unit/tab.spec.js | 1101 + .../bootstrap/js/tests/unit/toast.spec.js | 670 + .../bootstrap/js/tests/unit/tooltip.spec.js | 1551 + .../js/tests/unit/util/backdrop.spec.js | 321 + .../unit/util/component-functions.spec.js | 108 + .../js/tests/unit/util/config.spec.js | 166 + .../js/tests/unit/util/focustrap.spec.js | 218 + .../js/tests/unit/util/index.spec.js | 814 + .../js/tests/unit/util/sanitizer.spec.js | 105 + .../js/tests/unit/util/scrollbar.spec.js | 363 + .../js/tests/unit/util/swipe.spec.js | 291 + .../tests/unit/util/template-factory.spec.js | 306 + .../bootstrap/js/tests/visual/.eslintrc.json | 19 + .../libs/bootstrap/js/tests/visual/alert.html | 48 + .../bootstrap/js/tests/visual/button.html | 49 + .../bootstrap/js/tests/visual/carousel.html | 65 + .../bootstrap/js/tests/visual/collapse.html | 76 + .../bootstrap/js/tests/visual/dropdown.html | 205 + .../libs/bootstrap/js/tests/visual/modal.html | 275 + .../bootstrap/js/tests/visual/popover.html | 41 + .../bootstrap/js/tests/visual/scrollspy.html | 91 + .../libs/bootstrap/js/tests/visual/tab.html | 223 + .../libs/bootstrap/js/tests/visual/toast.html | 70 + .../bootstrap/js/tests/visual/tooltip.html | 138 + public/assets/libs/bootstrap/package.json | 180 + .../libs/bootstrap/scss/_accordion.scss | 158 + public/assets/libs/bootstrap/scss/_alert.scss | 68 + public/assets/libs/bootstrap/scss/_badge.scss | 38 + .../libs/bootstrap/scss/_breadcrumb.scss | 40 + .../libs/bootstrap/scss/_button-group.scss | 142 + .../assets/libs/bootstrap/scss/_buttons.scss | 207 + public/assets/libs/bootstrap/scss/_card.scss | 238 + .../assets/libs/bootstrap/scss/_carousel.scss | 238 + public/assets/libs/bootstrap/scss/_close.scss | 61 + .../libs/bootstrap/scss/_containers.scss | 41 + .../assets/libs/bootstrap/scss/_dropdown.scss | 250 + public/assets/libs/bootstrap/scss/_forms.scss | 9 + .../libs/bootstrap/scss/_functions.scss | 302 + public/assets/libs/bootstrap/scss/_grid.scss | 33 + .../assets/libs/bootstrap/scss/_helpers.scss | 10 + .../assets/libs/bootstrap/scss/_images.scss | 42 + .../libs/bootstrap/scss/_list-group.scss | 204 + public/assets/libs/bootstrap/scss/_maps.scss | 121 + .../assets/libs/bootstrap/scss/_mixins.scss | 42 + public/assets/libs/bootstrap/scss/_modal.scss | 237 + public/assets/libs/bootstrap/scss/_nav.scss | 172 + .../assets/libs/bootstrap/scss/_navbar.scss | 286 + .../libs/bootstrap/scss/_offcanvas.scss | 146 + .../libs/bootstrap/scss/_pagination.scss | 109 + .../libs/bootstrap/scss/_placeholders.scss | 51 + .../assets/libs/bootstrap/scss/_popover.scss | 196 + .../assets/libs/bootstrap/scss/_progress.scss | 68 + .../assets/libs/bootstrap/scss/_reboot.scss | 610 + public/assets/libs/bootstrap/scss/_root.scss | 195 + .../assets/libs/bootstrap/scss/_spinners.scss | 85 + .../assets/libs/bootstrap/scss/_tables.scss | 164 + .../assets/libs/bootstrap/scss/_toasts.scss | 73 + .../assets/libs/bootstrap/scss/_tooltip.scss | 120 + .../libs/bootstrap/scss/_transitions.scss | 27 + public/assets/libs/bootstrap/scss/_type.scss | 106 + .../libs/bootstrap/scss/_utilities.scss | 748 + .../libs/bootstrap/scss/_variables-dark.scss | 70 + .../libs/bootstrap/scss/_variables.scss | 1703 + .../libs/bootstrap/scss/bootstrap-grid.css | 4224 ++ .../bootstrap/scss/bootstrap-grid.css.map | 1 + .../libs/bootstrap/scss/bootstrap-grid.scss | 66 + .../libs/bootstrap/scss/bootstrap-reboot.css | 584 + .../bootstrap/scss/bootstrap-reboot.css.map | 1 + .../libs/bootstrap/scss/bootstrap-reboot.scss | 10 + .../bootstrap/scss/bootstrap-utilities.css | 5084 +++ .../scss/bootstrap-utilities.css.map | 1 + .../bootstrap/scss/bootstrap-utilities.scss | 19 + .../assets/libs/bootstrap/scss/bootstrap.css | 11726 ++++++ .../libs/bootstrap/scss/bootstrap.css.map | 1 + .../assets/libs/bootstrap/scss/bootstrap.scss | 52 + .../bootstrap/scss/css/bootstrap-grid.css | 4224 ++ .../bootstrap/scss/css/bootstrap-grid.css.map | 1 + .../bootstrap/scss/css/bootstrap-reboot.css | 584 + .../scss/css/bootstrap-reboot.css.map | 1 + .../scss/css/bootstrap-utilities.css | 5084 +++ .../scss/css/bootstrap-utilities.css.map | 1 + .../libs/bootstrap/scss/css/bootstrap.css | 11726 ++++++ .../libs/bootstrap/scss/css/bootstrap.css.map | 1 + .../scss/forms/_floating-labels.scss | 90 + .../bootstrap/scss/forms/_form-check.scss | 188 + .../bootstrap/scss/forms/_form-control.scss | 201 + .../bootstrap/scss/forms/_form-range.scss | 91 + .../bootstrap/scss/forms/_form-select.scss | 81 + .../libs/bootstrap/scss/forms/_form-text.scss | 11 + .../bootstrap/scss/forms/_input-group.scss | 132 + .../libs/bootstrap/scss/forms/_labels.scss | 36 + .../bootstrap/scss/forms/_validation.scss | 12 + .../bootstrap/scss/helpers/_clearfix.scss | 3 + .../bootstrap/scss/helpers/_color-bg.scss | 10 + .../scss/helpers/_colored-links.scss | 12 + .../bootstrap/scss/helpers/_position.scss | 36 + .../libs/bootstrap/scss/helpers/_ratio.scss | 26 + .../libs/bootstrap/scss/helpers/_stacks.scss | 15 + .../scss/helpers/_stretched-link.scss | 15 + .../scss/helpers/_text-truncation.scss | 7 + .../scss/helpers/_visually-hidden.scss | 8 + .../libs/bootstrap/scss/helpers/_vr.scss | 8 + .../libs/bootstrap/scss/mixins/_alert.scss | 18 + .../libs/bootstrap/scss/mixins/_backdrop.scss | 14 + .../libs/bootstrap/scss/mixins/_banner.scss | 7 + .../bootstrap/scss/mixins/_border-radius.scss | 78 + .../bootstrap/scss/mixins/_box-shadow.scss | 18 + .../bootstrap/scss/mixins/_breakpoints.scss | 127 + .../libs/bootstrap/scss/mixins/_buttons.scss | 70 + .../libs/bootstrap/scss/mixins/_caret.scss | 69 + .../libs/bootstrap/scss/mixins/_clearfix.scss | 9 + .../bootstrap/scss/mixins/_color-mode.scss | 21 + .../bootstrap/scss/mixins/_color-scheme.scss | 7 + .../bootstrap/scss/mixins/_container.scss | 11 + .../bootstrap/scss/mixins/_deprecate.scss | 10 + .../libs/bootstrap/scss/mixins/_forms.scss | 153 + .../bootstrap/scss/mixins/_gradients.scss | 47 + .../libs/bootstrap/scss/mixins/_grid.scss | 151 + .../libs/bootstrap/scss/mixins/_image.scss | 16 + .../bootstrap/scss/mixins/_list-group.scss | 27 + .../libs/bootstrap/scss/mixins/_lists.scss | 7 + .../bootstrap/scss/mixins/_pagination.scss | 10 + .../bootstrap/scss/mixins/_reset-text.scss | 17 + .../libs/bootstrap/scss/mixins/_resize.scss | 6 + .../scss/mixins/_table-variants.scss | 24 + .../bootstrap/scss/mixins/_text-truncate.scss | 8 + .../bootstrap/scss/mixins/_transition.scss | 26 + .../bootstrap/scss/mixins/_utilities.scss | 97 + .../scss/mixins/_visually-hidden.scss | 29 + .../libs/bootstrap/scss/utilities/_api.scss | 47 + .../libs/bootstrap/scss/vendor/_rfs.scss | 354 + public/assets/libs/jquery/AUTHORS.txt | 321 + public/assets/libs/jquery/LICENSE.txt | 20 + public/assets/libs/jquery/README.md | 67 + public/assets/libs/jquery/bower.json | 14 + public/assets/libs/jquery/dist/core.js | 399 + public/assets/libs/jquery/dist/jquery.js | 10588 +++++ public/assets/libs/jquery/dist/jquery.min.js | 2 + public/assets/libs/jquery/dist/jquery.min.map | 1 + public/assets/libs/jquery/dist/jquery.slim.js | 8485 ++++ .../libs/jquery/dist/jquery.slim.min.js | 2 + .../libs/jquery/dist/jquery.slim.min.map | 1 + .../libs/jquery/external/sizzle/LICENSE.txt | 36 + .../jquery/external/sizzle/dist/sizzle.js | 2282 ++ .../jquery/external/sizzle/dist/sizzle.min.js | 3 + .../external/sizzle/dist/sizzle.min.map | 1 + public/assets/libs/jquery/package.json | 113 + public/assets/libs/jquery/src/.eslintrc.json | 9 + public/assets/libs/jquery/src/ajax.js | 858 + public/assets/libs/jquery/src/ajax/jsonp.js | 103 + public/assets/libs/jquery/src/ajax/load.js | 77 + .../assets/libs/jquery/src/ajax/parseXML.js | 30 + public/assets/libs/jquery/src/ajax/script.js | 74 + .../libs/jquery/src/ajax/var/location.js | 5 + .../assets/libs/jquery/src/ajax/var/nonce.js | 5 + .../assets/libs/jquery/src/ajax/var/rquery.js | 5 + public/assets/libs/jquery/src/ajax/xhr.js | 170 + public/assets/libs/jquery/src/attributes.js | 13 + .../assets/libs/jquery/src/attributes/attr.js | 141 + .../libs/jquery/src/attributes/classes.js | 186 + .../assets/libs/jquery/src/attributes/prop.js | 143 + .../libs/jquery/src/attributes/support.js | 33 + .../assets/libs/jquery/src/attributes/val.js | 191 + public/assets/libs/jquery/src/callbacks.js | 236 + public/assets/libs/jquery/src/core.js | 399 + public/assets/libs/jquery/src/core/DOMEval.js | 43 + public/assets/libs/jquery/src/core/access.js | 72 + .../assets/libs/jquery/src/core/camelCase.js | 23 + public/assets/libs/jquery/src/core/init.js | 129 + .../assets/libs/jquery/src/core/isAttached.js | 22 + .../assets/libs/jquery/src/core/nodeName.js | 13 + .../assets/libs/jquery/src/core/parseHTML.js | 65 + .../libs/jquery/src/core/ready-no-deferred.js | 97 + public/assets/libs/jquery/src/core/ready.js | 86 + .../libs/jquery/src/core/readyException.js | 13 + .../libs/jquery/src/core/stripAndCollapse.js | 14 + public/assets/libs/jquery/src/core/support.js | 20 + public/assets/libs/jquery/src/core/toType.js | 20 + .../libs/jquery/src/core/var/rsingleTag.js | 7 + public/assets/libs/jquery/src/css.js | 484 + .../libs/jquery/src/css/addGetHookIf.js | 26 + .../assets/libs/jquery/src/css/adjustCSS.js | 74 + public/assets/libs/jquery/src/css/curCSS.js | 65 + .../libs/jquery/src/css/finalPropName.js | 39 + .../jquery/src/css/hiddenVisibleSelectors.js | 15 + public/assets/libs/jquery/src/css/showHide.js | 105 + public/assets/libs/jquery/src/css/support.js | 104 + .../libs/jquery/src/css/var/cssExpand.js | 5 + .../libs/jquery/src/css/var/getStyles.js | 17 + .../jquery/src/css/var/isHiddenWithinTree.js | 34 + .../libs/jquery/src/css/var/rboxStyle.js | 7 + .../libs/jquery/src/css/var/rnumnonpx.js | 7 + public/assets/libs/jquery/src/css/var/swap.js | 26 + public/assets/libs/jquery/src/data.js | 180 + public/assets/libs/jquery/src/data/Data.js | 162 + .../libs/jquery/src/data/var/acceptData.js | 19 + .../libs/jquery/src/data/var/dataPriv.js | 7 + .../libs/jquery/src/data/var/dataUser.js | 7 + public/assets/libs/jquery/src/deferred.js | 399 + .../libs/jquery/src/deferred/exceptionHook.js | 21 + public/assets/libs/jquery/src/deprecated.js | 98 + public/assets/libs/jquery/src/dimensions.js | 57 + public/assets/libs/jquery/src/effects.js | 702 + .../assets/libs/jquery/src/effects/Tween.js | 125 + .../jquery/src/effects/animatedSelector.js | 15 + public/assets/libs/jquery/src/event.js | 882 + public/assets/libs/jquery/src/event/ajax.js | 22 + public/assets/libs/jquery/src/event/alias.js | 29 + .../assets/libs/jquery/src/event/focusin.js | 55 + .../assets/libs/jquery/src/event/support.js | 11 + .../assets/libs/jquery/src/event/trigger.js | 199 + public/assets/libs/jquery/src/exports/amd.js | 26 + .../assets/libs/jquery/src/exports/global.js | 34 + public/assets/libs/jquery/src/jquery.js | 40 + public/assets/libs/jquery/src/manipulation.js | 489 + .../libs/jquery/src/manipulation/_evalUrl.js | 32 + .../jquery/src/manipulation/buildFragment.js | 106 + .../libs/jquery/src/manipulation/getAll.js | 32 + .../jquery/src/manipulation/setGlobalEval.js | 22 + .../libs/jquery/src/manipulation/support.js | 35 + .../src/manipulation/var/rscriptType.js | 5 + .../jquery/src/manipulation/var/rtagName.js | 8 + .../libs/jquery/src/manipulation/wrapMap.js | 29 + public/assets/libs/jquery/src/offset.js | 233 + public/assets/libs/jquery/src/queue.js | 145 + public/assets/libs/jquery/src/queue/delay.js | 24 + .../assets/libs/jquery/src/selector-native.js | 237 + .../assets/libs/jquery/src/selector-sizzle.js | 19 + public/assets/libs/jquery/src/selector.js | 3 + public/assets/libs/jquery/src/serialize.js | 136 + public/assets/libs/jquery/src/traversing.js | 191 + .../libs/jquery/src/traversing/findFilter.js | 97 + .../libs/jquery/src/traversing/var/dir.js | 22 + .../src/traversing/var/rneedsContext.js | 8 + .../jquery/src/traversing/var/siblings.js | 17 + .../jquery/src/var/ObjectFunctionString.js | 7 + public/assets/libs/jquery/src/var/arr.js | 5 + .../assets/libs/jquery/src/var/class2type.js | 6 + public/assets/libs/jquery/src/var/concat.js | 7 + public/assets/libs/jquery/src/var/document.js | 5 + .../libs/jquery/src/var/documentElement.js | 7 + .../assets/libs/jquery/src/var/fnToString.js | 7 + public/assets/libs/jquery/src/var/getProto.js | 5 + public/assets/libs/jquery/src/var/hasOwn.js | 7 + public/assets/libs/jquery/src/var/indexOf.js | 7 + .../assets/libs/jquery/src/var/isFunction.js | 13 + public/assets/libs/jquery/src/var/isWindow.js | 8 + public/assets/libs/jquery/src/var/pnum.js | 5 + public/assets/libs/jquery/src/var/push.js | 7 + .../libs/jquery/src/var/rcheckableType.js | 5 + public/assets/libs/jquery/src/var/rcssNum.js | 9 + .../libs/jquery/src/var/rnothtmlwhite.js | 8 + public/assets/libs/jquery/src/var/slice.js | 7 + public/assets/libs/jquery/src/var/support.js | 6 + public/assets/libs/jquery/src/var/toString.js | 7 + public/assets/libs/jquery/src/wrap.js | 78 + public/assets/libs/simplebar/LICENSE | 21 + public/assets/libs/simplebar/README.md | 367 + .../libs/simplebar/dist/simplebar-core.esm.js | 897 + .../simplebar/dist/simplebar-core.esm.js.map | 1 + .../assets/libs/simplebar/dist/simplebar.css | 211 + .../assets/libs/simplebar/dist/simplebar.d.ts | 51 + .../libs/simplebar/dist/simplebar.esm.js | 1002 + .../libs/simplebar/dist/simplebar.esm.js.map | 1 + .../assets/libs/simplebar/dist/simplebar.js | 5127 +++ .../libs/simplebar/dist/simplebar.min.css | 1 + .../libs/simplebar/dist/simplebar.min.js | 10 + .../libs/simplebar/dist/simplebar.umd.js | 127 + public/assets/libs/simplebar/package.json | 58 + public/assets/libs/simplebar/src/helpers.js | 46 + public/assets/libs/simplebar/src/index.js | 106 + .../libs/simplebar/src/scrollbar-width.js | 40 + .../assets/libs/simplebar/src/simplebar.css | 211 + public/assets/libs/simplebar/src/simplebar.js | 949 + public/assets/scss/component/_card.scss | 23 + public/assets/scss/component/_reboot.scss | 39 + public/assets/scss/layouts/_header.scss | 195 + public/assets/scss/layouts/_layouts.scss | 105 + public/assets/scss/layouts/_sidebar.scss | 121 + public/assets/scss/pages/_dashboard1.scss | 37 + public/assets/scss/prepros.config | 944 + public/assets/scss/styles.scss | 35 + public/assets/scss/utilities/_background.scss | 17 + public/assets/scss/utilities/_icon-size.scss | 12 + .../scss/variables/_theme-variables.scss | 38 + public/assets/scss/variables/_variables.scss | 217 + public/favicon.ico | 0 public/index.php | 17 + public/robots.txt | 2 + resources/css/app.css | 0 resources/js/app.js | 1 + resources/js/bootstrap.js | 4 + resources/views/auth/login.blade.php | 96 + resources/views/layouts/main.blade.php | 72 + .../views/layouts/pages/algoritma.blade.php | 183 + .../views/layouts/pages/dashboard.blade.php | 78 + .../views/layouts/pages/detail.blade.php | 130 + resources/views/layouts/pages/hasil.blade.php | 73 + resources/views/layouts/pages/pdf.blade.php | 126 + .../views/layouts/pages/transaksi.blade.php | 227 + resources/views/partials/header.blade.php | 33 + resources/views/partials/sidebar.blade.php | 66 + resources/views/welcome.blade.php | 172 + routes/console.php | 8 + routes/web.php | 33 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tests/Feature/ExampleTest.php | 19 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 16 + vite.config.js | 11 + 729 files changed, 309284 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 app/Exports/ProsesExport.php create mode 100644 app/Http/Controllers/AlgoritmaController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/DashboardController.php create mode 100644 app/Http/Controllers/HasilController.php create mode 100644 app/Http/Controllers/LoginController.php create mode 100644 app/Http/Controllers/ProsesController.php create mode 100644 app/Http/Controllers/TransaksiController.php create mode 100644 app/Http/Middleware/isAuth.php create mode 100644 app/Http/Middleware/isNoAuth.php create mode 100644 app/Imports/TransaksiImport.php create mode 100644 app/Jobs/ProcessEclatJob.php create mode 100644 app/Models/Confidence.php create mode 100644 app/Models/Itemset1.php create mode 100644 app/Models/Itemset2.php create mode 100644 app/Models/Itemset3.php create mode 100644 app/Models/Proses.php create mode 100644 app/Models/Transaksi.php create mode 100644 app/Models/User.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 bootstrap/providers.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/cache.php create mode 100644 config/database.php create mode 100644 config/excel.php create mode 100644 config/filesystems.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/0001_01_01_000000_create_users_table.php create mode 100644 database/migrations/0001_01_01_000001_create_cache_table.php create mode 100644 database/migrations/0001_01_01_000002_create_jobs_table.php create mode 100644 database/migrations/2024_05_29_014227_create_transaksi_table.php create mode 100644 database/migrations/2024_05_29_014312_create_proses_table.php create mode 100644 database/migrations/2024_05_29_014451_create_itemset1_table.php create mode 100644 database/migrations/2024_05_29_014456_create_itemset2_table.php create mode 100644 database/migrations/2024_05_29_014501_create_itemset3_table.php create mode 100644 database/migrations/2024_05_29_020022_create_confidence_table.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/assets/css/icons/tabler-icons/fonts/tabler-icons.eot create mode 100644 public/assets/css/icons/tabler-icons/fonts/tabler-icons.svg create mode 100644 public/assets/css/icons/tabler-icons/fonts/tabler-icons.ttf create mode 100644 public/assets/css/icons/tabler-icons/fonts/tabler-icons.woff create mode 100644 public/assets/css/icons/tabler-icons/fonts/tabler-icons.woff2 create mode 100644 public/assets/css/icons/tabler-icons/tabler-icons.css create mode 100644 public/assets/css/styles.css create mode 100644 public/assets/css/styles.min.css create mode 100644 public/assets/images/backgrounds/rocket.png create mode 100644 public/assets/images/logos/dark-logo.svg create mode 100644 public/assets/images/logos/favicon.png create mode 100644 public/assets/images/products/s1.jpg create mode 100644 public/assets/images/products/s11.jpg create mode 100644 public/assets/images/products/s4.jpg create mode 100644 public/assets/images/products/s5.jpg create mode 100644 public/assets/images/products/s7.jpg create mode 100644 public/assets/images/profile/user-1.jpg create mode 100644 public/assets/js/app.min.js create mode 100644 public/assets/js/dashboard.js create mode 100644 public/assets/js/sidebarmenu.js create mode 100644 public/assets/libs/apexcharts/LICENSE create mode 100644 public/assets/libs/apexcharts/README.md create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.amd.js create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.common.js create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.css create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.esm.js create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.js create mode 100644 public/assets/libs/apexcharts/dist/apexcharts.min.js create mode 100644 public/assets/libs/apexcharts/dist/locales/ar.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ca.json create mode 100644 public/assets/libs/apexcharts/dist/locales/cs.json create mode 100644 public/assets/libs/apexcharts/dist/locales/de.json create mode 100644 public/assets/libs/apexcharts/dist/locales/el.json create mode 100644 public/assets/libs/apexcharts/dist/locales/en.json create mode 100644 public/assets/libs/apexcharts/dist/locales/es.json create mode 100644 public/assets/libs/apexcharts/dist/locales/et.json create mode 100644 public/assets/libs/apexcharts/dist/locales/fa.json create mode 100644 public/assets/libs/apexcharts/dist/locales/fi.json create mode 100644 public/assets/libs/apexcharts/dist/locales/fr.json create mode 100644 public/assets/libs/apexcharts/dist/locales/he.json create mode 100644 public/assets/libs/apexcharts/dist/locales/hi.json create mode 100644 public/assets/libs/apexcharts/dist/locales/hr.json create mode 100644 public/assets/libs/apexcharts/dist/locales/hu.json create mode 100644 public/assets/libs/apexcharts/dist/locales/hy.json create mode 100644 public/assets/libs/apexcharts/dist/locales/id.json create mode 100644 public/assets/libs/apexcharts/dist/locales/it.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ja.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ka.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ko.json create mode 100644 public/assets/libs/apexcharts/dist/locales/lt.json create mode 100644 public/assets/libs/apexcharts/dist/locales/lv.json create mode 100644 public/assets/libs/apexcharts/dist/locales/nb.json create mode 100644 public/assets/libs/apexcharts/dist/locales/nl.json create mode 100644 public/assets/libs/apexcharts/dist/locales/pl.json create mode 100644 public/assets/libs/apexcharts/dist/locales/pt-br.json create mode 100644 public/assets/libs/apexcharts/dist/locales/pt.json create mode 100644 public/assets/libs/apexcharts/dist/locales/rs.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ru.json create mode 100644 public/assets/libs/apexcharts/dist/locales/se.json create mode 100644 public/assets/libs/apexcharts/dist/locales/sk.json create mode 100644 public/assets/libs/apexcharts/dist/locales/sl.json create mode 100644 public/assets/libs/apexcharts/dist/locales/sq.json create mode 100644 public/assets/libs/apexcharts/dist/locales/th.json create mode 100644 public/assets/libs/apexcharts/dist/locales/tr.json create mode 100644 public/assets/libs/apexcharts/dist/locales/ua.json create mode 100644 public/assets/libs/apexcharts/dist/locales/zh-cn.json create mode 100644 public/assets/libs/apexcharts/dist/locales/zh-tw.json create mode 100644 public/assets/libs/apexcharts/package.json create mode 100644 public/assets/libs/apexcharts/src/apexcharts.js create mode 100644 public/assets/libs/apexcharts/src/assets/apexcharts.css create mode 100644 public/assets/libs/apexcharts/src/assets/ico-camera.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-home.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-menu.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-minus-square.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-minus.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-pan-hand.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-pan.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-plus-square.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-plus.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-refresh.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-reset.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-select.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-select1.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-zoom-in.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-zoom-out.svg create mode 100644 public/assets/libs/apexcharts/src/assets/ico-zoom.svg create mode 100644 public/assets/libs/apexcharts/src/charts/Bar.js create mode 100644 public/assets/libs/apexcharts/src/charts/BarStacked.js create mode 100644 public/assets/libs/apexcharts/src/charts/BoxCandleStick.js create mode 100644 public/assets/libs/apexcharts/src/charts/HeatMap.js create mode 100644 public/assets/libs/apexcharts/src/charts/Line.js create mode 100644 public/assets/libs/apexcharts/src/charts/Pie.js create mode 100644 public/assets/libs/apexcharts/src/charts/Radar.js create mode 100644 public/assets/libs/apexcharts/src/charts/Radial.js create mode 100644 public/assets/libs/apexcharts/src/charts/RangeBar.js create mode 100644 public/assets/libs/apexcharts/src/charts/Scatter.js create mode 100644 public/assets/libs/apexcharts/src/charts/Treemap.js create mode 100644 public/assets/libs/apexcharts/src/charts/common/bar/DataLabels.js create mode 100644 public/assets/libs/apexcharts/src/charts/common/bar/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/charts/common/circle/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/charts/common/line/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/charts/common/treemap/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/libs/Treemap-squared.js create mode 100644 public/assets/libs/apexcharts/src/locales/ar.json create mode 100644 public/assets/libs/apexcharts/src/locales/ca.json create mode 100644 public/assets/libs/apexcharts/src/locales/cs.json create mode 100644 public/assets/libs/apexcharts/src/locales/de.json create mode 100644 public/assets/libs/apexcharts/src/locales/el.json create mode 100644 public/assets/libs/apexcharts/src/locales/en.json create mode 100644 public/assets/libs/apexcharts/src/locales/es.json create mode 100644 public/assets/libs/apexcharts/src/locales/et.json create mode 100644 public/assets/libs/apexcharts/src/locales/fa.json create mode 100644 public/assets/libs/apexcharts/src/locales/fi.json create mode 100644 public/assets/libs/apexcharts/src/locales/fr.json create mode 100644 public/assets/libs/apexcharts/src/locales/he.json create mode 100644 public/assets/libs/apexcharts/src/locales/hi.json create mode 100644 public/assets/libs/apexcharts/src/locales/hr.json create mode 100644 public/assets/libs/apexcharts/src/locales/hu.json create mode 100644 public/assets/libs/apexcharts/src/locales/hy.json create mode 100644 public/assets/libs/apexcharts/src/locales/id.json create mode 100644 public/assets/libs/apexcharts/src/locales/it.json create mode 100644 public/assets/libs/apexcharts/src/locales/ja.json create mode 100644 public/assets/libs/apexcharts/src/locales/ka.json create mode 100644 public/assets/libs/apexcharts/src/locales/ko.json create mode 100644 public/assets/libs/apexcharts/src/locales/lt.json create mode 100644 public/assets/libs/apexcharts/src/locales/lv.json create mode 100644 public/assets/libs/apexcharts/src/locales/nb.json create mode 100644 public/assets/libs/apexcharts/src/locales/nl.json create mode 100644 public/assets/libs/apexcharts/src/locales/pl.json create mode 100644 public/assets/libs/apexcharts/src/locales/pt-br.json create mode 100644 public/assets/libs/apexcharts/src/locales/pt.json create mode 100644 public/assets/libs/apexcharts/src/locales/rs.json create mode 100644 public/assets/libs/apexcharts/src/locales/ru.json create mode 100644 public/assets/libs/apexcharts/src/locales/se.json create mode 100644 public/assets/libs/apexcharts/src/locales/sk.json create mode 100644 public/assets/libs/apexcharts/src/locales/sl.json create mode 100644 public/assets/libs/apexcharts/src/locales/sq.json create mode 100644 public/assets/libs/apexcharts/src/locales/th.json create mode 100644 public/assets/libs/apexcharts/src/locales/tr.json create mode 100644 public/assets/libs/apexcharts/src/locales/ua.json create mode 100644 public/assets/libs/apexcharts/src/locales/zh-cn.json create mode 100644 public/assets/libs/apexcharts/src/locales/zh-tw.json create mode 100644 public/assets/libs/apexcharts/src/modules/Animations.js create mode 100644 public/assets/libs/apexcharts/src/modules/Base.js create mode 100644 public/assets/libs/apexcharts/src/modules/Core.js create mode 100644 public/assets/libs/apexcharts/src/modules/CoreUtils.js create mode 100644 public/assets/libs/apexcharts/src/modules/Crosshairs.js create mode 100644 public/assets/libs/apexcharts/src/modules/Data.js create mode 100644 public/assets/libs/apexcharts/src/modules/DataLabels.js create mode 100644 public/assets/libs/apexcharts/src/modules/Events.js create mode 100644 public/assets/libs/apexcharts/src/modules/Exports.js create mode 100644 public/assets/libs/apexcharts/src/modules/Fill.js create mode 100644 public/assets/libs/apexcharts/src/modules/Filters.js create mode 100644 public/assets/libs/apexcharts/src/modules/Formatters.js create mode 100644 public/assets/libs/apexcharts/src/modules/Graphics.js create mode 100644 public/assets/libs/apexcharts/src/modules/Markers.js create mode 100644 public/assets/libs/apexcharts/src/modules/Range.js create mode 100644 public/assets/libs/apexcharts/src/modules/Responsive.js create mode 100644 public/assets/libs/apexcharts/src/modules/Scales.js create mode 100644 public/assets/libs/apexcharts/src/modules/Series.js create mode 100644 public/assets/libs/apexcharts/src/modules/Theme.js create mode 100644 public/assets/libs/apexcharts/src/modules/TimeScale.js create mode 100644 public/assets/libs/apexcharts/src/modules/TitleSubtitle.js create mode 100644 public/assets/libs/apexcharts/src/modules/Toolbar.js create mode 100644 public/assets/libs/apexcharts/src/modules/ZoomPanSelection.js create mode 100644 public/assets/libs/apexcharts/src/modules/annotations/Annotations.js create mode 100644 public/assets/libs/apexcharts/src/modules/annotations/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/modules/annotations/PointsAnnotations.js create mode 100644 public/assets/libs/apexcharts/src/modules/annotations/XAxisAnnotations.js create mode 100644 public/assets/libs/apexcharts/src/modules/annotations/YAxisAnnotations.js create mode 100644 public/assets/libs/apexcharts/src/modules/axes/Axes.js create mode 100644 public/assets/libs/apexcharts/src/modules/axes/AxesUtils.js create mode 100644 public/assets/libs/apexcharts/src/modules/axes/Grid.js create mode 100644 public/assets/libs/apexcharts/src/modules/axes/XAxis.js create mode 100644 public/assets/libs/apexcharts/src/modules/axes/YAxis.js create mode 100644 public/assets/libs/apexcharts/src/modules/dimensions/Dimensions.js create mode 100644 public/assets/libs/apexcharts/src/modules/dimensions/Grid.js create mode 100644 public/assets/libs/apexcharts/src/modules/dimensions/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/modules/dimensions/XAxis.js create mode 100644 public/assets/libs/apexcharts/src/modules/dimensions/YAxis.js create mode 100644 public/assets/libs/apexcharts/src/modules/helpers/Destroy.js create mode 100644 public/assets/libs/apexcharts/src/modules/helpers/InitCtxVariables.js create mode 100644 public/assets/libs/apexcharts/src/modules/helpers/Localization.js create mode 100644 public/assets/libs/apexcharts/src/modules/helpers/UpdateHelpers.js create mode 100644 public/assets/libs/apexcharts/src/modules/legend/Helpers.js create mode 100644 public/assets/libs/apexcharts/src/modules/legend/Legend.js create mode 100644 public/assets/libs/apexcharts/src/modules/settings/Config.js create mode 100644 public/assets/libs/apexcharts/src/modules/settings/Defaults.js create mode 100644 public/assets/libs/apexcharts/src/modules/settings/Globals.js create mode 100644 public/assets/libs/apexcharts/src/modules/settings/Options.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/AxesTooltip.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Intersect.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Labels.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Marker.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Position.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/README.md create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Tooltip.js create mode 100644 public/assets/libs/apexcharts/src/modules/tooltip/Utils.js create mode 100644 public/assets/libs/apexcharts/src/svgjs/svg.js create mode 100644 public/assets/libs/apexcharts/src/utils/DateTime.js create mode 100644 public/assets/libs/apexcharts/src/utils/Resize.js create mode 100644 public/assets/libs/apexcharts/src/utils/Utils.js create mode 100644 public/assets/libs/apexcharts/types/apexcharts.d.ts create mode 100644 public/assets/libs/bootstrap/LICENSE create mode 100644 public/assets/libs/bootstrap/README.md create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.rtl.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.rtl.css.map create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.rtl.min.css create mode 100644 public/assets/libs/bootstrap/dist/css/bootstrap.rtl.min.css.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.bundle.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.bundle.js.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.bundle.min.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.bundle.min.js.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.esm.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.esm.js.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.esm.min.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.esm.min.js.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.js.map create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.min.js create mode 100644 public/assets/libs/bootstrap/dist/js/bootstrap.min.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/alert.js create mode 100644 public/assets/libs/bootstrap/js/dist/alert.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/base-component.js create mode 100644 public/assets/libs/bootstrap/js/dist/base-component.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/button.js create mode 100644 public/assets/libs/bootstrap/js/dist/button.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/carousel.js create mode 100644 public/assets/libs/bootstrap/js/dist/carousel.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/collapse.js create mode 100644 public/assets/libs/bootstrap/js/dist/collapse.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/dom/data.js create mode 100644 public/assets/libs/bootstrap/js/dist/dom/data.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/dom/event-handler.js create mode 100644 public/assets/libs/bootstrap/js/dist/dom/event-handler.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/dom/manipulator.js create mode 100644 public/assets/libs/bootstrap/js/dist/dom/manipulator.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/dom/selector-engine.js create mode 100644 public/assets/libs/bootstrap/js/dist/dom/selector-engine.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/dropdown.js create mode 100644 public/assets/libs/bootstrap/js/dist/dropdown.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/modal.js create mode 100644 public/assets/libs/bootstrap/js/dist/modal.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/offcanvas.js create mode 100644 public/assets/libs/bootstrap/js/dist/offcanvas.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/popover.js create mode 100644 public/assets/libs/bootstrap/js/dist/popover.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/scrollspy.js create mode 100644 public/assets/libs/bootstrap/js/dist/scrollspy.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/tab.js create mode 100644 public/assets/libs/bootstrap/js/dist/tab.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/toast.js create mode 100644 public/assets/libs/bootstrap/js/dist/toast.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/tooltip.js create mode 100644 public/assets/libs/bootstrap/js/dist/tooltip.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/backdrop.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/backdrop.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/component-functions.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/component-functions.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/config.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/config.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/focustrap.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/focustrap.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/index.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/index.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/sanitizer.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/sanitizer.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/scrollbar.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/scrollbar.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/swipe.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/swipe.js.map create mode 100644 public/assets/libs/bootstrap/js/dist/util/template-factory.js create mode 100644 public/assets/libs/bootstrap/js/dist/util/template-factory.js.map create mode 100644 public/assets/libs/bootstrap/js/index.esm.js create mode 100644 public/assets/libs/bootstrap/js/index.umd.js create mode 100644 public/assets/libs/bootstrap/js/src/alert.js create mode 100644 public/assets/libs/bootstrap/js/src/base-component.js create mode 100644 public/assets/libs/bootstrap/js/src/button.js create mode 100644 public/assets/libs/bootstrap/js/src/carousel.js create mode 100644 public/assets/libs/bootstrap/js/src/collapse.js create mode 100644 public/assets/libs/bootstrap/js/src/dom/data.js create mode 100644 public/assets/libs/bootstrap/js/src/dom/event-handler.js create mode 100644 public/assets/libs/bootstrap/js/src/dom/manipulator.js create mode 100644 public/assets/libs/bootstrap/js/src/dom/selector-engine.js create mode 100644 public/assets/libs/bootstrap/js/src/dropdown.js create mode 100644 public/assets/libs/bootstrap/js/src/modal.js create mode 100644 public/assets/libs/bootstrap/js/src/offcanvas.js create mode 100644 public/assets/libs/bootstrap/js/src/popover.js create mode 100644 public/assets/libs/bootstrap/js/src/scrollspy.js create mode 100644 public/assets/libs/bootstrap/js/src/tab.js create mode 100644 public/assets/libs/bootstrap/js/src/toast.js create mode 100644 public/assets/libs/bootstrap/js/src/tooltip.js create mode 100644 public/assets/libs/bootstrap/js/src/util/backdrop.js create mode 100644 public/assets/libs/bootstrap/js/src/util/component-functions.js create mode 100644 public/assets/libs/bootstrap/js/src/util/config.js create mode 100644 public/assets/libs/bootstrap/js/src/util/focustrap.js create mode 100644 public/assets/libs/bootstrap/js/src/util/index.js create mode 100644 public/assets/libs/bootstrap/js/src/util/sanitizer.js create mode 100644 public/assets/libs/bootstrap/js/src/util/scrollbar.js create mode 100644 public/assets/libs/bootstrap/js/src/util/swipe.js create mode 100644 public/assets/libs/bootstrap/js/src/util/template-factory.js create mode 100644 public/assets/libs/bootstrap/js/tests/README.md create mode 100644 public/assets/libs/bootstrap/js/tests/browsers.js create mode 100644 public/assets/libs/bootstrap/js/tests/helpers/fixture.js create mode 100644 public/assets/libs/bootstrap/js/tests/integration/bundle-modularity.js create mode 100644 public/assets/libs/bootstrap/js/tests/integration/bundle.js create mode 100644 public/assets/libs/bootstrap/js/tests/integration/index.html create mode 100644 public/assets/libs/bootstrap/js/tests/integration/rollup.bundle-modularity.js create mode 100644 public/assets/libs/bootstrap/js/tests/integration/rollup.bundle.js create mode 100644 public/assets/libs/bootstrap/js/tests/karma.conf.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/.eslintrc.json create mode 100644 public/assets/libs/bootstrap/js/tests/unit/alert.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/base-component.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/button.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/carousel.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/collapse.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/dom/data.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/dom/event-handler.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/dom/manipulator.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/dom/selector-engine.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/dropdown.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/jquery.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/modal.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/offcanvas.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/popover.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/scrollspy.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/tab.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/toast.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/tooltip.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/backdrop.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/component-functions.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/config.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/focustrap.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/index.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/sanitizer.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/scrollbar.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/swipe.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/unit/util/template-factory.spec.js create mode 100644 public/assets/libs/bootstrap/js/tests/visual/.eslintrc.json create mode 100644 public/assets/libs/bootstrap/js/tests/visual/alert.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/button.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/carousel.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/collapse.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/dropdown.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/modal.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/popover.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/scrollspy.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/tab.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/toast.html create mode 100644 public/assets/libs/bootstrap/js/tests/visual/tooltip.html create mode 100644 public/assets/libs/bootstrap/package.json create mode 100644 public/assets/libs/bootstrap/scss/_accordion.scss create mode 100644 public/assets/libs/bootstrap/scss/_alert.scss create mode 100644 public/assets/libs/bootstrap/scss/_badge.scss create mode 100644 public/assets/libs/bootstrap/scss/_breadcrumb.scss create mode 100644 public/assets/libs/bootstrap/scss/_button-group.scss create mode 100644 public/assets/libs/bootstrap/scss/_buttons.scss create mode 100644 public/assets/libs/bootstrap/scss/_card.scss create mode 100644 public/assets/libs/bootstrap/scss/_carousel.scss create mode 100644 public/assets/libs/bootstrap/scss/_close.scss create mode 100644 public/assets/libs/bootstrap/scss/_containers.scss create mode 100644 public/assets/libs/bootstrap/scss/_dropdown.scss create mode 100644 public/assets/libs/bootstrap/scss/_forms.scss create mode 100644 public/assets/libs/bootstrap/scss/_functions.scss create mode 100644 public/assets/libs/bootstrap/scss/_grid.scss create mode 100644 public/assets/libs/bootstrap/scss/_helpers.scss create mode 100644 public/assets/libs/bootstrap/scss/_images.scss create mode 100644 public/assets/libs/bootstrap/scss/_list-group.scss create mode 100644 public/assets/libs/bootstrap/scss/_maps.scss create mode 100644 public/assets/libs/bootstrap/scss/_mixins.scss create mode 100644 public/assets/libs/bootstrap/scss/_modal.scss create mode 100644 public/assets/libs/bootstrap/scss/_nav.scss create mode 100644 public/assets/libs/bootstrap/scss/_navbar.scss create mode 100644 public/assets/libs/bootstrap/scss/_offcanvas.scss create mode 100644 public/assets/libs/bootstrap/scss/_pagination.scss create mode 100644 public/assets/libs/bootstrap/scss/_placeholders.scss create mode 100644 public/assets/libs/bootstrap/scss/_popover.scss create mode 100644 public/assets/libs/bootstrap/scss/_progress.scss create mode 100644 public/assets/libs/bootstrap/scss/_reboot.scss create mode 100644 public/assets/libs/bootstrap/scss/_root.scss create mode 100644 public/assets/libs/bootstrap/scss/_spinners.scss create mode 100644 public/assets/libs/bootstrap/scss/_tables.scss create mode 100644 public/assets/libs/bootstrap/scss/_toasts.scss create mode 100644 public/assets/libs/bootstrap/scss/_tooltip.scss create mode 100644 public/assets/libs/bootstrap/scss/_transitions.scss create mode 100644 public/assets/libs/bootstrap/scss/_type.scss create mode 100644 public/assets/libs/bootstrap/scss/_utilities.scss create mode 100644 public/assets/libs/bootstrap/scss/_variables-dark.scss create mode 100644 public/assets/libs/bootstrap/scss/_variables.scss create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-grid.css create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-grid.css.map create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-grid.scss create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-reboot.css create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-reboot.css.map create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-reboot.scss create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-utilities.css create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-utilities.css.map create mode 100644 public/assets/libs/bootstrap/scss/bootstrap-utilities.scss create mode 100644 public/assets/libs/bootstrap/scss/bootstrap.css create mode 100644 public/assets/libs/bootstrap/scss/bootstrap.css.map create mode 100644 public/assets/libs/bootstrap/scss/bootstrap.scss create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-grid.css create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-grid.css.map create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-reboot.css create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-reboot.css.map create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-utilities.css create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap-utilities.css.map create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap.css create mode 100644 public/assets/libs/bootstrap/scss/css/bootstrap.css.map create mode 100644 public/assets/libs/bootstrap/scss/forms/_floating-labels.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_form-check.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_form-control.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_form-range.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_form-select.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_form-text.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_input-group.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_labels.scss create mode 100644 public/assets/libs/bootstrap/scss/forms/_validation.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_clearfix.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_color-bg.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_colored-links.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_position.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_ratio.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_stacks.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_stretched-link.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_text-truncation.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_visually-hidden.scss create mode 100644 public/assets/libs/bootstrap/scss/helpers/_vr.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_alert.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_backdrop.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_banner.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_border-radius.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_box-shadow.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_breakpoints.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_buttons.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_caret.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_clearfix.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_color-mode.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_color-scheme.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_container.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_deprecate.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_forms.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_gradients.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_grid.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_image.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_list-group.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_lists.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_pagination.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_reset-text.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_resize.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_table-variants.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_text-truncate.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_transition.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_utilities.scss create mode 100644 public/assets/libs/bootstrap/scss/mixins/_visually-hidden.scss create mode 100644 public/assets/libs/bootstrap/scss/utilities/_api.scss create mode 100644 public/assets/libs/bootstrap/scss/vendor/_rfs.scss create mode 100644 public/assets/libs/jquery/AUTHORS.txt create mode 100644 public/assets/libs/jquery/LICENSE.txt create mode 100644 public/assets/libs/jquery/README.md create mode 100644 public/assets/libs/jquery/bower.json create mode 100644 public/assets/libs/jquery/dist/core.js create mode 100644 public/assets/libs/jquery/dist/jquery.js create mode 100644 public/assets/libs/jquery/dist/jquery.min.js create mode 100644 public/assets/libs/jquery/dist/jquery.min.map create mode 100644 public/assets/libs/jquery/dist/jquery.slim.js create mode 100644 public/assets/libs/jquery/dist/jquery.slim.min.js create mode 100644 public/assets/libs/jquery/dist/jquery.slim.min.map create mode 100644 public/assets/libs/jquery/external/sizzle/LICENSE.txt create mode 100644 public/assets/libs/jquery/external/sizzle/dist/sizzle.js create mode 100644 public/assets/libs/jquery/external/sizzle/dist/sizzle.min.js create mode 100644 public/assets/libs/jquery/external/sizzle/dist/sizzle.min.map create mode 100644 public/assets/libs/jquery/package.json create mode 100644 public/assets/libs/jquery/src/.eslintrc.json create mode 100644 public/assets/libs/jquery/src/ajax.js create mode 100644 public/assets/libs/jquery/src/ajax/jsonp.js create mode 100644 public/assets/libs/jquery/src/ajax/load.js create mode 100644 public/assets/libs/jquery/src/ajax/parseXML.js create mode 100644 public/assets/libs/jquery/src/ajax/script.js create mode 100644 public/assets/libs/jquery/src/ajax/var/location.js create mode 100644 public/assets/libs/jquery/src/ajax/var/nonce.js create mode 100644 public/assets/libs/jquery/src/ajax/var/rquery.js create mode 100644 public/assets/libs/jquery/src/ajax/xhr.js create mode 100644 public/assets/libs/jquery/src/attributes.js create mode 100644 public/assets/libs/jquery/src/attributes/attr.js create mode 100644 public/assets/libs/jquery/src/attributes/classes.js create mode 100644 public/assets/libs/jquery/src/attributes/prop.js create mode 100644 public/assets/libs/jquery/src/attributes/support.js create mode 100644 public/assets/libs/jquery/src/attributes/val.js create mode 100644 public/assets/libs/jquery/src/callbacks.js create mode 100644 public/assets/libs/jquery/src/core.js create mode 100644 public/assets/libs/jquery/src/core/DOMEval.js create mode 100644 public/assets/libs/jquery/src/core/access.js create mode 100644 public/assets/libs/jquery/src/core/camelCase.js create mode 100644 public/assets/libs/jquery/src/core/init.js create mode 100644 public/assets/libs/jquery/src/core/isAttached.js create mode 100644 public/assets/libs/jquery/src/core/nodeName.js create mode 100644 public/assets/libs/jquery/src/core/parseHTML.js create mode 100644 public/assets/libs/jquery/src/core/ready-no-deferred.js create mode 100644 public/assets/libs/jquery/src/core/ready.js create mode 100644 public/assets/libs/jquery/src/core/readyException.js create mode 100644 public/assets/libs/jquery/src/core/stripAndCollapse.js create mode 100644 public/assets/libs/jquery/src/core/support.js create mode 100644 public/assets/libs/jquery/src/core/toType.js create mode 100644 public/assets/libs/jquery/src/core/var/rsingleTag.js create mode 100644 public/assets/libs/jquery/src/css.js create mode 100644 public/assets/libs/jquery/src/css/addGetHookIf.js create mode 100644 public/assets/libs/jquery/src/css/adjustCSS.js create mode 100644 public/assets/libs/jquery/src/css/curCSS.js create mode 100644 public/assets/libs/jquery/src/css/finalPropName.js create mode 100644 public/assets/libs/jquery/src/css/hiddenVisibleSelectors.js create mode 100644 public/assets/libs/jquery/src/css/showHide.js create mode 100644 public/assets/libs/jquery/src/css/support.js create mode 100644 public/assets/libs/jquery/src/css/var/cssExpand.js create mode 100644 public/assets/libs/jquery/src/css/var/getStyles.js create mode 100644 public/assets/libs/jquery/src/css/var/isHiddenWithinTree.js create mode 100644 public/assets/libs/jquery/src/css/var/rboxStyle.js create mode 100644 public/assets/libs/jquery/src/css/var/rnumnonpx.js create mode 100644 public/assets/libs/jquery/src/css/var/swap.js create mode 100644 public/assets/libs/jquery/src/data.js create mode 100644 public/assets/libs/jquery/src/data/Data.js create mode 100644 public/assets/libs/jquery/src/data/var/acceptData.js create mode 100644 public/assets/libs/jquery/src/data/var/dataPriv.js create mode 100644 public/assets/libs/jquery/src/data/var/dataUser.js create mode 100644 public/assets/libs/jquery/src/deferred.js create mode 100644 public/assets/libs/jquery/src/deferred/exceptionHook.js create mode 100644 public/assets/libs/jquery/src/deprecated.js create mode 100644 public/assets/libs/jquery/src/dimensions.js create mode 100644 public/assets/libs/jquery/src/effects.js create mode 100644 public/assets/libs/jquery/src/effects/Tween.js create mode 100644 public/assets/libs/jquery/src/effects/animatedSelector.js create mode 100644 public/assets/libs/jquery/src/event.js create mode 100644 public/assets/libs/jquery/src/event/ajax.js create mode 100644 public/assets/libs/jquery/src/event/alias.js create mode 100644 public/assets/libs/jquery/src/event/focusin.js create mode 100644 public/assets/libs/jquery/src/event/support.js create mode 100644 public/assets/libs/jquery/src/event/trigger.js create mode 100644 public/assets/libs/jquery/src/exports/amd.js create mode 100644 public/assets/libs/jquery/src/exports/global.js create mode 100644 public/assets/libs/jquery/src/jquery.js create mode 100644 public/assets/libs/jquery/src/manipulation.js create mode 100644 public/assets/libs/jquery/src/manipulation/_evalUrl.js create mode 100644 public/assets/libs/jquery/src/manipulation/buildFragment.js create mode 100644 public/assets/libs/jquery/src/manipulation/getAll.js create mode 100644 public/assets/libs/jquery/src/manipulation/setGlobalEval.js create mode 100644 public/assets/libs/jquery/src/manipulation/support.js create mode 100644 public/assets/libs/jquery/src/manipulation/var/rscriptType.js create mode 100644 public/assets/libs/jquery/src/manipulation/var/rtagName.js create mode 100644 public/assets/libs/jquery/src/manipulation/wrapMap.js create mode 100644 public/assets/libs/jquery/src/offset.js create mode 100644 public/assets/libs/jquery/src/queue.js create mode 100644 public/assets/libs/jquery/src/queue/delay.js create mode 100644 public/assets/libs/jquery/src/selector-native.js create mode 100644 public/assets/libs/jquery/src/selector-sizzle.js create mode 100644 public/assets/libs/jquery/src/selector.js create mode 100644 public/assets/libs/jquery/src/serialize.js create mode 100644 public/assets/libs/jquery/src/traversing.js create mode 100644 public/assets/libs/jquery/src/traversing/findFilter.js create mode 100644 public/assets/libs/jquery/src/traversing/var/dir.js create mode 100644 public/assets/libs/jquery/src/traversing/var/rneedsContext.js create mode 100644 public/assets/libs/jquery/src/traversing/var/siblings.js create mode 100644 public/assets/libs/jquery/src/var/ObjectFunctionString.js create mode 100644 public/assets/libs/jquery/src/var/arr.js create mode 100644 public/assets/libs/jquery/src/var/class2type.js create mode 100644 public/assets/libs/jquery/src/var/concat.js create mode 100644 public/assets/libs/jquery/src/var/document.js create mode 100644 public/assets/libs/jquery/src/var/documentElement.js create mode 100644 public/assets/libs/jquery/src/var/fnToString.js create mode 100644 public/assets/libs/jquery/src/var/getProto.js create mode 100644 public/assets/libs/jquery/src/var/hasOwn.js create mode 100644 public/assets/libs/jquery/src/var/indexOf.js create mode 100644 public/assets/libs/jquery/src/var/isFunction.js create mode 100644 public/assets/libs/jquery/src/var/isWindow.js create mode 100644 public/assets/libs/jquery/src/var/pnum.js create mode 100644 public/assets/libs/jquery/src/var/push.js create mode 100644 public/assets/libs/jquery/src/var/rcheckableType.js create mode 100644 public/assets/libs/jquery/src/var/rcssNum.js create mode 100644 public/assets/libs/jquery/src/var/rnothtmlwhite.js create mode 100644 public/assets/libs/jquery/src/var/slice.js create mode 100644 public/assets/libs/jquery/src/var/support.js create mode 100644 public/assets/libs/jquery/src/var/toString.js create mode 100644 public/assets/libs/jquery/src/wrap.js create mode 100644 public/assets/libs/simplebar/LICENSE create mode 100644 public/assets/libs/simplebar/README.md create mode 100644 public/assets/libs/simplebar/dist/simplebar-core.esm.js create mode 100644 public/assets/libs/simplebar/dist/simplebar-core.esm.js.map create mode 100644 public/assets/libs/simplebar/dist/simplebar.css create mode 100644 public/assets/libs/simplebar/dist/simplebar.d.ts create mode 100644 public/assets/libs/simplebar/dist/simplebar.esm.js create mode 100644 public/assets/libs/simplebar/dist/simplebar.esm.js.map create mode 100644 public/assets/libs/simplebar/dist/simplebar.js create mode 100644 public/assets/libs/simplebar/dist/simplebar.min.css create mode 100644 public/assets/libs/simplebar/dist/simplebar.min.js create mode 100644 public/assets/libs/simplebar/dist/simplebar.umd.js create mode 100644 public/assets/libs/simplebar/package.json create mode 100644 public/assets/libs/simplebar/src/helpers.js create mode 100644 public/assets/libs/simplebar/src/index.js create mode 100644 public/assets/libs/simplebar/src/scrollbar-width.js create mode 100644 public/assets/libs/simplebar/src/simplebar.css create mode 100644 public/assets/libs/simplebar/src/simplebar.js create mode 100644 public/assets/scss/component/_card.scss create mode 100644 public/assets/scss/component/_reboot.scss create mode 100644 public/assets/scss/layouts/_header.scss create mode 100644 public/assets/scss/layouts/_layouts.scss create mode 100644 public/assets/scss/layouts/_sidebar.scss create mode 100644 public/assets/scss/pages/_dashboard1.scss create mode 100644 public/assets/scss/prepros.config create mode 100644 public/assets/scss/styles.scss create mode 100644 public/assets/scss/utilities/_background.scss create mode 100644 public/assets/scss/utilities/_icon-size.scss create mode 100644 public/assets/scss/variables/_theme-variables.scss create mode 100644 public/assets/scss/variables/_variables.scss create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/robots.txt create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/layouts/main.blade.php create mode 100644 resources/views/layouts/pages/algoritma.blade.php create mode 100644 resources/views/layouts/pages/dashboard.blade.php create mode 100644 resources/views/layouts/pages/detail.blade.php create mode 100644 resources/views/layouts/pages/hasil.blade.php create mode 100644 resources/views/layouts/pages/pdf.blade.php create mode 100644 resources/views/layouts/pages/transaksi.blade.php create mode 100644 resources/views/partials/header.blade.php create mode 100644 resources/views/partials/sidebar.blade.php create mode 100644 resources/views/welcome.blade.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 vite.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..8f0de65 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..7b49625 --- /dev/null +++ b/.env.example @@ -0,0 +1,64 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_TIMEZONE=UTC +APP_URL=http://localhost + +APP_LOCALE=en +APP_FALLBACK_LOCALE=en +APP_FAKER_LOCALE=en_US + +APP_MAINTENANCE_DRIVER=file +APP_MAINTENANCE_STORE=database + +BCRYPT_ROUNDS=12 + +LOG_CHANNEL=stack +LOG_STACK=single +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=sqlite +# DB_HOST=127.0.0.1 +# DB_PORT=3306 +# DB_DATABASE=laravel +# DB_USERNAME=root +# DB_PASSWORD= + +SESSION_DRIVER=database +SESSION_LIFETIME=120 +SESSION_ENCRYPT=false +SESSION_PATH=/ +SESSION_DOMAIN=null + +BROADCAST_CONNECTION=log +FILESYSTEM_DISK=local +QUEUE_CONNECTION=database + +CACHE_STORE=database +CACHE_PREFIX= + +MEMCACHED_HOST=127.0.0.1 + +REDIS_CLIENT=phpredis +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=log +MAIL_HOST=127.0.0.1 +MAIL_PORT=2525 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +VITE_APP_NAME="${APP_NAME}" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..fcb21d3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..46340a6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpactor.json +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/README.md b/README.md new file mode 100644 index 0000000..1a4c26b --- /dev/null +++ b/README.md @@ -0,0 +1,66 @@ +

Laravel Logo

+ +

+Build Status +Total Downloads +Latest Stable Version +License +

+ +## About Laravel + +Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as: + +- [Simple, fast routing engine](https://laravel.com/docs/routing). +- [Powerful dependency injection container](https://laravel.com/docs/container). +- Multiple back-ends for [session](https://laravel.com/docs/session) and [cache](https://laravel.com/docs/cache) storage. +- Expressive, intuitive [database ORM](https://laravel.com/docs/eloquent). +- Database agnostic [schema migrations](https://laravel.com/docs/migrations). +- [Robust background job processing](https://laravel.com/docs/queues). +- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). + +Laravel is accessible, powerful, and provides tools required for large, robust applications. + +## Learning Laravel + +Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework. + +You may also try the [Laravel Bootcamp](https://bootcamp.laravel.com), where you will be guided through building a modern Laravel application from scratch. + +If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains thousands of video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost your skills by digging into our comprehensive video library. + +## Laravel Sponsors + +We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the [Laravel Partners program](https://partners.laravel.com). + +### Premium Partners + +- **[Vehikl](https://vehikl.com/)** +- **[Tighten Co.](https://tighten.co)** +- **[WebReinvent](https://webreinvent.com/)** +- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** +- **[64 Robots](https://64robots.com)** +- **[Curotec](https://www.curotec.com/services/technologies/laravel/)** +- **[Cyber-Duck](https://cyber-duck.co.uk)** +- **[DevSquad](https://devsquad.com/hire-laravel-developers)** +- **[Jump24](https://jump24.co.uk)** +- **[Redberry](https://redberry.international/laravel/)** +- **[Active Logic](https://activelogic.com)** +- **[byte5](https://byte5.de)** +- **[OP.GG](https://op.gg)** + +## Contributing + +Thank you for considering contributing to the Laravel framework! The contribution guide can be found in the [Laravel documentation](https://laravel.com/docs/contributions). + +## Code of Conduct + +In order to ensure that the Laravel community is welcoming to all, please review and abide by the [Code of Conduct](https://laravel.com/docs/contributions#code-of-conduct). + +## Security Vulnerabilities + +If you discover a security vulnerability within Laravel, please send an e-mail to Taylor Otwell via [taylor@laravel.com](mailto:taylor@laravel.com). All security vulnerabilities will be promptly addressed. + +## License + +The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). diff --git a/app/Exports/ProsesExport.php b/app/Exports/ProsesExport.php new file mode 100644 index 0000000..1d20372 --- /dev/null +++ b/app/Exports/ProsesExport.php @@ -0,0 +1,59 @@ +id = $id; + } + + /** + * @return \Illuminate\Support\Collection + */ + public function collection() + { + $proses = Proses::findOrFail($this->id); + $itemset2 = Confidence::where('itemset', '2-item')->where('proses_id', $this->id)->get(); + $itemset3 = Confidence::where('itemset', '3-item')->where('proses_id', $this->id)->get(); + $rules = Confidence::where('proses_id', $this->id)->where('keterangan', 'Lolos')->get(); + + // Merge all data into a single collection + $data = $itemset2->merge($itemset3)->merge($rules); + + // Transform data as per the required columns + $exportData = $data->map(function ($item, $key) { + return [ + 'No' => $key + 1, + 'Jenis Obat' => $item->items, + 'Keterangan' => $item->keterangan, + 'Confidence' => $item->confidence, + 'Lift Ratio' => $item->lift_ratio, + 'Korelasi' => $item->korelasi, + ]; + }); + + return $exportData; + } + + public function headings(): array + { + return [ + 'No', + 'Jenis Obat', + 'Keterangan', + 'Confidence', + 'Lift Ratio', + 'Korelasi', + ]; + } +} diff --git a/app/Http/Controllers/AlgoritmaController.php b/app/Http/Controllers/AlgoritmaController.php new file mode 100644 index 0000000..e511138 --- /dev/null +++ b/app/Http/Controllers/AlgoritmaController.php @@ -0,0 +1,506 @@ +input('tanggal_dari'); + $tanggal_sampai = $request->input('tanggal_sampai'); + $min_support = $request->input('min_support'); + $min_confidance = $request->input('min_confidance'); + + $proses = Proses::create([ + 'start' => $tanggal_dari, + 'end' => $tanggal_sampai, + 'min_support' => $min_support, + 'min_confidence' => $min_confidance, + ]); + + $transaksi = Transaksi::whereBetween('tanggal', [$tanggal_dari, $tanggal_sampai])->get(); + + $totalTransactions = $transaksi->count(); + + $itemsets = $this->generateItemsets($transaksi); + // Convert transactions to vertical format + $verticalData = $this->convertToVerticalFormat($transaksi); + + // dd($itemsets); + list($itemset1, $itemset2, $itemset3) = $this->calculateEclat($proses->id, $transaksi, $itemsets, $min_support, $min_confidance, $totalTransactions); + return view('layouts.pages.algoritma', compact('totalTransactions', 'verticalData', 'itemset1', 'itemset2', 'itemset3')); + } + + private function generateItemsets($transaksi) + { + $itemsets = []; + + foreach ($transaksi as $trans) { + $items = array_unique(array_map('trim', explode(',', $trans->obat))); + foreach ($items as $item) { + $normalizedItem = strtolower(str_replace(' ', '', $item)); + if (!isset($itemsets[$normalizedItem])) { + $itemsets[$normalizedItem] = []; + } + $itemsets[$normalizedItem][] = $trans->id; + } + } + + return $itemsets; + } + + + + private function convertToVerticalFormat($transaksi) + { + $verticalData = []; + + foreach ($transaksi as $trans) { + $items = explode(',', $trans->obat); + foreach ($items as $item) { + if (!isset($verticalData[$item])) { + $verticalData[$item] = array_fill_keys($transaksi->pluck('id')->toArray(), 0); + } + $verticalData[$item][$trans->id] = 1; + } + } + + return $verticalData; + } + + private function calculateEclat($prosesid, $transaksi, $itemsets, $min_support, $min_confidance, $totalTransactions) + { + $min_support_count = $min_support / $totalTransactions; + $itemset1 = []; + $itemset2 = []; + $itemset3 = []; + $confidenceResults2 = []; + $confidenceResults3 = []; + + // Calculate 1-itemsets + foreach ($itemsets as $item => $transactions) { + $support = count($transactions); + $supportValue = $support / $totalTransactions; + $itemset1[] = [ + 'item' => $item, + 'support' => $supportValue, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos', + 'proses_id' => $prosesid, + ]; + $itemset1Model = new Itemset1(); + $itemset1Model->saveItemsets([ + 'atribut' => $item, + 'support' => $supportValue, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos', + 'proses_id' => $prosesid, + ]); + } + + $filteredItemset1 = array_filter($itemset1, function ($itemset) { + return $itemset['keterangan'] == 'Lolos'; + }); + + + // Calculate 2-itemsets + foreach ($itemset1 as $item1) { + if ($item1['keterangan'] == 'Lolos') { + foreach ($itemset1 as $item2) { + if ($item2['keterangan'] == 'Lolos' && $item1['item'] != $item2['item']) { + $sortedItems = array_merge(array($item1['item']), array($item2['item'])); + sort($sortedItems); + $itemSetKey = implode(',', $sortedItems); + + if (!isset($itemset2[$itemSetKey])) { + $support = 0; + foreach ($transaksi as $trans) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans->obat)); + if (in_array($item1['item'], $items) && in_array($item2['item'], $items)) { + $support++; + } + } + + $supportValue = $support / $totalTransactions; + + $jumlah = $support; + + $itemset2[$itemSetKey] = [ + 'item1' => $sortedItems[0], + 'item2' => $sortedItems[1], + 'support' => $supportValue, + 'jumlah' => $jumlah, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos' + ]; + $itemset2Model = new Itemset2(); + $createdItemset2 = $itemset2Model->saveItemsets([ + 'atribut' => "{$itemSetKey}", + 'support' => $supportValue, + 'jumlah' => $jumlah, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos', + 'proses_id' => $prosesid + ]); + + if (is_null($createdItemset2->id)) { + throw new Exception('Itemset2 ID is null after creation'); + } + + // $filteredItemset2 = array_filter($itemset2, function ($itemset) { + // return $itemset['keterangan'] == 'Lolos'; + // }); + + if ($supportValue >= $min_support_count) { + $countA = count($itemsets[$sortedItems[0]]); + $countB = count($itemsets[$sortedItems[1]]); + + $confidenceAB = $support / $countA; + $confidenceBA = $support / $countB; + + $supportA2 = $countA / $totalTransactions; + $supportB2 = $countB / $totalTransactions; + + $liftAB = $supportValue / ($supportA2 * $supportB2); + $liftBA = $supportValue / ($supportB2 * $supportA2); + + $confidenceKeys2 = []; + + $confidenceResults2[] = [ + 'item1' => $sortedItems[0], + 'item2' => $sortedItems[1], + 'support' => $supportValue, + 'confidence' => "{$support} / {$countA} = {$confidenceAB}", + 'lift' => "{$supportValue} / {$supportA2} * {$supportB2} = {$liftAB}", + 'korelasi' => $liftAB > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAB > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults2[] = [ + 'item1' => $sortedItems[1], + 'item2' => $sortedItems[0], + 'support' => $supportValue, + 'confidence' => "{$support} / {$countB} = {$confidenceBA}", + 'lift' => "{$supportValue} / {$supportB2} * {$supportA2} = {$liftBA}", + 'korelasi' => $liftBA > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceBA > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem2[] = [ + 'item1' => $sortedItems[1], + 'item2' => $sortedItems[0], + 'support' => $supportValue, + 'confidence' => "{$support} / {$countB} = {$confidenceBA}", + 'lift' => "{$supportValue} / {$supportB2} * {$supportA2} = {$liftBA}", + 'korelasi' => $liftBA > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceBA > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem2[] = [ + 'item1' => $sortedItems[0], + 'item2' => $sortedItems[1], + 'support' => $supportValue, + 'confidence' => "{$support} / {$countA} = {$confidenceAB}", + 'lift' => "{$supportValue} / {$supportA2} * {$supportB2} = {$liftAB}", + 'korelasi' => $liftAB > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAB > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + // $filteredItemset2 = array_filter($itemset2, function ($itemset) { + // return $itemset['keterangan'] == 'Lolos'; + // }); + + // dd($itemset2, $filteredItemset2, $confidenceResults2, $filteredItemset2); + + $uniqueConfidenceResults2 = []; + foreach ($confidenceResults2 as $result) { + $key = $result['item1']; + if (!isset($confidenceKeys2[$key])) { + $confidenceKeys2[$key] = true; + $uniqueConfidenceResults2[] = $result; + } + } + + foreach ($uniqueConfidenceResults2 as $confidence2Result) { + $confidence = new Confidence(); + $confidence->items = "{$confidence2Result['item1']},{$confidence2Result['item2']}"; + $confidence->confidence = $confidence2Result['confidence']; + $confidence->lift_ratio = $confidence2Result['lift']; + $confidence->itemset = '2-item'; + $confidence->proses_id = $prosesid; + $confidence->keterangan = $confidence2Result['keterangan']; + $confidence->korelasi = $confidence2Result['korelasi']; + $confidence->save(); + } + + $confidenceResults2 = []; + } + } + } + } + } + } + + // Calculate 3-itemsets (using filtered itemset2 for efficiency) + $filteredItemset2 = array_filter($itemset2, function ($itemset) { + return $itemset['keterangan'] == 'Lolos'; + }); + $filteredConfidenceItemset2 = array_filter($confidenceResultsitem2, function ($itemset) { + return $itemset['keterangan'] == 'Lolos'; + }); + + foreach ($filteredItemset2 as $itemset2Key => $itemset2Value) { + $items2 = explode(',', $itemset2Key); + foreach ($itemset1 as $item1) { + if ($item1['keterangan'] == 'Lolos' && !in_array($item1['item'], $items2)) { + $sortedItems = array_merge($items2, array($item1['item'])); + sort($sortedItems); + $itemSetKey = implode(',', $sortedItems); + if (!isset($itemset3[$itemSetKey])) { + $support = 0; + + foreach ($transaksi as $trans) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans->obat)); + if (in_array($sortedItems[0], $items) && in_array($sortedItems[1], $items) && in_array($sortedItems[2], $items)) { + $support++; + } + } + + $supportValue = $support / $totalTransactions; + $jumlah = $support; + + $itemset3[$itemSetKey] = [ + 'item1' => $sortedItems[0], + 'item2' => $sortedItems[1], + 'item3' => $sortedItems[2], + 'support' => $supportValue, + 'jumlah' => $jumlah, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos', + ]; + $itemset3Model = new Itemset3(); + $createdItemset3 = $itemset3Model->saveItemsets([ + 'atribut' => "{$itemSetKey}", + 'support' => $supportValue, + 'jumlah' => $jumlah, + 'keterangan' => $supportValue >= $min_support_count ? 'Lolos' : 'Tidak Lolos', + 'proses_id' => $prosesid + ]); + + if ($supportValue >= $min_support_count) { + + // Convert Eloquent collection to array + $transaksiArray = $transaksi->toArray(); + + // Calculate total counts for confidence + $totalAB = $totalBC = $totalAC = 0; + + foreach ($transaksiArray as $trans) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans['obat'])); + if (in_array($sortedItems[0], $items) && in_array($sortedItems[1], $items)) { + $totalAB++; + } + if (in_array($sortedItems[1], $items) && in_array($sortedItems[2], $items)) { + $totalBC++; + } + if (in_array($sortedItems[0], $items) && in_array($sortedItems[2], $items)) { + $totalAC++; + } + } + + // Calculate support for individual pairs + $supportAB = $totalAB / $totalTransactions; + $supportBC = $totalBC / $totalTransactions; + $supportAC = $totalAC / $totalTransactions; + + // Calculate confidence + $confidenceAB_C = ($totalAB != 0) ? $support / $totalAB : 0; + $confidenceBC_A = ($totalBC != 0) ? $support / $totalBC : 0; + $confidenceAC_B = ($totalAC != 0) ? $support / $totalAC : 0; + + // Calculate lift + $supportA = count(array_filter($transaksiArray, function ($trans) use ($sortedItems) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans['obat'])); + return in_array($sortedItems[0], $items); + })) / $totalTransactions; + + $supportB = count(array_filter($transaksiArray, function ($trans) use ($sortedItems) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans['obat'])); + return in_array($sortedItems[1], $items); + })) / $totalTransactions; + + $supportC = count(array_filter($transaksiArray, function ($trans) use ($sortedItems) { + $items = array_map(function ($item) { + return strtolower(str_replace(' ', '', $item)); + }, explode(',', $trans['obat'])); + return in_array($sortedItems[2], $items); + })) / $totalTransactions; + + $liftAB_C = ($supportAB != 0 && $supportC != 0) ? $supportValue / ($supportAB * $supportC) : 0; + $liftBC_A = ($supportBC != 0 && $supportA != 0) ? $supportValue / ($supportBC * $supportA) : 0; + $liftAC_B = ($supportAC != 0 && $supportB != 0) ? $supportValue / ($supportAC * $supportB) : 0; + + // Create unique key for each confidence result + $confidenceKeys = []; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[0]}, {$sortedItems[1]} -> {$sortedItems[2]}", + 'confidence' => "{$support} / {$totalAB} = {$confidenceAB_C}", + 'lift' => "{$supportValue} / ({$supportAB} * {$supportC}) = {$liftAB_C}", + 'korelasi' => $liftAB_C > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAB_C > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[1]}, {$sortedItems[2]} -> {$sortedItems[0]}", + 'confidence' => "{$support} / {$totalBC} = {$confidenceBC_A}", + 'lift' => "{$supportValue} / ({$supportBC} * {$supportA}) = {$liftBC_A}", + 'korelasi' => $liftBC_A > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceBC_A > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[0]}, {$sortedItems[2]} -> {$sortedItems[1]}", + 'confidence' => "{$support} / {$totalAC} = {$confidenceAC_B}", + 'lift' => "{$supportValue} / ({$supportAC} * {$supportB}) = {$liftAC_B}", + 'korelasi' => $liftAC_B > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAC_B > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[0]} -> {$sortedItems[1]}, {$sortedItems[2]}", + 'confidence' => count($itemsets[$sortedItems[0]]) != 0 ? $support / count($itemsets[$sortedItems[0]]) : 0, + 'lift' => "{$supportValue} / ({$supportA} * {$supportBC})", + 'korelasi' => ($supportA != 0 && $supportBC != 0) ? ($supportValue / ($supportA * $supportBC)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[0]]) != 0 ? ($support / count($itemsets[$sortedItems[0]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[1]} -> {$sortedItems[0]}, {$sortedItems[2]}", + 'confidence' => count($itemsets[$sortedItems[1]]) != 0 ? $support / count($itemsets[$sortedItems[1]]) : 0, + 'lift' => "{$supportValue} / ({$supportB} * {$supportAC})", + 'korelasi' => ($supportB != 0 && $supportAC != 0) ? ($supportValue / ($supportB * $supportAC)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[1]]) != 0 ? ($support / count($itemsets[$sortedItems[1]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResults3[] = [ + 'items' => "{$sortedItems[2]} -> {$sortedItems[0]}, {$sortedItems[1]}", + 'confidence' => count($itemsets[$sortedItems[2]]) != 0 ? $support / count($itemsets[$sortedItems[2]]) : 0, + 'lift' => "{$supportValue} / ({$supportC} * {$supportAB})", + 'korelasi' => ($supportC != 0 && $supportAB != 0) ? ($supportValue / ($supportC * $supportAB)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[2]]) != 0 ? ($support / count($itemsets[$sortedItems[2]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[0]}, {$sortedItems[1]} -> {$sortedItems[2]}", + 'confidence' => "{$support} / {$totalAB} = {$confidenceAB_C}", + 'lift' => "{$supportValue} / ({$supportAB} * {$supportC}) = {$liftAB_C}", + 'korelasi' => $liftAB_C > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAB_C > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[1]}, {$sortedItems[2]} -> {$sortedItems[0]}", + 'confidence' => "{$support} / {$totalBC} = {$confidenceBC_A}", + 'lift' => "{$supportValue} / ({$supportBC} * {$supportA}) = {$liftBC_A}", + 'korelasi' => $liftBC_A > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceBC_A > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[0]}, {$sortedItems[2]} -> {$sortedItems[1]}", + 'confidence' => "{$support} / {$totalAC} = {$confidenceAC_B}", + 'lift' => "{$supportValue} / ({$supportAC} * {$supportB}) = {$liftAC_B}", + 'korelasi' => $liftAC_B > 1 ? 'Korelasi Positif' : 'Korelasi Negatif', + 'keterangan' => $confidenceAC_B > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[0]} -> {$sortedItems[1]}, {$sortedItems[2]}", + 'confidence' => count($itemsets[$sortedItems[0]]) != 0 ? $support / count($itemsets[$sortedItems[0]]) : 0, + 'lift' => "{$supportValue} / ({$supportA} * {$supportBC})", + 'korelasi' => ($supportA != 0 && $supportBC != 0) ? ($supportValue / ($supportA * $supportBC)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[0]]) != 0 ? ($support / count($itemsets[$sortedItems[0]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[1]} -> {$sortedItems[0]}, {$sortedItems[2]}", + 'confidence' => count($itemsets[$sortedItems[1]]) != 0 ? $support / count($itemsets[$sortedItems[1]]) : 0, + 'lift' => "{$supportValue} / ({$supportB} * {$supportAC})", + 'korelasi' => ($supportB != 0 && $supportAC != 0) ? ($supportValue / ($supportB * $supportAC)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[1]]) != 0 ? ($support / count($itemsets[$sortedItems[1]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + $confidenceResultsitem3[] = [ + 'items' => "{$sortedItems[2]} -> {$sortedItems[0]}, {$sortedItems[1]}", + 'confidence' => count($itemsets[$sortedItems[2]]) != 0 ? $support / count($itemsets[$sortedItems[2]]) : 0, + 'lift' => "{$supportValue} / ({$supportC} * {$supportAB})", + 'korelasi' => ($supportC != 0 && $supportAB != 0) ? ($supportValue / ($supportC * $supportAB)) > 1 ? 'Korelasi Positif' : 'Korelasi Negatif' : 'Tidak Diketahui', + 'keterangan' => (count($itemsets[$sortedItems[2]]) != 0 ? ($support / count($itemsets[$sortedItems[2]])) : 0) > $min_confidance ? 'Lolos' : 'Tidak Lolos' + ]; + + // Filter duplicate data from confidenceResults3 + $uniqueConfidenceResults3 = []; + foreach ($confidenceResults3 as $result) { + $key = $result['items']; + if (!isset($confidenceKeys[$key])) { + $confidenceKeys[$key] = true; + $uniqueConfidenceResults3[] = $result; + } + } + + foreach ($uniqueConfidenceResults3 as $confidenceResult) { + $confidence = new Confidence(); + $confidence->items = $confidenceResult['items']; + $confidence->confidence = $confidenceResult['confidence']; + $confidence->lift_ratio = $confidenceResult['lift']; + $confidence->keterangan = $confidenceResult['keterangan']; + $confidence->itemset = '3-item'; + $confidence->proses_id = $prosesid; + $confidence->korelasi = $confidenceResult['korelasi']; + $confidence->save(); + } + + // Kosongkan array confidenceResults3 setelah disimpan untuk menghindari duplikasi + $confidenceResults3 = []; + } + } + } + } + } + + $filteredItemset3 = array_filter($itemset3, function ($item) { + return $item['keterangan'] == 'Lolos'; + }); + $filteredConfidenceItemset3 = array_filter($confidenceResultsitem3, function ($itemset) { + return $itemset['keterangan'] == 'Lolos'; + }); + + dd($totalTransactions, $itemset1, $filteredItemset1, $itemset2, $filteredItemset2, $itemset3, $filteredItemset3, $filteredConfidenceItemset2, $confidenceResultsitem3, $filteredConfidenceItemset3); + dd($confidenceResults2, $confidenceResults3); + return [$itemset1, $itemset2, $itemset3]; + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..8677cd5 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,8 @@ +get(); + $count = Proses::count(); + return view('layouts.pages.hasil', compact('proses', 'count')); + } + + public function show($id) + { + $proses = Proses::findOrFail($id); + $itemset2 = + Confidence::where('itemset', '2-item')->where('proses_id', $id)->get(); + $itemset3 = + Confidence::where('itemset', '3-item')->where('proses_id', $id)->get(); + + return view('layouts.pages.detail', compact('proses', 'itemset2', 'itemset3')); + } + + public function generatePDF($id) + { + $proses = Proses::findOrFail($id); + $itemset2 = + Confidence::where('itemset', '2-item')->where('proses_id', $id)->get(); + $itemset3 = + Confidence::where('itemset', '3-item')->where('proses_id', $id)->get(); + $rules = + Confidence::where('proses_id', $id)->where('keterangan', 'Lolos')->get(); + + $pdf = Pdf::loadView('layouts.pages.pdf', compact('proses', 'itemset2', 'itemset3', 'rules')); + + $timestamp = Carbon::now()->format('Ymd_His'); + $fileName = 'eclat_' . $timestamp . '.pdf'; + + return $pdf->download($fileName); + } + public function exportExcel($id) + { + $timestamp = Carbon::now()->format('Ymd_His'); + $fileName = 'eclat_' . $timestamp . '.xlsx'; + + return Excel::download(new ProsesExport($id), $fileName); + } +} diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php new file mode 100644 index 0000000..2d17f96 --- /dev/null +++ b/app/Http/Controllers/LoginController.php @@ -0,0 +1,43 @@ +all(), [ + 'email' => 'required|email', + 'password' => 'required' + ])->validate(); + + if (!Auth::attempt($request->only('email', 'password'), $request->boolean('remember'))) { + throw ValidationException::withMessages([ + 'email' => trans('auth.failed') + ]); + } + + $request->session()->regenerate(); + + return redirect()->route('dashboard')->with('message', 'Berhasil Login'); + } + + public function logout(Request $request) + { + Auth::guard('web')->logout(); + + $request->session()->invalidate(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/ProsesController.php b/app/Http/Controllers/ProsesController.php new file mode 100644 index 0000000..e504f7c --- /dev/null +++ b/app/Http/Controllers/ProsesController.php @@ -0,0 +1,39 @@ +input('tanggal_dari'); + $tanggal_sampai = $request->input('tanggal_sampai'); + $min_support = $request->input('min_support'); + $min_confidance = $request->input('min_confidance'); + + $proses = Proses::create([ + 'start' => $tanggal_dari, + 'end' => $tanggal_sampai, + 'min_support' => $min_support, + 'min_confidence' => $min_confidance, + ]); + + $transaksi = Transaksi::whereBetween('tanggal', [$tanggal_dari, $tanggal_sampai])->get(); + $totalTransactions = $transaksi->count(); + + ProcessEclatJob::dispatch($proses, $transaksi, $min_support, $min_confidance, $totalTransactions); + + return redirect()->back()->with('message', 'Silahkan tunggu data sedang diproses di latar belakang'); + } +} diff --git a/app/Http/Controllers/TransaksiController.php b/app/Http/Controllers/TransaksiController.php new file mode 100644 index 0000000..0a7a3a0 --- /dev/null +++ b/app/Http/Controllers/TransaksiController.php @@ -0,0 +1,68 @@ +get(); + $transaksiCount = Transaksi::count(); + return view('layouts.pages.transaksi', compact('transaksi', 'transaksiCount')); + } + + public function store(Request $request) + { + $request->validate([ + 'tanggal' => 'required|date', + 'obat' => 'required', + ]); + + $transaksi = Transaksi::create([ + 'tanggal' => $request->tanggal, + 'obat' => $request->obat, + ]); + + return redirect()->route('transaksi')->with('message', 'Transaksi berhasil disimpan.'); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'tanggal' => 'required|date', + 'obat' => 'required', + ]); + + $transaksi = Transaksi::findOrFail($id); + $transaksi->update([ + 'tanggal' => $request->tanggal, + 'obat' => $request->obat, + ]); + + return redirect()->route('transaksi')->with('message', 'Transaksi berhasil diperbarui.'); + } + + public function delete($id) + { + $transaksi = Transaksi::findOrFail($id); + $transaksi->delete(); + return redirect()->route('transaksi')->with('message', 'Data berhasil dihapus.'); + } + + public function import(Request $request) + { + $request->validate([ + 'file' => 'required|mimes:xls,xlsx' + ]); + + Excel::import(new TransaksiImport, $request->file('file')); + + return redirect()->back()->with('success', 'Data berhasil diimport'); + } +} diff --git a/app/Http/Middleware/isAuth.php b/app/Http/Middleware/isAuth.php new file mode 100644 index 0000000..1ed8274 --- /dev/null +++ b/app/Http/Middleware/isAuth.php @@ -0,0 +1,25 @@ +with('message', 'harus login dulu ngab'); + } + } +} diff --git a/app/Http/Middleware/isNoAuth.php b/app/Http/Middleware/isNoAuth.php new file mode 100644 index 0000000..38d103a --- /dev/null +++ b/app/Http/Middleware/isNoAuth.php @@ -0,0 +1,25 @@ +with('message', 'anda sudah login'); + } else { + return $next($request); + } + } +} diff --git a/app/Imports/TransaksiImport.php b/app/Imports/TransaksiImport.php new file mode 100644 index 0000000..155ba83 --- /dev/null +++ b/app/Imports/TransaksiImport.php @@ -0,0 +1,25 @@ + Date::excelToDateTimeObject($row['tanggal'])->format('Y-m-d'), + 'obat' => $row['obat'], + ]); + } +} diff --git a/app/Jobs/ProcessEclatJob.php b/app/Jobs/ProcessEclatJob.php new file mode 100644 index 0000000..727365e --- /dev/null +++ b/app/Jobs/ProcessEclatJob.php @@ -0,0 +1,242 @@ +proses = $proses; + $this->transaksi = $transaksi; + $this->min_support = $min_support; + $this->min_confidance = $min_confidance; + $this->totalTransactions = $totalTransactions; + } + + /** + * Execute the job. + */ + public function handle(): void + { + try { + Log::info('Memulai eksekusi job ProcessEclatJob...'); + $itemsets = $this->generateItemsets($this->transaksi); + list($itemset1, $itemset2, $itemset3, $confidenceResults) = $this->calculateEclat($itemsets, $this->min_support, $this->min_confidance, $this->totalTransactions); + + // Store results in the database + $this->storeItemset1($itemset1); + $this->storeItemset2($itemset2, $confidenceResults); + $this->storeItemset3($itemset3, $confidenceResults); + + Log::info('Selesai eksekusi job ProcessEclatJob.'); + } catch (\Exception $e) { + Log::error('Error saat mengeksekusi job ProcessEclatJob: ' . $e->getMessage()); + throw $e; // Anda dapat melemparkan kembali pengecualian untuk memunculkan peringatan atau penanganan lebih lanjut + } + } + + private function generateItemsets($transaksi) + { + $itemsets = []; + + foreach ($transaksi as $trans) { + $items = explode(', ', $trans->obat); + foreach ($items as $item) { + if (!isset($itemsets[$item])) { + $itemsets[$item] = []; + } + $itemsets[$item][] = $trans->id; + } + } + + return $itemsets; + } + + private function calculateEclat($itemsets, $min_support, $min_confidance, $totalTransactions) + { + $min_support_count = $min_support * $totalTransactions; + $itemset1 = []; + $itemset2 = []; + $itemset3 = []; + $confidenceResults = []; + + foreach ($itemsets as $item => $transactions) { + $support = count($transactions); + $supportValue = $support / $totalTransactions; + $itemset1[] = [ + 'item' => $item, + 'support' => $supportValue, + 'keterangan' => $supportValue >= $min_support ? 'Lolos' : 'Tidak Lolos' + ]; + } + + $items = array_keys($itemsets); + for ($i = 0; $i < count($items); $i++) { + for ($j = $i + 1; $j < count($items); $j++) { + $itemA = $items[$i]; + $itemB = $items[$j]; + $transactionsA = $itemsets[$itemA]; + $transactionsB = $itemsets[$itemB]; + $commonTransactions = array_intersect($transactionsA, $transactionsB); + $support = count($commonTransactions); + $supportValue = $support / $totalTransactions; + + $confidence = $support / count($transactionsA); + $liftRatio = $supportValue / ((count($transactionsA) / $totalTransactions) * (count($transactionsB) / $totalTransactions)); + $keterangan = ($supportValue >= $min_support && $confidence >= $min_confidance) ? 'Lolos' : 'Tidak Lolos'; + + $itemset2[] = [ + 'items' => "$itemA, $itemB", + 'support_xUy' => $supportValue, + 'support' => $supportValue, + 'confidence' => $confidence, + 'lift_ratio' => $liftRatio, + 'keterangan' => $keterangan + ]; + + if ($supportValue >= $min_support) { + if ($confidence >= $min_confidance) { + $confidenceResults[] = [ + 'itemset' => "$itemA, $itemB", + 'support_xUy' => $supportValue, + 'support_x' => count($transactionsA) / $totalTransactions, + 'confidence' => $confidence, + 'lift_ratio' => $liftRatio, + 'korelasi' => $liftRatio > 1 ? 'Positif' : 'Negatif' + ]; + } + } + } + } + + for ($i = 0; $i < count($items); $i++) { + for ($j = $i + 1; $j < count($items); $j++) { + for ($k = $j + 1; $k < count($items); $k++) { + $itemA = $items[$i]; + $itemB = $items[$j]; + $itemC = $items[$k]; + $transactionsA = $itemsets[$itemA]; + $transactionsB = $itemsets[$itemB]; + $transactionsC = $itemsets[$itemC]; + $commonTransactions = array_intersect($transactionsA, $transactionsB, $transactionsC); + $support = count($commonTransactions); + $supportValue = $support / $totalTransactions; + + $confidence = $support / count($transactionsA); + $liftRatio = $supportValue / ((count($transactionsA) / $totalTransactions) * (count($transactionsB) / $totalTransactions) * (count($transactionsC) / $totalTransactions)); + $keterangan = ($supportValue >= $min_support && $confidence >= $min_confidance) ? 'Lolos' : 'Tidak Lolos'; + + $itemset3[] = [ + 'items' => "$itemA, $itemB, $itemC", + 'support_xUy' => $supportValue, + 'support' => $supportValue, + 'confidence' => $confidence, + 'lift_ratio' => $liftRatio, + 'keterangan' => $keterangan + ]; + + if ($supportValue >= $min_support) { + if ($confidence >= $min_confidance) { + $confidenceResults[] = [ + 'itemset' => "$itemA, $itemB, $itemC", + 'support_xUy' => $supportValue, + 'support_x' => count($transactionsA) / $totalTransactions, + 'confidence' => $confidence, + 'lift_ratio' => $liftRatio, + 'korelasi' => $liftRatio > 1 ? 'Positif' : 'Negatif' + ]; + } + } + } + } + } + + return [$itemset1, $itemset2, $itemset3, $confidenceResults]; + } + private function storeItemset1($itemset1) + { + foreach ($itemset1 as $item) { + Itemset1::create([ + 'atribut' => $item['item'], + 'support' => $item['support'], + 'keterangan' => $item['keterangan'], + 'proses_id' => $this->proses->id, + ]); + } + } + + private function storeItemset2($itemset2, $confidenceResults) + { + foreach ($itemset2 as $item) { + $itemset2Record = Itemset2::create([ + 'atribut' => $item['items'], + 'support' => $item['support'], + 'keterangan' => $item['keterangan'], + 'proses_id' => $this->proses->id, + ]); + + foreach ($confidenceResults as $confidence) { + if ($confidence['itemset'] === $item['items']) { + Confidence::create([ + 'items' => $item['items'], + 'support_xUy' => $confidence['support_xUy'], + 'support_x' => $confidence['support_x'], + 'confidence' => $confidence['confidence'], + 'lift_ratio' => $confidence['lift_ratio'], + 'korelasi' => $confidence['korelasi'], + 'itemset2_id' => $itemset2Record->id, + ]); + } + } + } + } + + private function storeItemset3($itemset3, $confidenceResults) + { + foreach ($itemset3 as $item) { + $itemset3Record = Itemset3::create([ + 'atribut' => $item['items'], + 'support' => $item['support'], + 'keterangan' => $item['keterangan'], + 'proses_id' => $this->proses->id, + ]); + + foreach ($confidenceResults as $confidence) { + if ($confidence['itemset'] === $item['items']) { + Confidence::create([ + 'items' => $item['items'], + 'support_xUy' => $confidence['support_xUy'], + 'support_x' => $confidence['support_x'], + 'confidence' => $confidence['confidence'], + 'lift_ratio' => $confidence['lift_ratio'], + 'korelasi' => $confidence['korelasi'], + 'itemset3_id' => $itemset3Record->id, + ]); + } + } + } + } +} diff --git a/app/Models/Confidence.php b/app/Models/Confidence.php new file mode 100644 index 0000000..acf254f --- /dev/null +++ b/app/Models/Confidence.php @@ -0,0 +1,40 @@ +belongsTo(Itemset2::class, 'itemset2_id'); + } + + public function itemset3() + { + return $this->belongsTo(Itemset3::class, 'itemset3_id'); + } + + public function proses() + { + return $this->belongsTo(Proses::class, 'proses_id'); + } +} diff --git a/app/Models/Itemset1.php b/app/Models/Itemset1.php new file mode 100644 index 0000000..0ccd6b1 --- /dev/null +++ b/app/Models/Itemset1.php @@ -0,0 +1,30 @@ +belongsTo(Proses::class); + } + + public function saveItemsets($itemset1Data) + { + Itemset1::insert($itemset1Data); + } +} diff --git a/app/Models/Itemset2.php b/app/Models/Itemset2.php new file mode 100644 index 0000000..e1f5876 --- /dev/null +++ b/app/Models/Itemset2.php @@ -0,0 +1,36 @@ +belongsTo(Proses::class); + } + + public function confidences() + { + return $this->hasMany(Confidence::class); + } + + public function saveItemsets($itemset) + { + return Itemset2::create($itemset); + } +} diff --git a/app/Models/Itemset3.php b/app/Models/Itemset3.php new file mode 100644 index 0000000..bb4cdc7 --- /dev/null +++ b/app/Models/Itemset3.php @@ -0,0 +1,36 @@ +belongsTo(Proses::class); + } + + public function confidences() + { + return $this->hasMany(Confidence::class); + } + + public function saveItemsets($itemset) + { + return Itemset3::create($itemset); + } +} diff --git a/app/Models/Proses.php b/app/Models/Proses.php new file mode 100644 index 0000000..532b20b --- /dev/null +++ b/app/Models/Proses.php @@ -0,0 +1,39 @@ +hasMany(Itemset1::class); + } + + public function itemset2() + { + return $this->hasMany(Itemset2::class); + } + + public function itemset3() + { + return $this->hasMany(Itemset3::class); + } + public function confidences() + { + return $this->hasMany(Confidence::class); + } +} diff --git a/app/Models/Transaksi.php b/app/Models/Transaksi.php new file mode 100644 index 0000000..4cfe876 --- /dev/null +++ b/app/Models/Transaksi.php @@ -0,0 +1,18 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * Get the attributes that should be cast. + * + * @return array + */ + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + } +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..452e6b6 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ +handleCommand(new ArgvInput); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..7b162da --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,18 @@ +withRouting( + web: __DIR__.'/../routes/web.php', + commands: __DIR__.'/../routes/console.php', + health: '/up', + ) + ->withMiddleware(function (Middleware $middleware) { + // + }) + ->withExceptions(function (Exceptions $exceptions) { + // + })->create(); diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bootstrap/providers.php b/bootstrap/providers.php new file mode 100644 index 0000000..38b258d --- /dev/null +++ b/bootstrap/providers.php @@ -0,0 +1,5 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-08-31T09:50:34+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.10", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.10" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2024-02-18T20:23:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "dompdf/dompdf", + "version": "v2.0.8", + "source": { + "type": "git", + "url": "https://github.com/dompdf/dompdf.git", + "reference": "c20247574601700e1f7c8dab39310fca1964dc52" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c20247574601700e1f7c8dab39310fca1964dc52", + "reference": "c20247574601700e1f7c8dab39310fca1964dc52", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "masterminds/html5": "^2.0", + "phenx/php-font-lib": ">=0.5.4 <1.0.0", + "phenx/php-svg-lib": ">=0.5.2 <1.0.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ext-json": "*", + "ext-zip": "*", + "mockery/mockery": "^1.3", + "phpunit/phpunit": "^7.5 || ^8 || ^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-gd": "Needed to process images", + "ext-gmagick": "Improves image processing performance", + "ext-imagick": "Improves image processing performance", + "ext-zlib": "Needed for pdf stream compression" + }, + "type": "library", + "autoload": { + "psr-4": { + "Dompdf\\": "src/" + }, + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1" + ], + "authors": [ + { + "name": "The Dompdf Community", + "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md" + } + ], + "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", + "homepage": "https://github.com/dompdf/dompdf", + "support": { + "issues": "https://github.com/dompdf/dompdf/issues", + "source": "https://github.com/dompdf/dompdf/tree/v2.0.8" + }, + "time": "2024-04-29T13:06:17+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "ezyang/htmlpurifier", + "version": "v4.17.0", + "source": { + "type": "git", + "url": "https://github.com/ezyang/htmlpurifier.git", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "shasum": "" + }, + "require": { + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "cerdic/css-tidy": "^1.7 || ^2.0", + "simpletest/simpletest": "dev-master" + }, + "suggest": { + "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.", + "ext-bcmath": "Used for unit conversion and imagecrash protection", + "ext-iconv": "Converts text to and from non-UTF-8 encodings", + "ext-tidy": "Used for pretty-printing HTML" + }, + "type": "library", + "autoload": { + "files": [ + "library/HTMLPurifier.composer.php" + ], + "psr-0": { + "HTMLPurifier": "library/" + }, + "exclude-from-classmap": [ + "/library/HTMLPurifier/Language/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Edward Z. Yang", + "email": "admin@htmlpurifier.org", + "homepage": "http://ezyang.com" + } + ], + "description": "Standards compliant HTML filter written in PHP", + "homepage": "http://htmlpurifier.org/", + "keywords": [ + "html" + ], + "support": { + "issues": "https://github.com/ezyang/htmlpurifier/issues", + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" + }, + "time": "2023-11-17T15:01:25+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:16:48+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:35:24+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-12-03T20:05:35+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "laravel/framework", + "version": "v11.7.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/e5ac72f513f635f208024aa76b8a04efc1b47f93", + "reference": "e5ac72f513f635f208024aa76b8a04efc1b47f93", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.18", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.72.2|^3.0", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", + "psr/container": "^1.1.1|^2.0.1", + "psr/log": "^1.0|^2.0|^3.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "ramsey/uuid": "^4.7", + "symfony/console": "^7.0", + "symfony/error-handler": "^7.0", + "symfony/finder": "^7.0", + "symfony/http-foundation": "^7.0", + "symfony/http-kernel": "^7.0", + "symfony/mailer": "^7.0", + "symfony/mime": "^7.0", + "symfony/polyfill-php83": "^1.28", + "symfony/process": "^7.0", + "symfony/routing": "^7.0", + "symfony/uid": "^7.0", + "symfony/var-dumper": "^7.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "mockery/mockery": "1.6.8", + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version", + "spatie/once": "*" + }, + "require-dev": { + "ably/ably-php": "^1.0", + "aws/aws-sdk-php": "^3.235.5", + "ext-gmp": "*", + "fakerphp/faker": "^1.23", + "league/flysystem-aws-s3-v3": "^3.0", + "league/flysystem-ftp": "^3.0", + "league/flysystem-path-prefixing": "^3.3", + "league/flysystem-read-only": "^3.3", + "league/flysystem-sftp-v3": "^3.0", + "mockery/mockery": "^1.6", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^9.0.15", + "pda/pheanstalk": "^5.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.5|^11.0", + "predis/predis": "^2.0.2", + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0", + "symfony/http-client": "^7.0", + "symfony/psr-http-message-bridge": "^7.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", + "ext-apcu": "Required to use the APC cache driver.", + "ext-fileinfo": "Required to use the Filesystem class.", + "ext-ftp": "Required to use the Flysystem FTP driver.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", + "filp/whoops": "Required for friendly error pages in development (^2.14.3).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", + "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", + "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", + "league/flysystem-read-only": "Required to use read-only disks (^3.3)", + "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", + "mockery/mockery": "Required to use mocking (^1.6).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", + "predis/predis": "Required to use the predis connector (^2.0.2).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "11.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2024-05-07T13:41:51+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.21", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/23ea808e8a145653e0ab29e30d4385e49f40a920", + "reference": "23ea808e8a145653e0ab29e30d4385e49f40a920", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Add beautiful and user-friendly forms to your command-line applications.", + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.21" + }, + "time": "2024-04-30T12:46:16+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-11-08T14:08:06+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "shasum": "" + }, + "require": { + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + }, + "require-dev": { + "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.8|^9.3.3" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.9.0" + }, + "time": "2024-01-04T16:10:04+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.2", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.3", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2024-02-02T11:59:32+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.27.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", + "shasum": "" + }, + "require": { + "league/flysystem-local": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", + "aws/aws-sdk-php": "3.209.31 || 3.210.0", + "guzzlehttp/guzzle": "<7.0", + "guzzlehttp/ringphp": "<1.1.1", + "phpseclib/phpseclib": "3.0.15", + "symfony/http-client": "<5.2" + }, + "require-dev": { + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.5", + "google/cloud-storage": "^1.23", + "microsoft/azure-storage-blob": "^1.1", + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2024-04-07T19:17:50+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.25.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92", + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2024-03-15T19:58:44+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpstan/phpstan": "^0.12.68", + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Mime-type detection for Flysystem", + "support": { + "issues": "https://github.com/thephpleague/mime-type-detection/issues", + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2024-01-28T23:22:08+00:00" + }, + { + "name": "maatwebsite/excel", + "version": "3.1.55", + "source": { + "type": "git", + "url": "https://github.com/SpartnerNL/Laravel-Excel.git", + "reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/SpartnerNL/Laravel-Excel/zipball/6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260", + "reference": "6d9d791dcdb01a9b6fd6f48d46f0d5fff86e6260", + "shasum": "" + }, + "require": { + "composer/semver": "^3.3", + "ext-json": "*", + "illuminate/support": "5.8.*||^6.0||^7.0||^8.0||^9.0||^10.0||^11.0", + "php": "^7.0||^8.0", + "phpoffice/phpspreadsheet": "^1.18", + "psr/simple-cache": "^1.0||^2.0||^3.0" + }, + "require-dev": { + "laravel/scout": "^7.0||^8.0||^9.0||^10.0", + "orchestra/testbench": "^6.0||^7.0||^8.0||^9.0", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Maatwebsite\\Excel\\ExcelServiceProvider" + ], + "aliases": { + "Excel": "Maatwebsite\\Excel\\Facades\\Excel" + } + } + }, + "autoload": { + "psr-4": { + "Maatwebsite\\Excel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Patrick Brouwers", + "email": "patrick@spartner.nl" + } + ], + "description": "Supercharged Excel exports and imports in Laravel", + "keywords": [ + "PHPExcel", + "batch", + "csv", + "excel", + "export", + "import", + "laravel", + "php", + "phpspreadsheet" + ], + "support": { + "issues": "https://github.com/SpartnerNL/Laravel-Excel/issues", + "source": "https://github.com/SpartnerNL/Laravel-Excel/tree/3.1.55" + }, + "funding": [ + { + "url": "https://laravel-excel.com/commercial-support", + "type": "custom" + }, + { + "url": "https://github.com/patrickbrouwers", + "type": "github" + } + ], + "time": "2024-02-20T08:27:10+00:00" + }, + { + "name": "maennchen/zipstream-php", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/maennchen/ZipStream-PHP.git", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.1" + }, + "require-dev": { + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10.0", + "vimeo/psalm": "^5.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZipStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paul Duncan", + "email": "pabs@pablotron.org" + }, + { + "name": "Jonatan Männchen", + "email": "jonatan@maennchen.ch" + }, + { + "name": "Jesse Donat", + "email": "donatj@gmail.com" + }, + { + "name": "András Kolesár", + "email": "kolesar@kolesar.hu" + } + ], + "description": "ZipStream is a library for dynamically streaming dynamic zip files from PHP without writing to the disk at all on the server.", + "keywords": [ + "stream", + "zip" + ], + "support": { + "issues": "https://github.com/maennchen/ZipStream-PHP/issues", + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" + }, + "funding": [ + { + "url": "https://github.com/maennchen", + "type": "github" + }, + { + "url": "https://opencollective.com/zipstream", + "type": "open_collective" + } + ], + "time": "2023-06-21T14:59:35+00:00" + }, + { + "name": "markbaker/complex", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPComplex.git", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPComplex/zipball/95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "reference": "95c56caa1cf5c766ad6d65b6344b807c1e8405b9", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Complex\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@lange.demon.co.uk" + } + ], + "description": "PHP Class for working with complex numbers", + "homepage": "https://github.com/MarkBaker/PHPComplex", + "keywords": [ + "complex", + "mathematics" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPComplex/issues", + "source": "https://github.com/MarkBaker/PHPComplex/tree/3.0.2" + }, + "time": "2022-12-06T16:21:08+00:00" + }, + { + "name": "markbaker/matrix", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/MarkBaker/PHPMatrix.git", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MarkBaker/PHPMatrix/zipball/728434227fe21be27ff6d86621a1b13107a2562c", + "reference": "728434227fe21be27ff6d86621a1b13107a2562c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-master", + "phpcompatibility/php-compatibility": "^9.3", + "phpdocumentor/phpdocumentor": "2.*", + "phploc/phploc": "^4.0", + "phpmd/phpmd": "2.*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "sebastian/phpcpd": "^4.0", + "squizlabs/php_codesniffer": "^3.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Matrix\\": "classes/src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mark Baker", + "email": "mark@demon-angel.eu" + } + ], + "description": "PHP Class for working with matrices", + "homepage": "https://github.com/MarkBaker/PHPMatrix", + "keywords": [ + "mathematics", + "matrix", + "vector" + ], + "support": { + "issues": "https://github.com/MarkBaker/PHPMatrix/issues", + "source": "https://github.com/MarkBaker/PHPMatrix/tree/3.0.1" + }, + "time": "2022-12-02T22:17:43+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + }, + "time": "2024-03-31T07:05:07+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.5.17", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2024-04-12T21:02:21+00:00" + }, + { + "name": "nesbot/carbon", + "version": "3.3.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", + "reference": "8ff64b92c1b1ec84fcde9f8bb9ff2ca34cb8a77a", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "ext-json": "*", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "require-dev": { + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.52.1", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.65", + "phpunit/phpunit": "^10.5.15", + "squizlabs/php_codesniffer": "^3.9.0" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2024-05-01T06:54:22+00:00" + }, + { + "name": "nette/schema", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "shasum": "" + }, + "require": { + "nette/utils": "^4.0", + "php": "8.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.3.0" + }, + "time": "2023-12-11T11:54:22+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.4", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.4" + }, + "time": "2024-01-17T16:50:36+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.0.2", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" + }, + "time": "2024-03-05T20:51:40+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.2", + "symfony/console": "^7.0.4" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^2.2.0", + "illuminate/console": "^11.0.0", + "laravel/pint": "^1.14.0", + "mockery/mockery": "^1.6.7", + "pestphp/pest": "^2.34.1", + "phpstan/phpstan": "^1.10.59", + "phpstan/phpstan-strict-rules": "^1.5.2", + "symfony/var-dumper": "^7.0.4", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2024-03-06T16:17:14+00:00" + }, + { + "name": "phenx/php-font-lib", + "version": "0.5.6", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-font-lib.git", + "reference": "a1681e9793040740a405ac5b189275059e2a9863" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", + "reference": "a1681e9793040740a405ac5b189275059e2a9863", + "shasum": "" + }, + "require": { + "ext-mbstring": "*" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "FontLib\\": "src/FontLib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-2.1-or-later" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse, export and make subsets of different types of font files.", + "homepage": "https://github.com/PhenX/php-font-lib", + "support": { + "issues": "https://github.com/dompdf/php-font-lib/issues", + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" + }, + "time": "2024-01-29T14:45:26+00:00" + }, + { + "name": "phenx/php-svg-lib", + "version": "0.5.4", + "source": { + "type": "git", + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/46b25da81613a9cf43c83b2a8c2c1bdab27df691", + "reference": "46b25da81613a9cf43c83b2a8c2c1bdab27df691", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4" + }, + "require-dev": { + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Svg\\": "src/Svg" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Fabien Ménager", + "email": "fabien.menager@gmail.com" + } + ], + "description": "A library to read, parse and export to PDF SVG files.", + "homepage": "https://github.com/PhenX/php-svg-lib", + "support": { + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.4" + }, + "time": "2024-04-08T12:52:34+00:00" + }, + { + "name": "phpoffice/phpspreadsheet", + "version": "1.29.0", + "source": { + "type": "git", + "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0", + "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-dom": "*", + "ext-fileinfo": "*", + "ext-gd": "*", + "ext-iconv": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-zip": "*", + "ext-zlib": "*", + "ezyang/htmlpurifier": "^4.15", + "maennchen/zipstream-php": "^2.1 || ^3.0", + "markbaker/complex": "^3.0", + "markbaker/matrix": "^3.0", + "php": "^7.4 || ^8.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "dompdf/dompdf": "^1.0 || ^2.0", + "friendsofphp/php-cs-fixer": "^3.2", + "mitoteam/jpgraph": "^10.3", + "mpdf/mpdf": "^8.1.1", + "phpcompatibility/php-compatibility": "^9.3", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0", + "squizlabs/php_codesniffer": "^3.7", + "tecnickcom/tcpdf": "^6.5" + }, + "suggest": { + "dompdf/dompdf": "Option for rendering PDF with PDF Writer", + "ext-intl": "PHP Internationalization Functions", + "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers", + "mpdf/mpdf": "Option for rendering PDF with PDF Writer", + "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpOffice\\PhpSpreadsheet\\": "src/PhpSpreadsheet" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maarten Balliauw", + "homepage": "https://blog.maartenballiauw.be" + }, + { + "name": "Mark Baker", + "homepage": "https://markbakeruk.net" + }, + { + "name": "Franck Lefevre", + "homepage": "https://rootslabs.net" + }, + { + "name": "Erik Tilt" + }, + { + "name": "Adrien Crivelli" + } + ], + "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", + "homepage": "https://github.com/PHPOffice/PhpSpreadsheet", + "keywords": [ + "OpenXML", + "excel", + "gnumeric", + "ods", + "php", + "spreadsheet", + "xls", + "xlsx" + ], + "support": { + "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0" + }, + "time": "2023-06-14T22:48:31+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "predis/predis", + "version": "v2.2.2", + "source": { + "type": "git", + "url": "https://github.com/predis/predis.git", + "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/predis/predis/zipball/b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1", + "reference": "b1d3255ed9ad4d7254f9f9bba386c99f4bb983d1", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.3", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^8.0 || ~9.4.4" + }, + "suggest": { + "ext-relay": "Faster connection with in-memory caching (>=0.6.2)" + }, + "type": "library", + "autoload": { + "psr-4": { + "Predis\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Till Krüss", + "homepage": "https://till.im", + "role": "Maintainer" + } + ], + "description": "A flexible and feature-complete Redis client for PHP.", + "homepage": "http://github.com/predis/predis", + "keywords": [ + "nosql", + "predis", + "redis" + ], + "support": { + "issues": "https://github.com/predis/predis/issues", + "source": "https://github.com/predis/predis/tree/v2.2.2" + }, + "funding": [ + { + "url": "https://github.com/sponsors/tillkruss", + "type": "github" + } + ], + "time": "2023-09-13T16:42:03+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.12.3", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.3" + }, + "time": "2024-04-02T15:57:53+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.6", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", + "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.6" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2024-04-27T21:32:50+00:00" + }, + { + "name": "sabberworm/php-css-parser", + "version": "v8.5.1", + "source": { + "type": "git", + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=5.6.20" + }, + "require-dev": { + "phpunit/phpunit": "^5.7.27" + }, + "suggest": { + "ext-mbstring": "for parsing UTF-8 CSS" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sabberworm\\CSS\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" + } + ], + "description": "Parser for CSS Files written in PHP", + "homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser", + "keywords": [ + "css", + "parser", + "stylesheet" + ], + "support": { + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1" + }, + "time": "2024-02-15T16:41:13+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/2008671acb4a30b01c453de193cf9c80549ebda6", + "reference": "2008671acb4a30b01c453de193cf9c80549ebda6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/console", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/c981e0e9380ce9f146416bde3150c79197ce9986", + "reference": "c981e0e9380ce9f146416bde3150c79197ce9986", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "reference": "b08a4ad89e84b29cec285b7b1f781a7ae51cf4bc", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf97429887e40480c847bfeb6c3991e1e2c086ab", + "reference": "cf97429887e40480c847bfeb6c3991e1e2c086ab", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/db2a7fab994d67d92356bb39c367db115d9d30f9", + "reference": "db2a7fab994d67d92356bb39c367db115d9d30f9", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", + "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-28T11:44:19+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0194e064b8bdc29381462f790bab04e1cac8fdc8", + "reference": "0194e064b8bdc29381462f790bab04e1cac8fdc8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "reference": "e07bb9bd86e7cd8ba2d3d9c618eec9d1bbe06d25", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.0.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-29T12:20:25+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "reference": "4ff41a7c7998a88cfdc31b5841ef64d9246fc56a", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/3adbf110c306546f6f00337f421d2edca0e8d3c0", + "reference": "3adbf110c306546f6f00337f421d2edca0e8d3c0", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/process", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", + "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "reference": "9f82bf7766ccc9c22ab7aeb9bebb98351483fa5b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/string", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/1515e03afaa93e6419aba5d5c9d209159317100b", + "reference": "1515e03afaa93e6419aba5d5c9d209159317100b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.18|^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/uid", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/4f3a5d181999e25918586c8369de09e7814e7be2", + "reference": "4f3a5d181999e25918586c8369de09e7814e7be2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d1627b66fd87c8b4d90cabe5671c29d575690924", + "reference": "d1627b66fd87c8b4d90cabe5671c29d575690924", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0", + "twig/twig": "^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:29:19+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.6-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:43:29+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.15.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/3600b5d17aff52f6100ea4921849deacbbeb8656", + "reference": "3600b5d17aff52f6100ea4921849deacbbeb8656", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.54.0", + "illuminate/view": "^10.48.8", + "larastan/larastan": "^2.9.5", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.11", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.34.7" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2024-04-30T15:02:26+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.29.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2024-03-20T20:09:31+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.12", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2024-05-16T03:13:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v8.1.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.4", + "nunomaduro/termwind": "^2.0.1", + "php": "^8.2.0", + "symfony/console": "^7.0.4" + }, + "conflict": { + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" + }, + "require-dev": { + "larastan/larastan": "^2.9.2", + "laravel/framework": "^11.0.0", + "laravel/pint": "^1.14.0", + "laravel/sail": "^1.28.2", + "laravel/sanctum": "^4.0.0", + "laravel/tinker": "^2.9.0", + "orchestra/testbench-core": "^9.0.0", + "pestphp/pest": "^2.34.1 || ^3.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-03-06T16:20:09+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "11.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e35a2cbcabac0e6865fd373742ea432a3c34f92", + "reference": "7e35a2cbcabac0e6865fd373742ea432a3c34f92", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-text-template": "^4.0", + "sebastian/code-unit-reverse-lookup": "^4.0", + "sebastian/complexity": "^4.0", + "sebastian/environment": "^7.0", + "sebastian/lines-of-code": "^3.0", + "sebastian/version": "^5.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-12T15:35:40+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:05:04+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5d8d9355a16d8cc5a1305b0a85342cfa420612be", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:05:50+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:06:56+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8a59d9e25720482ee7fcdf296595e08795b84dc5", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:08:01+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "11.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "d475be032238173ca3b0a516f5cc291d174708ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d475be032238173ca3b0a516f5cc291d174708ae", + "reference": "d475be032238173ca3b0a516f5cc291d174708ae", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-invoker": "^5.0", + "phpunit/php-text-template": "^4.0", + "phpunit/php-timer": "^7.0", + "sebastian/cli-parser": "^3.0", + "sebastian/code-unit": "^3.0", + "sebastian/comparator": "^6.0", + "sebastian/diff": "^6.0", + "sebastian/environment": "^7.0", + "sebastian/exporter": "^6.0", + "sebastian/global-state": "^7.0", + "sebastian/object-enumerator": "^6.0", + "sebastian/type": "^5.0", + "sebastian/version": "^5.0" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "11.1-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.1.3" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2024-04-24T06:34:25+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/00a74d5568694711f0222e54fb281e1d15fdf04a", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:26:58+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6634549cb8d702282a04a774e36a7477d2bd9015", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:50:41+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:52:17+00:00" + }, + { + "name": "sebastian/comparator", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bd0f2fa5b9257c69903537b266ccb80fcf940db8", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:53:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "88a434ad86150e11a606ac4866b09130712671f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", + "reference": "88a434ad86150e11a606ac4866b09130712671f0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:55:19+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ab83243ecc233de5655b76f577711de9f842e712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712", + "reference": "ab83243ecc233de5655b76f577711de9f842e712", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:30:33+00:00" + }, + { + "name": "sebastian/environment", + "version": "7.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4eb3a442574d0e9d141aab209cd4aaf25701b09a", + "reference": "4eb3a442574d0e9d141aab209cd4aaf25701b09a", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:56:34+00:00" + }, + { + "name": "sebastian/exporter", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f291e5a317c321c0381fa9ecc796fa2d21b186da", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:28:20+00:00" + }, + { + "name": "sebastian/global-state", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:32:10+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:00:36+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:01:29+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/bb2a6255d30853425fd38f032eb64ced9f7f132d", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:02:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b75224967b5a466925c6d54e68edd0edf8dd4ed4", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:08:48+00:00" + }, + { + "name": "sebastian/type", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8502785eb3523ca0dd4afe9ca62235590020f3f", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:09:34+00:00" + }, + { + "name": "sebastian/version", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:10:47+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.6.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23", + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "laravel/serializable-closure": "^1.3", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.6.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2024-04-24T13:22:11+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "e27977d534eefe04c154c6fd8460217024054c05" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/e27977d534eefe04c154c6fd8460217024054c05", + "reference": "e27977d534eefe04c154c6fd8460217024054c05", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.5.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-05-03T15:43:14+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.14.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/c23cc018c5f423d2f413b99f84655fceb6549811", + "reference": "c23cc018c5f423d2f413b99f84655fceb6549811", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-05-03T15:56:16+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.7.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/f52124d50122611e8a40f628cef5c19ff6cc5b57", + "reference": "f52124d50122611e8a40f628cef5c19ff6cc5b57", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0|^11.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.5", + "spatie/ignition": "^1.14", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" + }, + "require-dev": { + "livewire/livewire": "^2.11|^3.3.5", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "8.22.3|^9.0", + "pestphp/pest": "^2.34", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "phpstan/phpstan-phpunit": "^1.3.16", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-05-02T13:42:49+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.0.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.0.7" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-28T11:44:19+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.2" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..f467267 --- /dev/null +++ b/config/app.php @@ -0,0 +1,126 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | the application so that it's available within Artisan commands. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. The timezone + | is set to "UTC" by default as it is suitable for most use cases. + | + */ + + 'timezone' => env('APP_TIMEZONE', 'UTC'), + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by Laravel's translation / localization methods. This option can be + | set to any locale for which you plan to have translation strings. + | + */ + + 'locale' => env('APP_LOCALE', 'en'), + + 'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), + + 'faker_locale' => env('APP_FAKER_LOCALE', 'en_US'), + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is utilized by Laravel's encryption services and should be set + | to a random, 32 character string to ensure that all encrypted values + | are secure. You should do this prior to deploying the application. + | + */ + + 'cipher' => 'AES-256-CBC', + + 'key' => env('APP_KEY'), + + 'previous_keys' => [ + ...array_filter( + explode(',', env('APP_PREVIOUS_KEYS', '')) + ), + ], + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => env('APP_MAINTENANCE_DRIVER', 'file'), + 'store' => env('APP_MAINTENANCE_STORE', 'database'), + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..0ba5d5d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => env('AUTH_GUARD', 'web'), + 'passwords' => env('AUTH_PASSWORD_BROKER', 'users'), + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | which utilizes session storage plus the Eloquent user provider. + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication guards have a user provider, which defines how the + | users are actually retrieved out of your database or other storage + | system used by the application. Typically, Eloquent is utilized. + | + | If you have multiple user tables or models you may configure multiple + | providers to represent the model / table. These providers may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => env('AUTH_MODEL', App\Models\User::class), + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | These configuration options specify the behavior of Laravel's password + | reset functionality, including the table utilized for token storage + | and the user provider that is invoked to actually retrieve users. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens'), + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | window expires and users are asked to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800), + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..6b57b18 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,107 @@ + env('CACHE_STORE', 'database'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "array", "database", "file", "memcached", + | "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => env('DB_CACHE_TABLE', 'cache'), + 'connection' => env('DB_CACHE_CONNECTION'), + 'lock_connection' => env('DB_CACHE_LOCK_CONNECTION'), + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), + 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, and DynamoDB cache + | stores, there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..f8e8dcb --- /dev/null +++ b/config/database.php @@ -0,0 +1,170 @@ + env('DB_CONNECTION', 'sqlite'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Below are all of the database connections defined for your application. + | An example configuration is provided for each database system which + | is supported by Laravel. You're free to add / remove connections. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DB_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'mariadb' => [ + 'driver' => 'mariadb', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DB_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'laravel'), + 'username' => env('DB_USERNAME', 'root'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => env('DB_CHARSET', 'utf8'), + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run on the database. + | + */ + + 'migrations' => [ + 'table' => 'migrations', + 'update_date_on_publish' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as Memcached. You may define your connection settings here. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/excel.php b/config/excel.php new file mode 100644 index 0000000..16828e7 --- /dev/null +++ b/config/excel.php @@ -0,0 +1,379 @@ + [ + + /* + |-------------------------------------------------------------------------- + | Chunk size + |-------------------------------------------------------------------------- + | + | When using FromQuery, the query is automatically chunked. + | Here you can specify how big the chunk should be. + | + */ + 'chunk_size' => 1000, + + /* + |-------------------------------------------------------------------------- + | Pre-calculate formulas during export + |-------------------------------------------------------------------------- + */ + 'pre_calculate_formulas' => false, + + /* + |-------------------------------------------------------------------------- + | Enable strict null comparison + |-------------------------------------------------------------------------- + | + | When enabling strict null comparison empty cells ('') will + | be added to the sheet. + */ + 'strict_null_comparison' => false, + + /* + |-------------------------------------------------------------------------- + | CSV Settings + |-------------------------------------------------------------------------- + | + | Configure e.g. delimiter, enclosure and line ending for CSV exports. + | + */ + 'csv' => [ + 'delimiter' => ',', + 'enclosure' => '"', + 'line_ending' => PHP_EOL, + 'use_bom' => false, + 'include_separator_line' => false, + 'excel_compatibility' => false, + 'output_encoding' => '', + 'test_auto_detect' => true, + ], + + /* + |-------------------------------------------------------------------------- + | Worksheet properties + |-------------------------------------------------------------------------- + | + | Configure e.g. default title, creator, subject,... + | + */ + 'properties' => [ + 'creator' => '', + 'lastModifiedBy' => '', + 'title' => '', + 'description' => '', + 'subject' => '', + 'keywords' => '', + 'category' => '', + 'manager' => '', + 'company' => '', + ], + ], + + 'imports' => [ + + /* + |-------------------------------------------------------------------------- + | Read Only + |-------------------------------------------------------------------------- + | + | When dealing with imports, you might only be interested in the + | data that the sheet exists. By default we ignore all styles, + | however if you want to do some logic based on style data + | you can enable it by setting read_only to false. + | + */ + 'read_only' => true, + + /* + |-------------------------------------------------------------------------- + | Ignore Empty + |-------------------------------------------------------------------------- + | + | When dealing with imports, you might be interested in ignoring + | rows that have null values or empty strings. By default rows + | containing empty strings or empty values are not ignored but can be + | ignored by enabling the setting ignore_empty to true. + | + */ + 'ignore_empty' => false, + + /* + |-------------------------------------------------------------------------- + | Heading Row Formatter + |-------------------------------------------------------------------------- + | + | Configure the heading row formatter. + | Available options: none|slug|custom + | + */ + 'heading_row' => [ + 'formatter' => 'slug', + ], + + /* + |-------------------------------------------------------------------------- + | CSV Settings + |-------------------------------------------------------------------------- + | + | Configure e.g. delimiter, enclosure and line ending for CSV imports. + | + */ + 'csv' => [ + 'delimiter' => null, + 'enclosure' => '"', + 'escape_character' => '\\', + 'contiguous' => false, + 'input_encoding' => 'UTF-8', + ], + + /* + |-------------------------------------------------------------------------- + | Worksheet properties + |-------------------------------------------------------------------------- + | + | Configure e.g. default title, creator, subject,... + | + */ + 'properties' => [ + 'creator' => '', + 'lastModifiedBy' => '', + 'title' => '', + 'description' => '', + 'subject' => '', + 'keywords' => '', + 'category' => '', + 'manager' => '', + 'company' => '', + ], + + /* + |-------------------------------------------------------------------------- + | Cell Middleware + |-------------------------------------------------------------------------- + | + | Configure middleware that is executed on getting a cell value + | + */ + 'cells' => [ + 'middleware' => [ + //\Maatwebsite\Excel\Middleware\TrimCellValue::class, + //\Maatwebsite\Excel\Middleware\ConvertEmptyCellValuesToNull::class, + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Extension detector + |-------------------------------------------------------------------------- + | + | Configure here which writer/reader type should be used when the package + | needs to guess the correct type based on the extension alone. + | + */ + 'extension_detector' => [ + 'xlsx' => Excel::XLSX, + 'xlsm' => Excel::XLSX, + 'xltx' => Excel::XLSX, + 'xltm' => Excel::XLSX, + 'xls' => Excel::XLS, + 'xlt' => Excel::XLS, + 'ods' => Excel::ODS, + 'ots' => Excel::ODS, + 'slk' => Excel::SLK, + 'xml' => Excel::XML, + 'gnumeric' => Excel::GNUMERIC, + 'htm' => Excel::HTML, + 'html' => Excel::HTML, + 'csv' => Excel::CSV, + 'tsv' => Excel::TSV, + + /* + |-------------------------------------------------------------------------- + | PDF Extension + |-------------------------------------------------------------------------- + | + | Configure here which Pdf driver should be used by default. + | Available options: Excel::MPDF | Excel::TCPDF | Excel::DOMPDF + | + */ + 'pdf' => Excel::DOMPDF, + ], + + /* + |-------------------------------------------------------------------------- + | Value Binder + |-------------------------------------------------------------------------- + | + | PhpSpreadsheet offers a way to hook into the process of a value being + | written to a cell. In there some assumptions are made on how the + | value should be formatted. If you want to change those defaults, + | you can implement your own default value binder. + | + | Possible value binders: + | + | [x] Maatwebsite\Excel\DefaultValueBinder::class + | [x] PhpOffice\PhpSpreadsheet\Cell\StringValueBinder::class + | [x] PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder::class + | + */ + 'value_binder' => [ + 'default' => Maatwebsite\Excel\DefaultValueBinder::class, + ], + + 'cache' => [ + /* + |-------------------------------------------------------------------------- + | Default cell caching driver + |-------------------------------------------------------------------------- + | + | By default PhpSpreadsheet keeps all cell values in memory, however when + | dealing with large files, this might result into memory issues. If you + | want to mitigate that, you can configure a cell caching driver here. + | When using the illuminate driver, it will store each value in the + | cache store. This can slow down the process, because it needs to + | store each value. You can use the "batch" store if you want to + | only persist to the store when the memory limit is reached. + | + | Drivers: memory|illuminate|batch + | + */ + 'driver' => 'memory', + + /* + |-------------------------------------------------------------------------- + | Batch memory caching + |-------------------------------------------------------------------------- + | + | When dealing with the "batch" caching driver, it will only + | persist to the store when the memory limit is reached. + | Here you can tweak the memory limit to your liking. + | + */ + 'batch' => [ + 'memory_limit' => 60000, + ], + + /* + |-------------------------------------------------------------------------- + | Illuminate cache + |-------------------------------------------------------------------------- + | + | When using the "illuminate" caching driver, it will automatically use + | your default cache store. However if you prefer to have the cell + | cache on a separate store, you can configure the store name here. + | You can use any store defined in your cache config. When leaving + | at "null" it will use the default store. + | + */ + 'illuminate' => [ + 'store' => null, + ], + + /* + |-------------------------------------------------------------------------- + | Cache Time-to-live (TTL) + |-------------------------------------------------------------------------- + | + | The TTL of items written to cache. If you want to keep the items cached + | indefinitely, set this to null. Otherwise, set a number of seconds, + | a \DateInterval, or a callable. + | + | Allowable types: callable|\DateInterval|int|null + | + */ + 'default_ttl' => 10800, + ], + + /* + |-------------------------------------------------------------------------- + | Transaction Handler + |-------------------------------------------------------------------------- + | + | By default the import is wrapped in a transaction. This is useful + | for when an import may fail and you want to retry it. With the + | transactions, the previous import gets rolled-back. + | + | You can disable the transaction handler by setting this to null. + | Or you can choose a custom made transaction handler here. + | + | Supported handlers: null|db + | + */ + 'transactions' => [ + 'handler' => 'db', + 'db' => [ + 'connection' => null, + ], + ], + + 'temporary_files' => [ + + /* + |-------------------------------------------------------------------------- + | Local Temporary Path + |-------------------------------------------------------------------------- + | + | When exporting and importing files, we use a temporary file, before + | storing reading or downloading. Here you can customize that path. + | permissions is an array with the permission flags for the directory (dir) + | and the create file (file). + | + */ + 'local_path' => storage_path('framework/cache/laravel-excel'), + + /* + |-------------------------------------------------------------------------- + | Local Temporary Path Permissions + |-------------------------------------------------------------------------- + | + | Permissions is an array with the permission flags for the directory (dir) + | and the create file (file). + | If omitted the default permissions of the filesystem will be used. + | + */ + 'local_permissions' => [ + // 'dir' => 0755, + // 'file' => 0644, + ], + + /* + |-------------------------------------------------------------------------- + | Remote Temporary Disk + |-------------------------------------------------------------------------- + | + | When dealing with a multi server setup with queues in which you + | cannot rely on having a shared local temporary path, you might + | want to store the temporary file on a shared disk. During the + | queue executing, we'll retrieve the temporary file from that + | location instead. When left to null, it will always use + | the local path. This setting only has effect when using + | in conjunction with queued imports and exports. + | + */ + 'remote_disk' => null, + 'remote_prefix' => null, + + /* + |-------------------------------------------------------------------------- + | Force Resync + |-------------------------------------------------------------------------- + | + | When dealing with a multi server setup as above, it's possible + | for the clean up that occurs after entire queue has been run to only + | cleanup the server that the last AfterImportJob runs on. The rest of the server + | would still have the local temporary file stored on it. In this case your + | local storage limits can be exceeded and future imports won't be processed. + | To mitigate this you can set this config value to be true, so that after every + | queued chunk is processed the local temporary file is deleted on the server that + | processed it. + | + */ + 'force_resync_remote' => null, + ], +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..44fe9c8 --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Below you may configure as many filesystem disks as necessary, and you + | may even configure multiple disks for the same driver. Examples for + | most supported storage drivers are configured here for reference. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..d526b64 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,132 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => env('LOG_DEPRECATIONS_TRACE', false), + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Laravel + | utilizes the Monolog PHP logging library, which includes a variety + | of powerful log handlers and formatters that you're free to use. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", "custom", "stack" + | + */ + + 'channels' => [ + + 'stack' => [ + 'driver' => 'stack', + 'channels' => explode(',', env('LOG_STACK', 'single')), + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => env('LOG_DAILY_DAYS', 14), + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => env('LOG_SLACK_USERNAME', 'Laravel Log'), + 'emoji' => env('LOG_SLACK_EMOJI', ':boom:'), + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER), + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..07342fc --- /dev/null +++ b/config/mail.php @@ -0,0 +1,116 @@ + env('MAIL_MAILER', 'log'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers that can be used + | when delivering an email. You may specify which one you're using for + | your mailers below. You may also add additional mailers if needed. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "resend", "log", "array", + | "failover", "roundrobin" + | + */ + + 'mailers' => [ + + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', '127.0.0.1'), + 'port' => env('MAIL_PORT', 2525), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'message_stream_id' => env('POSTMARK_MESSAGE_STREAM_ID'), + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'resend' => [ + 'transport' => 'resend', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + + 'roundrobin' => [ + 'transport' => 'roundrobin', + 'mailers' => [ + 'ses', + 'postmark', + ], + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all emails sent by your application to be sent from + | the same address. Here you may specify a name and address that is + | used globally for all emails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..116bd8d --- /dev/null +++ b/config/queue.php @@ -0,0 +1,112 @@ + env('QUEUE_CONNECTION', 'database'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection options for every queue backend + | used by your application. An example configuration is provided for + | each backend supported by Laravel. You're also free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'connection' => env('DB_QUEUE_CONNECTION'), + 'table' => env('DB_QUEUE_TABLE', 'jobs'), + 'queue' => env('DB_QUEUE', 'default'), + 'retry_after' => (int) env('DB_QUEUE_RETRY_AFTER', 90), + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => env('BEANSTALKD_QUEUE_HOST', 'localhost'), + 'queue' => env('BEANSTALKD_QUEUE', 'default'), + 'retry_after' => (int) env('BEANSTALKD_QUEUE_RETRY_AFTER', 90), + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => env('REDIS_QUEUE_CONNECTION', 'default'), + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => (int) env('REDIS_QUEUE_RETRY_AFTER', 90), + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control how and where failed jobs are stored. Laravel ships with + | support for storing failed jobs in a simple file or in a database. + | + | Supported drivers: "database-uuids", "dynamodb", "file", "null" + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'sqlite'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..27a3617 --- /dev/null +++ b/config/services.php @@ -0,0 +1,38 @@ + [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'resend' => [ + 'key' => env('RESEND_KEY'), + ], + + 'slack' => [ + 'notifications' => [ + 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), + 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), + ], + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..f0b6541 --- /dev/null +++ b/config/session.php @@ -0,0 +1,217 @@ + env('SESSION_DRIVER', 'database'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to expire immediately when the browser is closed then you may + | indicate that via the expire_on_close configuration option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => env('SESSION_EXPIRE_ON_CLOSE', false), + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it's stored. All encryption is performed + | automatically by Laravel and you may use the session like normal. + | + */ + + 'encrypt' => env('SESSION_ENCRYPT', false), + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When utilizing the "file" session driver, the session files are placed + | on disk. The default storage location is defined here; however, you + | are free to provide another location where they should be stored. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table to + | be used to store sessions. Of course, a sensible default is defined + | for you; however, you're welcome to change this to another table. + | + */ + + 'table' => env('SESSION_TABLE', 'sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using one of the framework's cache driven session backends, you may + | define the cache store which should be used to store the session data + | between requests. This must match one of your defined cache stores. + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the session cookie that is created by + | the framework. Typically, you should not need to change this value + | since doing so does not grant a meaningful security improvement. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application, but you're free to change this when necessary. + | + */ + + 'path' => env('SESSION_PATH', '/'), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | This value determines the domain and subdomains the session cookie is + | available to. By default, the cookie will be available to the root + | domain and all subdomains. Typically, this shouldn't be changed. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. It's unlikely you should disable this option. + | + */ + + 'http_only' => env('SESSION_HTTP_ONLY', true), + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" to permit secure cross-site requests. + | + | See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#samesitesamesite-value + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => env('SESSION_SAME_SITE', 'lax'), + + /* + |-------------------------------------------------------------------------- + | Partitioned Cookies + |-------------------------------------------------------------------------- + | + | Setting this value to true will tie the cookie to the top-level site for + | a cross-site context. Partitioned cookies are accepted by the browser + | when flagged "secure" and the Same-Site attribute is set to "none". + | + */ + + 'partitioned' => env('SESSION_PARTITIONED_COOKIE', false), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..584104c --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,44 @@ + + */ +class UserFactory extends Factory +{ + /** + * The current password being used by the factory. + */ + protected static ?string $password; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => static::$password ??= Hash::make('password'), + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/0001_01_01_000000_create_users_table.php b/database/migrations/0001_01_01_000000_create_users_table.php new file mode 100644 index 0000000..05fb5d9 --- /dev/null +++ b/database/migrations/0001_01_01_000000_create_users_table.php @@ -0,0 +1,49 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + + Schema::create('password_reset_tokens', function (Blueprint $table) { + $table->string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + + Schema::create('sessions', function (Blueprint $table) { + $table->string('id')->primary(); + $table->foreignId('user_id')->nullable()->index(); + $table->string('ip_address', 45)->nullable(); + $table->text('user_agent')->nullable(); + $table->longText('payload'); + $table->integer('last_activity')->index(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + Schema::dropIfExists('password_reset_tokens'); + Schema::dropIfExists('sessions'); + } +}; diff --git a/database/migrations/0001_01_01_000001_create_cache_table.php b/database/migrations/0001_01_01_000001_create_cache_table.php new file mode 100644 index 0000000..b9c106b --- /dev/null +++ b/database/migrations/0001_01_01_000001_create_cache_table.php @@ -0,0 +1,35 @@ +string('key')->primary(); + $table->mediumText('value'); + $table->integer('expiration'); + }); + + Schema::create('cache_locks', function (Blueprint $table) { + $table->string('key')->primary(); + $table->string('owner'); + $table->integer('expiration'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('cache'); + Schema::dropIfExists('cache_locks'); + } +}; diff --git a/database/migrations/0001_01_01_000002_create_jobs_table.php b/database/migrations/0001_01_01_000002_create_jobs_table.php new file mode 100644 index 0000000..425e705 --- /dev/null +++ b/database/migrations/0001_01_01_000002_create_jobs_table.php @@ -0,0 +1,57 @@ +id(); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + + Schema::create('job_batches', function (Blueprint $table) { + $table->string('id')->primary(); + $table->string('name'); + $table->integer('total_jobs'); + $table->integer('pending_jobs'); + $table->integer('failed_jobs'); + $table->longText('failed_job_ids'); + $table->mediumText('options')->nullable(); + $table->integer('cancelled_at')->nullable(); + $table->integer('created_at'); + $table->integer('finished_at')->nullable(); + }); + + Schema::create('failed_jobs', function (Blueprint $table) { + $table->id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + Schema::dropIfExists('job_batches'); + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2024_05_29_014227_create_transaksi_table.php b/database/migrations/2024_05_29_014227_create_transaksi_table.php new file mode 100644 index 0000000..2a190fe --- /dev/null +++ b/database/migrations/2024_05_29_014227_create_transaksi_table.php @@ -0,0 +1,29 @@ +id(); + $table->date('tanggal'); + $table->text('obat'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('transaksi'); + } +}; diff --git a/database/migrations/2024_05_29_014312_create_proses_table.php b/database/migrations/2024_05_29_014312_create_proses_table.php new file mode 100644 index 0000000..3bd1b2a --- /dev/null +++ b/database/migrations/2024_05_29_014312_create_proses_table.php @@ -0,0 +1,31 @@ +id(); + $table->date('start'); + $table->date('end'); + $table->double('min_support'); + $table->double('min_confidence'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('proses'); + } +}; diff --git a/database/migrations/2024_05_29_014451_create_itemset1_table.php b/database/migrations/2024_05_29_014451_create_itemset1_table.php new file mode 100644 index 0000000..8bd83bd --- /dev/null +++ b/database/migrations/2024_05_29_014451_create_itemset1_table.php @@ -0,0 +1,31 @@ +id(); + $table->string('atribut'); + $table->double('support'); + $table->string('keterangan'); + $table->foreignId('proses_id')->constrained('proses')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('itemset1'); + } +}; diff --git a/database/migrations/2024_05_29_014456_create_itemset2_table.php b/database/migrations/2024_05_29_014456_create_itemset2_table.php new file mode 100644 index 0000000..6b16511 --- /dev/null +++ b/database/migrations/2024_05_29_014456_create_itemset2_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('atribut'); + $table->double('support'); + $table->string('jumlah')->nullable(); + $table->string('keterangan'); + $table->foreignId('proses_id')->constrained('proses')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('itemset2'); + } +}; diff --git a/database/migrations/2024_05_29_014501_create_itemset3_table.php b/database/migrations/2024_05_29_014501_create_itemset3_table.php new file mode 100644 index 0000000..2f66851 --- /dev/null +++ b/database/migrations/2024_05_29_014501_create_itemset3_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('atribut'); + $table->double('support'); + $table->string('jumlah'); + $table->string('keterangan'); + $table->foreignId('proses_id')->constrained('proses')->onDelete('cascade'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('itemset3'); + } +}; diff --git a/database/migrations/2024_05_29_020022_create_confidence_table.php b/database/migrations/2024_05_29_020022_create_confidence_table.php new file mode 100644 index 0000000..d590c3d --- /dev/null +++ b/database/migrations/2024_05_29_020022_create_confidence_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('items'); + $table->string('keterangan'); + $table->string('confidence'); + $table->string('lift_ratio'); + $table->string('korelasi'); + $table->string('itemset'); + // $table->foreignId('itemset2_id')->nullable()->constrained('itemset2')->onDelete('cascade'); + // $table->foreignId('itemset3_id')->nullable()->constrained('itemset3')->onDelete('cascade'); + $table->foreignId('proses_id')->constrained('proses')->onDelete('cascade'); + + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('confidence'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..6c277b9 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,25 @@ +create(); + + User::factory()->create([ + 'name' => 'Test User', + 'email' => 'test1@example.com', + 'password' => Hash::make('test') + ]); + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4e934ca --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "axios": "^1.6.4", + "laravel-vite-plugin": "^1.0", + "vite": "^5.0" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..506b9a3 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,33 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/assets/css/icons/tabler-icons/fonts/tabler-icons.eot b/public/assets/css/icons/tabler-icons/fonts/tabler-icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..ed553716250c1d30ed28dc502647cb1e6a96966a GIT binary patch literal 1521944 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

  • pPcLh#mv$wh8lD)xRC>N&4 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 kyA`OWt+)5d$vW-TOfU+aMyjh_4Nrbi=05u^HJ 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ξ;env2kwo?L$A#$LE!MF$P-5YtJ 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

    XpSO_KNCt|hD+XE6 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

    ToEjfU3N=*VFgUXz#?cqX)-o&rcx)v>7-8#d_{l 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%0AFu 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%0Au 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%0A8X6N#93 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 ^(;38VQ@;%4w6YJnERa(f;-r<`!wA5xn zQA9`TrjXbVyAans!5oJkX2v4C2+6lFl+psh$7{At9|}XO(u5AqM=(bzvBC@-+RawY zhP@Tqipy4JqaPBxqw5*2U)8-;d$YsJ+Y}-nZeg4{RL+yTSdyRA;2U;4yRw?rO0I8f z3)K|aT)5y0#b(*;cNxT~RLx3Qn^v7YiPTS;j05zC_CEG*+Wf3Z7aoBAw{i>9wjg!?~%PF8*5h)I(;n`>VG82Ue`Rhn7p`FFz>THUuaN% zzF2;z3%gq4SD|M!jr6kp^Z0nSgAdln)%rYovBv#%kiOQ>S;blm;`bM9^Fp(npc$qi zg5Xfe6@2xaaVxRx4t`Loi0Uk@PI{7{+CLRUsjXd_!u zw*rZD!ELX%nnQz;CZoU{BmqL&jpknOx-%8)r+?eAN=enx-|>zjrTOZpGaLdittB8` znM^_c&~+CKqgEa)T|0g1>GtZttDaqN1&RFX>i7R?{dseXbGPH?rMDozc138xB;T32 zc@1!u~^v_mqeV z-W2LFR>O3jb>YGVxdd5GGtu8a_l&vklD(;}0xU7Ia|G7PC6SX-uD+Q6l&6UKMIa4Q z0wwC2@z`9VL+&NvSKu`PU~~7(#H3=AeF>jT?m4x0PDkz2jVciU<}sKotcE`%o-`fD zWh&S5z--Z@0;owmJM%u6+&`%1BOG8VZ}ordyuQ zzAUoqOf%Uj0pA)jrtM7kswnfZxyL1k6AhUxauovdvfWavy3`q0KxjU3Kf%aLn&tjN z6TVsG%_NzJ7unQn=h>ZJp<3|P_B~z(qA)Y)M~!y92GfVoS-O5R3FlM2?6T&87o34= z#nd+8m3Hc-Q%jCtu!<;Y;S|{NYuCY_SqI~30yp!4B^JESV06vK;-C&szB%>3$uWz3 z5L5qia>wm?&92VB?Bae11Ey=9X_8YCy!O}lKxyJ3Udjoafd$R=a<(bkYHT(cry(O@ zIc4osfYbjsYuBU>cOw<)S7vJ2Z2es5N0x*=kk^#A$9Z7N+WLpUj%}&L(a4{vwhO-~ zk0l3}EQT$ls?XcfxSVM)%L~iNLybWqGa>Fu?W`$D~7;Uc-d!{jH z0jd6`;Yw2O8Npx?!%adsi6LM)_y}p9A2vd12qPk)-3bw(=tRNCg#@7I9Q;Pf!99nN z&%xj}S+%W>%#>))455G&H*dM6B*x8|(05>keyO`OWT(=V^lFY5^p;rs^&2a&9?l~T zXf(#?=FloV_|>3PVrIZWKR}1|5-ka6K|uJLkii9r=6Dalw_y~Am4zyO)|E*$D0SF~ zi%9ik5drS)2*N>v8g=L||2F#A8*|?=_x*FfH21-|f2BOy;bzIBSLWblai}e*(?{Z-!IX9G!rLcZ9z+ldfqWv|CQ>JAw->_|l2B*5^!eC4|~ zdngZ_y$b$TD7W%Yu&=hWWGt!-f(lcZq{%cYP2&B|xYh#E;y@p2F-`+DxgENkVa6-# z_|S5*y_+tEj==4iQ6S@JY|c#8{XYoKTP6suUe_k*X`|zD8?BM;t-4R!isDAA*$4| z{xhs|F!B7>5|P;0phL>=4{BV~;p*z%Rc<$J)sa|6Bcri6Zcggs>A2y+nh9@q*srXu zox0&^*Pq%1ybH(&9%p80p)yZI^@Ovhf7YjG*$ziH2c1fxf8$l#o6p|t6?NmlEyE+b zhM}=X|Dyrf(7f@2=T4^RsII$qx!D?i(|o5!aM0Wde4T|t-0$r#%-2iqUBD>3dfRgs zD`ls=V2nve3{RZ}KL$tXCVA_RG1L0HnKk8BG_wt1mXbZL;u!0AxcFjEDv?m(^O#ks z>y8(#Pe|x=Jj}-pW3!SD`m0OB5|e|ia=j8agCvX!|4KsI_vR#H+QHT%idenL08a8&W2u+WL?^}VJ! zig%WSM8;G7QUe?z@`GV#FhAPdUm0FlMj*w*QizvD2O?id`t7au1O^hFth|l}ay^|N zF7{6^u8vOkowBu1<)l(9l$Yjrs;$}}>9tFpS3RT?du=cD&G0uvx@A;LG^=mDbax^0 zp`rq?40qOxcc%yvz>YSvugrIS5B&E3Z0?_5?z{43SJpHECyoOXf^!uFRoFT7U9+T} zrB}!+S?0rJMB=4z+8+5X<-Ww?W*JJJ&+czNa&(+!yV5R`{AZX2)BV)0oP)P|*lYFn zHjoT3AyWvP`6^-*V9>e=8G&Egej0(J?>u3DXIerCKrck(qatS+lTf7fTH{=rLPX|O zP}L%kSVmYwk8e1xEjp-LY;0#^eVk$pj1USuNQa^t?6_`IAGdrQ|Zuk5a+J)42QYKZ-hF5VnhHMiGU_ifuY zy?)&7z;?c}I2hH^C`J6PWq>dv?(%Wbl9w8(#z)0z8Box=eA+u|-P)+)Zmo`=)&oPU z)!o=%Dtiy(s&4C9*KU^$2%2NB@Ot*A9el9S+-{0f5}))jl|NP(uc!-HqnE)9d;SuNOV|V)W(fN}XifUz|SLY^s(X&!&nt z(KTLZ2aOc^z0Il0qLv>vjar&C7JQH)JwZ2b9c5CdZ|FHUp4wV^P%cI99)^z+vag-Z zy-{;C+&gvkDX(O{aNlW^Dt-uQ<-=IfL*!FYx4tv!kx*SkY|INLt0Yp6G2T9ATbs=H z{wSFHBlap~Tl^z=lz0tkNFDl+JbWGVO0y!up-E;Yb|RbNB&NHeS0N^ z2D21;WIG(6^MpJ?or^!Ob<=|{BJwNuAOcw`=x=#dY!Yz`_bo1I_aCDLx%(|vY)hKN zAcVBHf?8N_bfQ{36AVIex_2u7?Cp#*aoii#IwW@|lO-`7-7(6&=3>;{-9LXThs(w- zSM9F#l0iv7*iS1YQ)u=U(GNJx!y|Z;P5t1W6sqnbLWuX=OD?2-A&&drj&|X~{Svnb zUSIwkHIa?EHINrCIgDBoc?9sAr__@F92yBllNrhTHhX@SZfD{iQn}BnO){dL+mk&7 z8Z7sylto?_JJHR4tKPb8iWClQ5u&$gg~JZ|fve-i;YK-zsS?W5f*Xv_Y>#^FWMVfX zM7U99sBY^GKe@_T?hJ9!CB`#5=j`7oR!+;!owEz8Non)NJDXEcwse|T6)HuLyDrrk zR;)#*8S3bQZFd}IHKIyUuWM~kcjF|wSVEUuhp8-rdU^zso{{+=YFcz_eA`3$LHk4V z;0?@2PE$=AI2w?&X|@6(5h}d9qz-@n*$|tYIi;gzWSxbqD#% zM_;o{lmdj@RzYDyRO;r*>}FY|)F!0Bw{3BgoLVbYd95+?2LmZf1c+=X;#1*xmfe(B zoisTQggz=ZaE2Sj=5VL%GcVs7GDl)H(^8xApZ3=qVKoWpEIQB*1q*9YC8>606|}|0 zjV_epXg9+d2xylC&Il{W79M;HXT~l87#Tt&g#OnZcN~0jP^K#)+I8+?sX-AV`(A%8 zDqKRlW_Zc(dIM_AP}P@cW4$+QEr5&^Y9lKN+UCJus6H9J!lXKm8m2{A0!d6zDvn6m zC#JhQKs~V<7}hJ0RwSN&cvvt3?-LLN>JU_VjN7Z);okQf)T{&H#|EhZd z2BzIX9ExS!PBqPC{EyaN}eXqC{&wI2N7>U(K zyJ#04c`YP1e?iqO&dF}qw)kOr5ZBTuRS$fY^=NFQ4alVbduXaBof6Sm?pt|8c{hc>k z9*5bEgXjund6Y#g?I~!)gH^Iu%m;Y$iu-1_cL(d?CdKKus9~OTJr?f<6s z&r&_J;H$5hw>}Z`B~x^)N*R{k;@W7r<2wPeMs=;&X{L3fP^iMisp;V2L$91TejD8f zn=9uYe8Q#2O1HzVv}%6rY5zqen6-mHU>4+>tDTDWZ!48AY4xI`J#iZlP%CxI)Ibf3 z!Bzjyevt~0Y1TBf^7uykw&=ar8oya;x=<7+B+j_qsDvmy?69=ONW0BK5^hwHHVn|m z3_BRzQ*R1R4eXL6jQSe~J3bIhUS2EiExP)5YI-q*wisq#TYF%0twqMzIQV7#pZ>Gp zcT2|Aw^*k3x4=>@f6k?z?OioqD5q$_+Xs75NB2CJo|Ms!41E1Z&K zv~nVrJ!KE`sKgR*9-_9hLj+Nop2V6#1-Udys=4KyzHMZM7B-a1@Z?<1-XfY&w8^$B z>y}#tma(PSkXSgDcC$d0W(u|f)F$sPnO-&vq-#Ij9hmEQe7n;yORqXj;l;C^%IULb ziu9@JXIo)FPwkc3-obNkxPb;;+UcZB#@%qk-Q%YY+m#B%zL!5qsy*Oh7Z2j9#1Rnvx3n%tBzR;$#d@qlt<(~quj#|6^M8sgpjk6t568AsTH=YtZw zn=aIx8uE#9?~tC|++(r3?e1 zzfzaIMp<7Lzf#sY%n-3uVK2|U$vzAja}j;3AWO(qoA)pymseC9^YDbkEX5~VU=)bp zl|hLd+fn6oPlzauyCd_9*Lq>6fJh*#IBITg{GAfn#Mr!XncAdQ9daGP0d&pvl^br* zJrIDkQemn+qtX#-Dc^K9dsX_9GAe0W-m>p8rb_qEF4KCUgvzrK?>)0A8A=K2>%GOW z*6S8XcGx@84WxKS$sUZvAdE^~{ka{paq#cz*`v+Zyb4-X&FIFS{Y=JK(R)TPw0RR% zm7Y!F&My@9nWfOp`HHi(Q|t`Xtp&3*u4!7cn^lK(o!Soi9rB9+Nkrgo1k0{`Z<_Nd zitdLOM$`Q+DlS38>>$zzVL3pya$&v&xj9->)L9hNCYzD@Dg9G(t4zqed+uMLNIt`y zsCA=NQN2 z>=cv^8jj3ii`2Lt-js-59Wxv?-nT=tQT=hC0zDJa#@jb;Nf@K1pSo;;38_1Qy1k zkhqz#)W)UY5e?;)8q~_gz`@g8y}l041?NItK3nAq+Ku3y-1YT>iQ1$4=JCnfyWO>( z0k(x&Toqtk_bK}A9pJhZp2bx%dTZTox!~q}Co{kER{B7{HTOG*_8}`$d0ae??0%7p zqxy3elycT8%78FLGIea0RhH6`7z*i#3n60PK4+!l!hgToqPQ!Ox-ez|Cm=)!l0gKwE4ou?iBU z-Ne?lwFU^!0=`fea{+D#;|=yws5dgZL$yfk!>)f+@u57f&gKD&MelSGN^aOhUc;=5 z@7qIO5YSD#RVdU#!A)oYbUe!dDAFZ|{uMaVy4}f0!1k!rm8=fd)3z#{ft2+WMw4z= z*`raeLfLw)xSh0oG3QB9*e9C1pPHM@T?g*z@593S?%bwSY>_PEk=+fp$D{jVGKT>y zi&NZ;Ws?5L%N)8EN-0M_sS}`Z^72S^I8mvR_#UwkWrrDa2JUJPlN($iP=U*ovbno6 zeFP`tc(mM1{WfMnIX_6WI=C&3-I!F<1gwt5l#!vzoXTQ=t|AWKfY8>|y@gbRQsJo) zqmqqkQk(Y8fXtFVimdfdgn}2Yb)sc>c{~E-8QGuw(7eStMxOAH?xm8A(wl*wk6AEG zQzSZY81Xw+bn%<55GfLTC*GvlOuItqii+R+DlzMy+DXrY*aZ8k&+*yZ>0cT zxOM|!YW;Y;$<}`sZ@wE==HHn6?L(jPc*UH@XbRhwn1PrLZbY)*%+bu8hy0W$Eg2+S z3e7FZ;pc7nLrctoo>J$9eIfo`mBe1;dlE=dx%9GJ>s!oNHK4m>9^7YOz>nd^|tP zia(M3%*)GZjf6=`W3b0$OaYG~KQ1oDwMUs9 z*Wxl#XuTke8)?%UNNovLZzlO^rTA1N+(uNQrdMK*i~Atk^)xV{fOM&$P}oqZb)z{+ z8=fvXCuyt!KdMI$2JFrM&)%DW*>;w7zP09IuXzt^?Rl!IUGsQO)tS#pax#(x$T=a& z2_!+L1VsTEg%B=6Ac#Wa?*wtz6WoEnHKrNcGqr(3G zB`w$2cabB?%}VHwO2I(v&bFJ+bcX@dU&de^y21_}8i%g%lu5jH=n5;gRw>OX^F>mmv|L97 zwS2AN`Z(#nS$uSD?ETl~ew1nC-|*O5<}$1LsEU86M=MWQGO8+*BZ(YwLF6}9T!8w@ zAGSpiDP6QD&hUTd5Zh04WA!i$62~_!MqvguYpbX=!Vtm@ZJP>&oKwozC6Y6p`DQimFOz32BHKPT^L6oI!CmfF>$lX5) zQrV3B`)iO)5z9}NMpAYelW)P$4Hg#%(%qvllUMYF_#rQ27VM86O2aqE6M?_y+n7k7fmS=j`>@cjj#~gypcP{Ht|6#%Z;Ti$8v(14^&z+`8SM=OF_20rwZa z1O-2)DOke^Jp1x%#i3+K`0mWEPyfd=`+lW6%F7g;({n~Dj6r9n)F-% zj|oE2Dwu?$88YwFdc*_F!bflpzGBe(C!=Wixw^Hrni(`NGSvca$1!7rzC{`l4Y!)s zt>D~lwKJwiErc9U zwZ?lzvAtypr$;5(U1VN-=ILpN^3FS-KrYj@WtX8Q`Y?-$aV+N!bFjJ$F{|FFQ&@iD z2`vcj-RPyzQ6y`};6b&u=WEVGnwP=|Z?@eJzfq(4h)Gs|^xtYs02OIrFX)2KyZsn2MZ@?li=mY_$R7GZ5Y>=aU0i{%n8SJi)z2N1>1AYzVk zHXrr}d9^iP<}9M&`jldZ=3!9*Zm+hs)VCT*hdvAQ=$J_`q&sY{(rlF2PKwL!XXubO z?OMG{>*`?J&d=xecspz{mi%%9{$Lt23-404!y3INHs z4yl7n0gtn~ZX)D}@|z|k8$djRVv%O$jlR8daCYMKs;bKwh|%8InP@+^Vo!RtxLJ!M zW*jIslm@j+)!fFnnxEw8n{VeV47+w?XN9+NRtFk<$#1_n9|Mray^e{{^+nH(6it^f zCI?goFZf<;Yzk>|-(RUTp@?1So1HLp9fO<46{eBdrVgNfRa~(yax_Ojql-p*WbS_@ zYx~<;sEssuZ^|@;TADgN*J@U{q`Rj3TGmk&_CO)1eR_LtAB1JSFSb)qdxx9e1G7B<#^dXWOZ; ziPKp`(WFJ^)0OAE1dQNHtp87Hu1nq!jI%+I#_(xEq7&daQ4nws% zqfUi%Aubl*7^I#J)5)Z>7`M#365WK?gbs0xVhAYZZf4%wSs^ud`ttg9vIZtXs2A7O zooZ+$&3F(L{rV(q!@>tgbmR-iz1=@?;lky2FJCaW^>o9k--VWDLjkQ(H3eGlw7`#I zV$#44TiGxinBVl4RLecCjwyG+{JwJ}5bFV;vR6~D&%&T)yX~aa&qnsSJ9Dr)Rzjb! zL&R7C^dpcyIzLq&`@%s`a;03UdtD$m@b_RB_%#hWswz55Sx%)T1p_WOkefy(XM1Yo zHmF!D6)Jz4!StpoXj+w^E+JYM-1@9q)u%StpfOSYGQQ`wRfU8jUdMX{fUJx7`6go;5 z;VL6h`gY>+{WtJp@QRK`ekkxc`gxsvM00~gAeNiH01fCHb+*j61om0VqZTbo3<9D6 zR^PI&I|F-}xaI(@-nt;>81xSf{b@=??c%YXAEqIgayqzawGBhFu~2V-IZA0G=1lUW z!~5wpMehzfEPY6L(&#MpT8Uj2KCD`@)uj|ACf^^^04@?)KltN|7Z08vHBjcAWYG-9 zQEOCd9vfHAZVd)+eHiL;=`UvYnnpd$q`{X6$Y`vdJa+n)+mD>uwfhmn01PA6-ebE9 zG2N#WdLXtuIiRW}q z24UtTuUV@_5I&^E1)875kMOI2>^>BlLHdacj}n&|{-_;8vlyB{xY(Y2g5U^*LXj6G zI&EkMAr+n3gfO{M5>k`IaDwG{!+lZN&KFK1@Kw9(DaKX#oNwt>q_+YE>rxI*s}$ z&L_P#{6(SHgDbD%rGR3wM@N3HE6>+`JztMMPIR+tEr&aU3`m)1A> z(!P=WMq>a-jTk5Js*UC7c(hQ^T3t(f@c`EVqfNuG4@HmR*PAKXRG4Wm@^PB25@OeC zwp9kzQU2wJ^xq_hb~E|Y_kw->?A)JB*MF)`${=s*SprB^^t+|KnW`*>^H5+_mEl&n zR~5T3Xz3aQS9&DDwCeu4fj>ATwX}dKCIr{)S&D$Y)MZ zGn{IqA2SK|H;1xFk(qIwWSb3|xFg#Qc873})}lhw>#p6=wxrdnQH?XW5SN(1;el+` zi4&^;h_sWo*P{PVxDYiIV%nrs`an(t53>uH-&(Odmp|%M3Jwv{33UiPfSx)e2q@_I zyu;pK`Z^ANrP{HHp9qg>A<7>B>Rv$8%>@;a23V2wE-t8}XJ!=CLf;0j&e%;NCia4z zhx!XNCzgJ?#;7qy#|Y9s19oZqXR2-t|=%t8WF(Y(3>1==m`{ePhkYyN^zb+z4vaf${L zvCMZDz~mo2!iWokm5K(x_6}4D~nlt)x0x)Mg>DXg6hG#9;AW)2tWyy^*py;z+3%%Hkm; z`XkHzdfq-W5A{|6D}$G0oz?!jxxhrie4&-hzhi9D?@@uSw(9tOd-oXyOe8)SzodTV z$l9a=F`|CDU+vD<>+=OWkVbT^65nq@mjd(6i8FQA_^h5ne-wE_-vikf&D@YS#p8|3 z2OjW_`4I$(L0(Ogz`Avz0SA+l#RH>KXE3l`KygReOrlG2|I*%+C*!4WIon(s7DHyg z6^*Q38;qM3JQOEr#9r;LI$lDaw$Oj|g{ZdRoL-M4DP~-7>Kl_2X@`dL(5n_)?v@<^ zIgGN{d7W1qC9SM^f@#9qV@zp*l$Wb@qlhK}m+;VSo_^-RuOq=r6SKcEYD0xe8^W>n z4%g6*{CYBP#*fsXj7dr=)37a`}%@I^u({c#-%5 zl)Wi|hBOn^dxKuWCU-B8;SG3sF~YfYbmmof75in^4N}4TNOO`|w;r|_qg>#Tc>d^U zWzh-r54M`xM}VUJpUWF*u~HqlQsLbDL?~D)>Qlmsm-fH%f1`g!~|LrKTqWVRyO6elyo?1NlQinA zFK2O9XW8xQY(>9RE|igYK>Fbl!e>r8>&@=Cw^lF!m#0m;ZLF^fvqKCU(b1-Kt20Wm z;th}0H+SB&2%N#IlML|^38Y#4gGbtVtwjSwGhcSU|G8_8`d|WuS$~x|E;VkxP2=E} z^e32M-h9P$L0ea?P}mg4yb62n#-d&<({y8_Qf?u$9c4{V4o@>rALkLt78l%;_GSu9%$$okqXE+{DW1iy7rr>R~5OXbE6nDg*%| zCF5GW)tE2D&m&tARGF+qQlinNC1AQz|8%FSrT?0s(RTVdVxA0|ZB*@Tw_d*%F+n?C z`A}1Bx2spD8Iyas?>_uMZ-Y4;^>*Ov3-eT?^-9b;gB@mp6EDtUIP`q4o^AP!(?-<# z8HW%uZeFu4!8`X1Eqm>9Z#+4l6F&rr=k3DIVXd#pj;kO1S{R%-5lG{j0ztqDyiIlI z2j+h0PpyZzwp3pPY@jkn%8<=sG$${W;ME3}15_U=x0!0zqO^Qm`x@@IvacmohpgZ= zJ5KbeQkRR2K`$W_N7PPRoET$Kmy_8_C4MVSH@nPZv&Gf6?4%a;;+h}oH>JX5V_PPf zb<`+9n1}8`!=_1k6HfWn2TPK+4G&K~NeqGak z{WjO&+T@UfPqj{*P+W86x{k^Fzlf;pHDUu%gzPI8QgmXughKBj6vk!yhNwoCk_ON- zQs-k`XfTv7IT$sEVT8b*MUi$5S)41jvUG9JXxdoOi#uC8zN;Gqc;DHmPb+Q1e% zBM*K)>E!vj`$c<;XtgX725o&ihnmH$Lf z{0=ph7cdX>EmBM2h9IU_{}a&?soT%PO;EGQ6!^P)Yy&Z77DNtrnAX#aL|Dpj$S~PHVoga<;#Ik+-k*83|!k&vl3} z+*Ykas-bg3-nygTT3dL=puTgCR;bJWU}vxjz`cs8GcDT;+zupcZY!0HabBhKO*enU zA68WppR9bn=iJquCtFjcS5Ea=l7oQ5>?6h{upRp#dH&kmPt$4n1<65(O_26Rk!Cu% zNF7XX^S0UvrB}ebRiTJyItKTV-dY9Bk*+1RQfi3$zB&WbYf67Wx%)~hm8UD0T~?1* zmCGwjT-q+tfBYj=U`WWozcOMd7h7~47;;{Rd6MNW-_(*-mK|4Sh|3F=QWnomJy>a_ z`)rRnyCE&P^L0XSvIv%4J85Po>D-NP9&;IP+@^NCjILb!5d9BJE?<~xd=Einwu$C?+4onJ8w-^k_SXMN8LmH{MzrC{5 zn|$;7$@!J~>MmpB4Eu(8LMJ2c(bkgYoneRNGoE~LR=hekor9k_GQ9w6M=rpVxm@2# zi4ziiTtWL7$v4_aJuZeFERNCjW3Oh!A4r~mp* z=a)MXQ*90H@;@NqVMM*%W|l&37W*Eb=bG#3jy#Rh{*^Z+OT!#S;Ad795I(xgY&Bw% zq)Je!@3^o=!@W-m>rho(D?&=Dt`aSg;C%@}%YRq&#-Vu0Q)djM$M`mU4OkHd@SWmG^Ed&la=(Tn>O>|~1f+?TU*UuK_PZjJ(!Ox2>uy&=Wj!(BCNk}hux zTfumZR39mn+MS)O*eSpYWb^gP@P_5J{qw!$YRF{JsB!$w=XOrfVtRTT{7xT!`Rlja zWPNplV78BKMc(R7&C%%|GM+EigZX2l{$fu4-^%9wXlr$JBy4n!ow1tMqMc+HZe5|A zz~rBn;!*rP)^}@eIJZfM+@nhS2=+(m5BV6FL{aY&sFd4Tr6E)rQ5JVm)D8#^j?m>( z@;V0IltsS7qP*Of5=tgwAupSL6KU8zV<=m&q5Ydqo{gQWG`K(RuN3iU$uo}OEyfW^ z<}{;y-87rpcN0NcJF5YWZYid5eYgK#?Z9j_<4(u)dEZ+V7ligmU*Nq|7qF94tvsLlN*`fL#wsSi~@<=lHrgI^8uomp6N>J^tg_0}R z&A8V>bTq#rydR9Sw!B*&eCEaLu5YX{R0Af~jDa-Wd~0dARBUvA{F@>6AR}eqZ$aA% z)yJXyIArS%_f@&0i#IY3ma{j`+{yBv^RX7Z>3li0+D;8m&RzDP7?NH={EiKEHhOXXB*SsaVf_fQjgr9>5!> z6UTDSzD$Z-{HtB+uLt_)@QXdI``#02Ry4-NKdIVK`}tjCxU~H0@~PjZt^b1ctuJ@2 zn*Xv_;x<#fz3nY5jx?QW{f8I!1$!d+u`+kJ53APUXB8W$1bHgW%I)E!jiVj3q&SGOEl;t*LzSFpgmkNo!dZ zGW1$51_*;?Ych#@EAoEuBeWweHqu@gM!2hX)QxEtwd1aR@JE*Ak@F&g#CRrtp7s{C z8$82$`>S@AfU$d|0qFuKrh~p;?)z|MNDbTzC8);)23c6ZgA&`#Lw$+tyk5zBDdS3F z$XVcAOo5}&{#+6B5+hc|SumIJ8u^-()F6&RcMatku{DazMI|{zQHlCdKFgT1m5!#$ zt7{bE+ew=3VYjuBHo{bZo_Vc5UP>W@zwQy(7DC#M zB6D4T(NV^Hx@Ka6Y4OkB2-n72p>dJMeDc|QpC6~VAS>{|*ZeL0a}I5{H8C^ zs`Z_wc!X%K{pH1-6GxWLtYG#6yQ}p1A1LfyANG#3YT~M-9_Ukt^5<|IsH#D+I|VH< zDocvcDD77#Ib+)ipH$|V+~26ym~blzj_@zJ)uQ#ORD*_+pR&P^stwIO7Z{#^eznX0 z!Yr)%4a+M470iQs&4z2PEZ+n{HpzU=d|CaWn--&>qFuW0_M3k2bbOaqfqiv6KbhR{ zr9_C`@)n_!6yejHl%3@@nF3@qU_BDrb}+IH24#b0bEC7LOul>>3M_#%x|hG4{Q42P zH7Vm<)c)D$pMB@`0=W3(zxY3bgAYCzINSAiKKt`8eMB>V@ioHa-9zOHeKWa+_o}X&oqb8eD5>Q}lpscS^Kcrb&ZgRN zdsGeYaIhWBQmPn&#sEhz1;R3eH>KB+4Bu0DDj&)+l*}r_a8-KPtReqm_I%p#P-UEKL8bynuzy@$g=_<9{ecYBRvZZQW6P} z1EcZ8lb)!*^GQ!Mo;U~qv6O5hW!v|c-U{t3>{wVDI?-{B@tOrW0X;Nf7{U&)tFqa- zy21U*l(u3i0*Y|en6{U`^h1lnAuh1PyWlRSQP759eUYKu>l1{+bHXBuw8-z%13T<5Hyczz> z-z*^-)XwmGB1{uDnCd8ncQy|BDQcrsQ)#9G*g{(C=6mhXD)7{^JS^NnzbzwL;4Y^Y z7&MnX?fcxY>JUT0DqD+(jbV2gd(!@wXgCxgK5@J`X7CO}U&W~bz#<5&2Ge~>g3!wK zzL&hrgn8d2+V}tIPcsS-Ts#a;%}tk0 zQIRO2Hh>A32oxl~4bCKVNa=U0Ii6w^HW;uF79_JtnYw(O+9rtG3rMbORPuV;a;%2C zc!t4P{o(vGmZ4~^$5F%YCHeT&)?~TEm`&1h-ofVt#E{n0DD8<5WA`ba5mf*iLR~R< zkhYJ=tUA>O3Fp`eNFm_Sm@N{YA)&D*aws_cKL8KAGxsojO#fo;cQu~53JI%ZuU|ef zl}BOzRJlmWfysiyBrWM=S#I@%C1uwW=0g66U?j7OUo(c z%nE5uEkT@pxM7LJ$NyG^QRVB zXGSk|pdE$Gxsh#GgdDfC1fMtrW{9b3ZnG{8$r3?#M zZpKS>DKy@AqB%5UZiINnM8Et1dJx)#m|5fW4G0vp3|WvhhOInpYDqm0n^|KyK<8zx zrHCm<54pwsbsH<=B1%0}g2oMM)4S0dE^H*j#Ts}@VuI9#pM~lPDmlt_SLZte>8{k~ zhsJwV&!VKG%{-~pMSef=q%lcA(~Jhg(q(p*8l)6`B4$g31DYTeb_su85W4Mp;$w)> z!6f`&Lk{Axxu2W+XObb)WcLR0s84=!Pn_|qlz3SU zRlTkGuB5|`GAmBJbfw2tsfO7e|Y7mzzUX1A*u{&L#2s{h*GAoTYd)u09|8Tlfl z11fh*Z;>t~D}B{7^{hFJD+CEKT$3OwNE%ao#)S`~|0fApoRc!T3|>mjd>qG-s_YHt zboa{u9ld53Z_{NkjX*T8hfdb*W>mz`R1{??mg04Go8+HpLE?p`o~-S09aih$S1Vpk zr^&I(cx0yDL8QS{86uq^f?2eJ#XS)hn2B!Z?Ac(YCu}s`6=o|*=wMW$l@>s>M8gy~ zdW%>be}mf6)z8+2+!u2bSF@s*r#?vRx@{i(F@%Uo+e3SIZ#>QiYE+S1?{P#IfC(R~ zqWu&*s@dIxLkOXh#xQ&jS3VXwWXuGGdyI>2?{%9TLZlCUYO>BWrFA;q6xbf$+@!zsf(@r(W@nQYZI8bK)M)`~ub$DG=5<^;ITOlw>N6C>%paric1da`wY;V1=omZ5i@ zulqr@hs7SY6bmWq7Bk(uLq3iAHcR_ODz&!XyVzfD5lHq6iGj4Y1r z&x4lD+Qotubr6socQG(OuXKg3Uw$zJiGI`%bVfa1(1ZRgZBA2B{g!)aY=KISipCoU z0(%yfa)*`!m9LGrXsCquDXavPODZ#e?GALsiMcz`7vC>jvfLed8cQcj`AArx-RZuk zUsh}&nAN5hxFTeXV?&3+f*nd ztFoVDruFvRvzcVZq)A*F)rqLmk*ryHucz?x2EFHMfu`$q)z%X1gsMfcA|e1JCQJWA z+5^f(X61JG)E-j>#Bwf!yv$asf7B39`I?23Any`b~z@yX=^|)%DJ9AGD(6|M&xoNep{5pBkvWZDo z3rB|mw1aS#Qpd;H1tHBAcr+v(c;alEoVj#XQHIK^X9nXAelI*a`lHtzeEvLD4pYB) z_{Qo&?!NHt!wP_I;aD%P>|k*9a@Fu$b%Pn$vS8Bd_q$5}-N}4_Z-c@4qjSGH^-RSm zD#W0&l4_IDYFzH9SoMTRfnM>_Pkl*>S1L-9-70HVZrVQibsdbM+BV#NRZc?l$=TIv zNPD?aVx@Rm`2)%mD3?mQ`k1uLZY7(e>R9<1jUuE3(GB$;qB}Qauk)N*@2Q@atI>8g z#)J#eUDbNGF>dR`vUib zg$h}*7*+zhVE;&3ucX=nIwJ4X1fXx_Hgyfio~0RhtC5cC$0k{I{cOD(WWHZ(btnFZ z-vvC0)+GLuX;TcfXf|s;Q%OaSXaIZ6{9PaRN8O^1&2$9ebm6%Fwzs|Yt@G46%MO5W z$^6d8-u5=X8D*bYJ~+sm!`egJ0c1rX^VFGXmD24-61dn!cfZ6FBv~%+&@>4xw@Tc6ORgFN`jgx zu8CrVGL*2RAsv!}nfh<41aT$#EQ1QBE6ZWf2&3I4(mk@c04{rGP1UJH%!UHiK7>|{ zHuTw;10@q>ev-`fVe*<_NU4GGqCVFato;;d&+Ir+=N+OAuj)R=jx$Z~F>jEqF-qq& zXdBk zgI~_1uaj_F&4J^_GS;R19X)Vq;4k?ty1xk{WYXF)RSvK585}v^{}?d0B?{sn3)24b z=AFJCgd_MxgPZT5!s=c80giv~rCsKjx*ev@2Fm2lU{+jw39jNVO@{tJKK-|u>$9Qe zl*m{&(&!bZ*^}1RD|6lO+dry**W8HO(v6@RS8mN;C5wyD1}3FV$G=iv{BvFpUoy2F%TL%;og1_5c@G1GmYdw9$6Qs_Wrhn2`Q zt<6ZvtA3X-M)FC&q<oIb7Tlduc=B_=GxP6 zPSPWndc1doAQqc;XVsizJZ0$poR&Fs8iVim4qETx;IgcXq->GXT57Y_VvMNF_yu+# z--yYCE%ohSqJv*Cpm?U4+xQhb^s5csyy*=B575mw+{7@ezf-Xvc)&Ctcz|fnvwl)m zT%5_DvNrj}(m4M2I1a#ZjnUG|s~jfdZZIR)dDSa{RMTbUJocuj+FHPOxjpELT22^zci~;U67JT&d)1s|SqbsM zmBAO0m#?W4UM_`Nc)qbbvX@wfD+yM?qwEXas!~E=N-_Q{7y7DCP@6zi^(CRhYm`={Wew4{@FimVQXVrZz)Fh}z=pG*5o{rf2xo_~tVk z@UKH9NGKfN@`<8bXQQ?kD``@%oZr~#SWp_udRdIa?%aLkh9hahgonUvbe1Fi4G?X2G~dha>wkz=PgNiNuN?aB7u&0(HJStU=-pJh`#vo!)wcmd1> ztv`nLq8AaY3wB)7Uc9||>b3!_82$_Hx#ynKEzRBzmbK8mt`YaSJ^Rt(DB)h*{T@HA z*lXf#lT)aek3UW?xTbBaJ47+=Ew>zepN6OEo6P5;7tJ>u_}0y5@}H@bc_55spcc6A zidTqUCYy?_dL6R%{JEcH!tL)#x2$*`C6sdq9Uu}U=^m-1k<$StI?Mg20I)=dmO^+X z^Fvz=k|oI>vj51DlE|qF;*5Fu2TA$MS83Erxt5wRB2w0w&?7wNy{}Y?`F$4ilaQ4} zm6(PyMqN~K3x!cWfG8u?-9sjISAbmjGb&3~%BwmJNHT`oNGP;R+laomLs5TcU!}k{ z1phAtZqx^GttX4xtwlX(=y5CX=(Ox7G+X)^<0Sfwqnw2EYnuz5cDF+Xnc`?-dU;HX zO|99NrVc$EE)R(0qsHo>IGHyoB@3T0-lG%e&Bbi#5x-&=j_-qbN^%HofGGpRuC;6@ zmW~jDl?XC|C`#&)>r@uQRy|2#K{k;d1)54$Bh5zv6ERG`27buWX;_R_J9JsNZePl? z@Q=3w&B*_Ed{nnd%NATGghkW}X-)cttO?)Bjnb23=}E`zBoJ$m*}9S8DIMnidOd4F zr!+BJFxQTzJv>B9A)yXdz$m(&cK81TVl5 zvS=t*0`N3Exv|>=Yn84v#&^Wk;>dV0uT)-R!)R&ICek|@H#gRLo0E-pQbl3X*+RsQ zUk*>50n2DDYgY&HAnDig#d&|d4T2buA<-NeRhS(NtIjv$65t)c^Gy_Utq1|b1#z8> z9(@)9@j}ZQ=Es|(z}S>bv0r5@E4O0P2p2$>Sys(}72GhOdGE^hDDfY!#@6QebK=X1 z_O<6kzLg$D!sgCsLqut=6lE#u@9)h?YKs1$3o$dmoP!4}zgni;9POj2C&`q)3p<5d4#O0v-nFaLeZFAa?w>bJsIQMvs0>6TH+NxHIbRgcpt9{gqO-#z?* z7jSiwC;)Aubg{b7a*IikR&v8tWtMkEu1mwPucC>v+Fkmf%DkvuD7XT(bJ+x=v0XQ6 zgQG``iT=Y7&8{@5Mi~pPH5gIa%E+Qz{>22?$}RSMb9u!AGf-K04pN@nyqyQ(CnWS^ zRv3H|wQN-V+y5|;K8XyM&Dj{}+B+LPTl1Ua z#m@7X=&5bzt=<})v6?$VBw!j~Wag88Wfs%HyC9^|ULkS$S)dotAW9XUE*lpbQsWkO98qs_IDeE(q$msdsa=j)Z0-Bs zZ#P)gsQSSTI_LG12@q1czqGf4_w;aFGec}6VW|ka-cYJ|v=;v>G#kZTILplExam$M(e^?gP zN@G5?+CpuImX;K+q#M+~>90!FP8GfKDyQDbVS{C90>}rK_g39v%!(QStWKm{58h79 z06!=QsCSibhbBa<$yob=-Oc&6vq#e+1PbU?DaW6CXXf@4iYcQ!@*tCph6{&L) z5Tli<*WWT3Mx!s+=SRyMog(ZHtMkmw3&;IQmCnW3LhGK}TJLPxsQ0^XUTed`W!r9} z;Za4V#Yl%@JR!%CyS8P`H+w7qt;dd8wsB)gm5 zFenYOCH?kcfDvK#{MFp=dySppGuWL;V8X_aTX!pOT?OpZM~1a=eUER57? z7u8;?*UBWu)bl(%ms)VyVqk4%o`NERpDg~Z#CIr^81bd;J1SI#I=0@b0j*%(d-PM% zcE^|@&!x-C>o}V$;{}>F=&u~WiLDCrB!-|~0^sW~X2S-ToVM4N7LqfQRr)$Wc(@fc zUY?%3QByFZv{Om8oyoY4U9H5F`J{0g!%b}H1mg^3cB7(GJ+BYl-L(R=h4@!w{?BX_ zapNVIwuclIbo)n%JsMpqCGz&ua?+1FdeEr#oQRsgzQS4rwG4`fjWc`-PH_Cx#u8(a z7$TOoo4KW5j3%qc;L5IT?#Dut5j|^Y_0~h{MGwn#9w|yZ{308495fWx=$Q(T9pAE0 zv{uI%?MJSD5d&YddUviIZ|oeC86yOZ(;kSmxtp{*X1lv|x!7&H`%-fep9!lb(L}it zQlJxe4aZ2bnzQQOhK}Ytqr>Q=9Imo{s6072Vd=rC=uh%Xd?`l}cdRTG%J`5T^r)pO zDU)34#VRpX@&u4+LTHp;IP?ycU|uDZqDaI(9oawh4ohE^6HoQXR8p_VmGTqEBSzt& z=BEdh*Q;c_Jf%n|#u7A(x-4}ajsP9S7AjdMZCZ*kYW8vlQ<80Lo^4m#ZD(pC7!;#gx*T(F-A2LZk^0s6)C= z3L@RCEH^<9jdrRrJxP8&qTKBfX~MCN_YXX!VBlv!1%t#)+-%>{DdJQ*HS5cuM+tm1 zqtn_d8tqY|DF{hsx_MTdLUAlUC=-`zLgEBtl|!>=h+?uU46dYp=2xt^yRLD6%G%E?OA~ftef|^JpcP-i9hg z#DwXDM~v;rYXsIap(CZ67{?RbCvLOMAF#L5l$t_g@f^56ALq{Ao_J&e;7%X|;5>vb z1?dF43ISf#g~f|$e-%Fl$pS_urUw?Ux>}8cB*z;CpQ$nhM4&$IpDC110hd>6*5Qb1 z;%sOA(FEK*p<0#uTIfN`PVAfawg-u$=tB$>)4&Z|!2q=FG$(saqQ?W~89O7FIw1R9 zi$~o_kTL6v?k7Sl?$`pY6cNxJCxT0?%CPpyl2raEdC}kohsWa5#)+M!`Oyh7o&ZOS ztm9yTq?iJt+v{v(Np%y}6DEqAQ5=`HnVH*P1h0Ncs;vt(5l0b7B(&VMDkF2aJIYcz zM~FmAL#^`irXr8rQwoyZb@djT?gm3jKT3IDZ86v@Qy)NWI<-S&JLrF0jGf^^zOjD( zq+6{~(W-SI)6wgzL%NXT@cKP$7mX@Gv2jme^g1bRDzqtJu9}1dk`~rzcu(WnX5@ye z&xx4fW$0h7`&RBY=edE1sZsBll@VA`{teoQ88biK4CcU!6*aTmp*XR>ci{$7KN5L2 zYXSZ=Ws}9~dQ{WXyT7H~?2J~IhP~r4-WGpzm;^|}vm05hUP?~9nRHw8*D>D1NRGZB zPRJeG`ahO+3fDSz9qh0lTPr(GvO_p;yUx~fH62%n<9ckD23J)Z|DY)tFxp%|Y zx2D}#YS`&LRcf}JG%?e-sN2IzxvT?U;<=+F`M+GzSu~9<(o5YVT8R>?s3-L`ZSgD< zZRly1pVgN5RobJJyIM+w!n=ZAQtu=0Ra#{AzU6YmTqb_O^ny|K5*3RR#s$kG`6{zX zoK}1@QMFQG;tkbXsVgeg;xy%ovv4RUW%XD-VJUXgzm!8b$o8u1fq#Q{!R?b2Bp(p@ z(hgF32Vhb%YOum(e$n-pj!M2mhLZb$*IZ6%RVX0`Ji%flCusdiTNQ|7*O|y#B}$;h zB&a%2=QzzpVxvaZlaYu7jCoVftDrBNP%fZ)h%pUYCYNSOuOBcg#ffP~m2e&|Ahdxf zL8H+!v%b?=@`%$3Ogu{T#A%ZJ*0!J|18zjTN?T1wg8?fBd>$gWUJgY@R1cEnkxmX5 zZb^vQiRB54C7sA5d7p%_ZqzGYXJEIxUQYfhv3G|;cxhMiwi&zOfE&>Qy$w2kc^nrs zRFE`6F_y$bw5bxx8(S!3c8y+ZlZ4_!`g=ne* z0q1UL>tJb^SPurK>PXNf|Cvd+)b+cCpV zl@EDlaWk?n$bibfX=o|^`fg(Wm?2bOC7-{peXE8}BA;=|&K?9xQ^(fHa;>afy-%H+tO zf0J6NSE~l}!ws?>aiNfeyb5a)p=+EB1)d>Z)sC6O{YDZ*--zv5rB2MI4(Yr3b8k-o zROU`kpn_!zhuLBb=YlhlOjKDyHZ zbVA^WS-QZsO`0Up?9C=+5E34L`MsF&;i$3z^ZX0!MZ?_g;iKY_s-g%$828n$1?dLg zf>g+~=g4D2#Uxj3=B?kzz4t$Z#T=CZx>RR&360r`5*gt=Mzdt3Rboy|qJW)o{=g)7iMp@=z&>^FQz6i#or>oH!afU%Eafts%a>GO6<9?iraVA(0h{WD>}w6RnT0*}zX5i)t-GP#RIE9}9)- zlq?gLYw$IvFVf*uA)u@ig?Z1TgI~IBp!}4w5*wL7kwVkeJNap1YY749DooM^Z^}9= z@D@64==LzQ3$}EvnRyIlxB^SzXB$+v)9Ur3YQ0_^UpErUQ1@zEEPn8rzuMQzVaJ-% zf}`>zj)bPuZ7e_NU{E`EAAmGgw=5J%zo^>7PtW~(Pi4x%OJGd0JY3n9nU6B_{YrNW zwN4T&u5pn+c~8UrO7WQ*L*=o+tY`FHzC*@~tLMx@+bE>lN!tBF>mBa^Uh6)|-cIxO z-!xHk(~XNoUqu`6PhsQ{FS$? z(z?!xS*}@1gMVspf;iIb?y@Z+l@zngwmACq+_2VCTzb2ya*KCX!&&sIoL={Np55#_ z;g02RtXzB=Zc^M=Tv}SnrXKKBF{}8tqUo%0ODpym*zhHp5^`+}yYg4N@`|rZeWb*I z?c(%Kqf}K&+RL8iCetCKbmq)FWY3gIqr~*R*MYLN zb`ct3mwqNN#aGo-_WsK9U0nz@=!RE#Df+R>YAd{~wnHsgrH>A+p5l4M=t+;?)70?2 zmVQ7@?AimM+`dY>XKMMVUH;I;iz`n@+jsDHti(+p5X)9t!C7KwbbXoFnHs+bQrCOp z!bObVwLa+??S{XyeuviY&?haKt;(&)U!@O;|#`FX6hwjFKU|Xy()*#Cj1D9U1{=Z zGo<28;#dK@snq^qUR6Dqfr_UEI#s1BVe;i^%hSWPp?&efv%t7Ma$=7u_CR||-Bl~9EJlqx2GZ^X-3=_xPF>#k$RqcDxABbO-bAiwvRoYTQ$()p9jh3u_{j7%Z>Q zVaQ6u+j-QuGcKx?9vuQzFZ24X7Mv?-W9;30KI~L3|GxF{Z2P*F_CA-E)b2)B{kY*2aWimOm0JKxhZM?x=L=BH#Qqn4=kS5* z5J+-UzlDC!pq1nf1X17s0fw4Rt{LB|9beXb){|PhwhZZUnSUtzd%p?Rke^rgNP4Sf z-jLi6$g~9GQ9cwQMI7aq*_Yg#nQTKOQj)(2982z&l2!$~2eEs`DCM0Z7Wj2uqhOXQ z#GirRq5t9Z{F@RK%X!F_bF2cY0p;W&a8apbtAv0;f+@r&xH3g%H(4|u>;ka1yhf{$ zR2ZsE3xZ7TKx7a(h?Fa%-W`M0$O>@Lj-QxUu**`HY)A-$XBvmSvl=6Mt+Yeg8-n*MRP zX=J=t_U!Inb)mPg(`?XUlJ={#!yyu&6&uIrR~vDC1HOLR=a{BG1UcG!QRPwJ?kUmKO40pEd?B3gL0CRI4!C(K-g@V^(Qf^*C#+FZO$8 zWQRFTYn>x-2r_`q&_Abn!_ko-_J+L*9h-5hzp^!GC-!UOdO-sKylO0r^O39_IgOTo zYVW#p5Gg_6VW*we(l(f0I!<-7pa(+m_y+KEqhg25L^AGw2_u7;xJ5JIR98*!>FfTS z_f#O%v%BOR?nk*(QZZJx1pxi@POG-L*_KnP>~QLw>}LIsp2D5|gfKW7MWt3@D5VZ- zViYx2yoMVOcNXC58Ngq&(BwA%UTS!f<;pR=dc1k^`)ZR4eI*k;TUx>MAI?Tn? zJeTc8)t#I?Wr;#paQ6~P-_=x?tLj@+NIIp;kb0@(s~=P4%N1>_C)L&{n>#lw=H!%% z-BrElvloaymLauM9&?y>xEMk8j-k>~$Xj)7N==qmJ+*q+IQAV^Dq_RcYTvv#gvt=v zA1-bkUtZmzthzMDqjd*k0e-Ue7xnVPkEK+bg3^XV9mKGp5zw)4Z(N6=rDg&drL!i8Zvu>$&gUdCiIoHnWzo*f2%WUFlPh@LJMjjF~u^ zS;WXxV5BnBBuZKh5UjAIXL&;h+&*Mr8C|G#tHP&_tG+W@x;@)$b_E7sYxl=THd~hY6xc;9rkXPW?99F`jCG@_PqYg1umDC zb0F&lhX0P^E?hxxf4uLx<~dvJEd(`9}C&^iS+9@NPM8p?;A!DtGh#p4u3EgPDZni5j9bKkY!; zx zwoYCQf(H*SIFYllBzkCR!>FVVU37S-4>1(r5@V<~R`ELYja9(MbY^T64VI#^yhdN! z{j{n*fEh-@9>B$L?0bF7UV;9|zWm)qK)bDWJrqs_KkqFNlHh>u3NLu;sR>fV5DaT; zQ?{k1|7ZLTSUsJu%yIq3*1B|#+QmZ;-hFp*>bUO|;T^^$_rPa<-*ed}^hVh4cn1z4 zkId(CRk8Pmvo{kbyl8Xlp-ON87A(s+aUrNY^n__|Eb)5BU)sPIc}TsD_aJ`zm5)#VYbY?URC3>@_Ds^nR6F`KNXDmDT(aE|sNa(S? z_blSk>nxf+J@quzw2IzvjdtLZ*`S`zXLLO}jAsu+`oSO#^_u5uj13sHivT)dyrlfD zdt0q^-t9!q+9OUi_eb-uJ+pFMte_We%+xZvz+I+#Cj~6wJ{(BB*duO$4X=p9=6AO{ zSu)-i<(1P}JBx9^V+#n9 z)NPz8TCFojZoU5OtI@?G+O#35UQ8NB znd+0WrMK5QOH7C1<5la+^P3qu6cuUp*R9CjzgVesh7gXNT0eEtU2j51o-!iy;GdY4 zKJ<wp zYb+WnRS}F@{V`^j-=qaiBr=_eA!&hFSW%&zDb01F++&f%qX@;2zm@`%@M?P1^~FgY zG1}cvwJrS72l>w=N@B*vBi{-)5nJ?IAAw^?T+kQ1@VyIm?eGt#`zOgzwNHO zjN-v>p1^KGnL1BpI?=cPmiCYSk@jKjRlfgjx}~mt-uSq&rEACePg)PpUC$lA{D+3; zU4M>W^^>QbU(B9n!J%n8cgoZ+4R1I&wX>a`J;(TA804YsOm!`|@$uVlf5pphvhC+U z3n6sES3Ube?UU2{`pewcGw`+j;LLZMHjy6oZI_#U>YJ4UlR{N7*a#jbuJXmeF z!5cCMCTC*F#$Er*_{Ltr$l>VXue-G1nh-NpR<|JVl#4?pnUeJkyI`+E${ z_TzVck3}yk4iHXF^Zk=_opv$9{1%zlfJTlU|HCVgy~=ke&O4#*_zp%t&ait7b#Us; z>bn2s;yOU29ceyW@3ZxP7ef&Y$=DU53Umn5h2T7vp=_8k3ZTy5b_1tRB7c z74Yp;7yS4;A2%QiqIb_J-m@4l<8kYZ$x8k$VJD=EmifkO0G4lhvni8mh4tgjZ$hJU zJyW!$TFYM|FLVFg9q>!ae93ZS9I9-&(bF{8RnL{`d&ViQ)`YboDR8K`VNH^Va~cdO zJ_)t;&S;`<)neBg;-e`1fH7#-LgpTe=h^JtdfWV1;Q;4;e*SpRB_0m#&Ff$PmI)S1*P0K$gB26x`EIO-YuH$!{{QAUGVi1*yX#v;P8ole{?oFDkW*}Z_4 zU)Qg}O;nE(H)!7#HwoJ{{T{R4-Q9;Wg20wHeCONhc5qOf*e@P{nxkbH&$&l~k;m3# zkY`!@{uueMOR(~N2y6Lib+32S7|60KugW}m6{AS|>`d^{R8x~AGz;p!k=PRY1X-DZ z>?`hhTAkS{2_X*m6o;r8^>Ux5t=`nC1evV99O3zt_vX}cHt9+f4|2MWP%WY&6}JNc ziu|GU1cyuyWnGa96|pLE4@5wF+w~20Pp2Q6vCIS29u3>HYGYdLEX`$FSX{G*9U(`h zU%D1I8{L*=R{X@c>>4e{io&Y6WLJ|vuixCU^C7$Tjf53O<^^l<)99`&?vYAD;sBIDhQq{JGII|)IHR+Z`Lgo{@G z#8Xo6I=EiAK8x&CEXd z=kI>7vz*pzSr9{$&wr5AEsc-OFWzulRJo_O5--Ls)HqPN8tcERCkuhCudP>>ThX|B z@cZk|xJtA2V@!oKwdXb5$M_}b`_|gOio3KWOZV}YXxjG9{mG+e&g$Jq&z`ybZy(he zNb6qI{>_<-F2ulGjIo_DWbD|+(PK9@e&GHsTDIkK;3SmGG2}{tcGjb<`(L^Y`^z)0 zJF(TT4lDY9=KUaQ!#VMYB8;_f)6{jWtwaB51;&rA`)jwusG%-d8&1N&IlCEK>*F+} z|J>@r9`2vSQ5b&T53s+dvgbaGbej~qDdPFk=ylgzc6vRm<(tYWM! zEb7l{3w$`X$gc)jd}6$`1N`UM2D~6$xJNKp4tywsoG>_Ug?TM&1@>rVsofr;A*8{c zIW%WkNgK8kCUKk5!JDd$M)2%=@4Xj87x;DU8QL>y#9M*KQ_m(N>NKkE$3AxOt92L` z5uWPlqt)FNc##-0ctU&@Z;UcwP~3L6Rqc7OdU#to0a4iSQ|zCqzr3~7Uf(~T1q6<9 z6{4k`G_JP#B@UQfUX1RMwK`A@S%gNWuZ0_mN;zgC-*7PkzP>wM78CE!!SUI=qeAC3hHWDN8 z6#q(D5z|uA?eGaWIp1`>S&J7}AzP@mh&IRxF(li$acw>ba*|W^aM&HKwHr~(Nk`$h zOJLGyzw8F5N(2l+wht{1qa|Q(n{QOxm|0fVaMxp!#q~;-EiXVUP+MB?U{|Pn3FF=Q zr!kmra_pvjn4Vims16vk6A#YAqkZtZP_5J|OtZ(m)$;1%{Y7n&EcycokM~$E;?yzi77KtF+!O&jtNB{DF+=Y zj97??d&$x3f`+%WriJjf)BmNCQN&OV42Lfz2lWfr*p^bJ5eenxv-V0rpQLYw*K!Wd zctJ_$iu#$x2Z+s#0HG9Zk*i&y4(1q%^`*R|d=&(-p}ISE7%4fmJ*AjV%~l<97KD@i zQL4QwI*p^ZODWadc3!QY9+Mo$imw_lHKi@43+Ij&zkHW66@(Rd(phukSg2Q;^J%3X zEY=vNT?yLtF>|e2vF6qLi(N9A6o`;gh89*VrX6LKq#)65AM}_rywGV`sKabBk|Ea+ zWXe{s+rko!35mkAuYHQcnvE(cP#G=^aH(O6c}LJTv_b7r!^ZcC3}hEv?_I)jUWzv^TtA zT<b7)g=7ji;rmtGjw!?>8JKXL#IN%`spQ`RjCcD7>TFw-C^i!%qwPi5G^c|`xY+<-6aaBe0Z8kkrS``$f z0M;a$xHqOCbmI?I*q)}kvP!>~mmBJ$X{fM{SUOVWeN_$N+If*swW!ntGVxmx;eTP_ zNDMt(5@nX`SZPyrUAPhOAt-TcR{$=aS-*54bY3T@RTOEg7iIim8;M-jZ=fGfLJj<_ z;rBa5$}E^FQCX~9@Ee30#H*5vS~NC5PK2}L-qEG-zJPZp%TDQ02drG|-Isnr94@L> zNxe?k$KqcDD382a57lj=RJCQdLF$aH|o?eF_`rUwJT#uV0}zB__|B z;EQp{A=NCOuy{#LAYKnRbXDE|AOTGx-mc0*_5u52EejLTx^YtoDhRVM#gha!0E1L& zgePi?iNGldnmiD#Z=Uu?MRv7Go(n3b=%ojoVYZdqTP@O|kCawakE;OYO>7*QIm9a( z%G>6KnY|cqdb2G7sy6hcj+#l@WtzU-HiQNASY1}jWMs^Gk$JldaM#y zKoe1QFdna}udbUAD_^u)CEnG#&b#|cYlLl64r}(@lAGnbD^x_2aZ-1U3N|i)74euM zHf3fPUWz&eiZ0f#;0ADYv%oxcD+zDI+DN}){VA#<4 zs#}l)=Ov}%M6w?8MFJ9Wc5w@|RNF)$jl~Mmqt<>J;SlDAeenp9g_a*>wbaCrOr}~B zt4Q?A5b^p1uIwH!z{T%Hpsc0E7iSHEo`mo9bM0d2ptDPk2V%w}z|53>ZpZD4cLrwR za&a&c{4YALe2~20|9qyXD|>Kt{14S3gef?xs5FUWri$F)in5JT36-i%ldORV_pF#4 zk^;pp10kK{$Rx!ju6gaq>_JEaF{0v}(+zgseo-O&bBDU}|5FL4So0{M3Qs&zPDP@q zNI9L10I1I{jZ_=cr!eVFgDM-*&BSy=CW`4jz*j^D9`kCY(Xz5=SsVxj0C#n0jL)AM z^){;OEZ%1G!hB`6Y5<9*g*zI*&mI?`ZuX4k|8=se$ZBl}R)&hxRflc~`J%CL74e`z zvjabLiZF!5>Tna#{61vQnzro$UWkG%Gz`>di(<5e+@=D(Ju~KLO*ro*NU`KuFpnJ% zPNP#-%u$V|LrRKNG+DMuFgDPcV|a}jBAYb35$J&62%0&6yq~mAV`@Ac2*a8fu6@Z+ z1e4+oA{uW*keL{(94i#IYHGBcG#*q2ReaoJq$#ypEF6mm5!Qxo9$<-$6ZnnFeICmP z+bb3Z{&o-uEUU@Jt4r=EP?ykdW%XXEjE=A|M>7&!=Km*7CNJw;9()X%u_Fc@Ye~2f zMbO-3Wd(jEL?P1K#zubp_S21KS(TDaZ(WUF&5cH@N<}r*(y<`@Rw-<16A3IznyoVd zXFZB7E&2%|x5f1d7WGLRc|?D@Z>&*>TRc4=DHZ}vuob6Vp)`;j{JP?TEMtUDCeEwS zBZA>5fVsbsp^(3K!GhYjEggGEnu%MLwX!BkB^w*mq8MR4KJ;Q-55s=6Y5ji@-GVBy3sj)<%YT;KIp_$vqF3ku(u&|`3PZek^jz}8Q#3GbwVJ!if$BYPP%7h7H zlS&-@`A89iF9Vo8v>I8o=C|nMkugUf!eQeS33npP5Iaz390v>(d||9fl}3I#Ty); zT>&iz^i@hjVQrB&CiNE&bY~Qkf+gaR&}uy9o-s#5!t8@o8sRVzp;Ji%OH}g{6eX0a zLMgwop}ia!hzJ{A+U$bOpnl%4VP8Bb_BXA41AY~@3`mjWGMgh|&YNOP)VM2*$pUx7 zGU)=??X!?ye8nhwk->Cfs=LhN=lr5t@#UPi?DgWE8oiZI67ZEy)#6cF{1S?#) zgi!aqh%|@+97*PF+TizheO4qUZ9cr^v%Crp?ZkY~$gWRpuKXYD`kWv^k%8L>mmHS? z9c*~=qwvu%6-+&O>Shy#`8*}I`c}}X*a|AG>-pmv0?s~AQNiDw)?Bm|RPH?e?{5WN z1(f7#c3C&>6ClX~k@<3`6 za6HES%(0mL2joLSwUu&Zgl--llXNp$vdjdyx^$=r;~6YUg(3?Y64Iqfrck&XWbG5q z>f%L7B(Nnn64Mm#R*6syVZ&GiyCxF}#H$J-W(-izXfZQ?-ok~J5sM%nuWY}Cl`RNe zkVwoX3m49t?+TmI_RnZpv-TqnQrrmL1V1Adb3k~3i)GDPEHY4_lOof2gdo;#?SWyP zqsR|#;P9e69f*F37VU^dR?y1Q7!yapG ze=sc`L1@y0ye^a>2o!kM+81_1zHr<`UZ_e(g4{u13rIG`C)fISoL1xa156urG^kRl zAcQ7ZSqus2@aI{kx?TN5!Oa9O8==Gd+#QoLX+h+IjRB9)?{YJd$^+sQIlmFX*aVeg z+wyO-wY5)pzscB;sS^*4)AZUY(#SW-Zi=!7cN+uLR>%n};&38Ir==D%C(~aNz9;`_QV2lS$(jBS|%0kK|X>1VVKj ztJm@q2ht0N1RGHGt$OleFXMhM_#P6Tfwiqbe2oQRy9)a?fCXGP3tPL8I0_#|@y{G{>$`v6CKo$p8*Or$7arY<+ z3n=eSjSh!KPB>MTk^Ig0>0M)vUy1msD10L80u-Vk!%ZA~kL{ibRjc^V2qzrqu*SaIKkoPPy24(!iiJATw(U}hw+E81;>o_(?%eHIA9<5+A zy*=CPvy1srs^9LvL+fLL)QjSHo?W% zKn6K!KJ>^2JvJgYE|fX%$0Fn1&3Bh_W9@s9oD5_bp>Q-}r=62y5p+^TU8Tp_i-U?J zLXXD(GR<_15XRL=kD^MerbkdiapFYO1c~U{cva&Thy~R+4Q!nZilWE{HantdmR71L zaTHh_6Le!CoH}$hvAwZ<_5r9WQ5IXa2ZkkfZr!M<6QFyj*jJ{J4OHz$4>gB%5J5|G zN{%dftUycB8{n!U&O5?yky$Q&oP=Qc(*C=fC!GD-GI3+%my_tX`mPBlE=EP34roMJ zTZQBuR}2X+wyc_fj6tz!q9BcmsmU?F6cc-2u>ndo6lcbhx`Rlon>qt)W| zH;tmFv0&AMszfr!n!z=Y(zHfw{vD3Gu6@h>z(`cz8acg15wxxKSc~9F#RRf8H`A<& zMRfky_GPGqREU(#+Tby+M`D5lt-)We8$}Omo4 z0NyE($Y##mcw+@g#`idw_JwXSDXb-4f&B^&IM}hru>d!XVJvyK4>}kfySS|6{sJY8 z5v^r(>`PeS?tb$Bhaz8T{UZZWDF}QaD8`R|%acAek znsVhg(ni;!*)zf7dRtjUMP`@D2s78r&nV6!U3;OeRhmAfEUE*WA%-$J?Bh(d5MQMX!r)~XoP>!=rQzVum;dG1`LbGSYoV3ze zRoG1Kji7u9Fl^$RZH8*^a(mR|YScZ7)lg@AOxQn##L`8g=6i)-kL?BsE)TXUkO&|- zunCqx2JjG4$z}qoLtAf#fn(fImR~@l@=25q7hzJs@k({D;s13?wKupgFNM zQ`kpiF;D=8q^beb*3=hIFU8I~tankXrfI?-L=9lfpmq@P!PXsPkpc=|foX@ZRn|td zLu}0xYP>;Zy8a(U4)*eiDn1B)>=BBiJj1A1LBZ!U2IU|aoCw;+q98@_XU#0L`r_>8 zwVm#9pyM1?{4)@i8tdC?2tUBqCwY}W*ikcDPa3X)A>YVY@CiEN58@n796=)Wj??G& z0-YiVDt??mr*!ndE*m3~QEa%dP}mW*q+{HyTJ-z;Nke^Ne?*2g$JV}3?Cc|+ZFa>z z#6Mz1yTwo&otb`=;40oPI@*?dsO0f6CN)DSSBzkkDoPW`5@Z}f<6_R85O9fg&252t_}N##uVQY z4#TNXx14IaMPaQm#gVWD3|RGHKT6dMhqX}nX)I92@P@DBww;GU*TvxRVO^CqoJQ=p z`;gZ<);Nj-;QkxDBoc)l4hAB247xmLG>CiAZqc=9_FpJa)z@Str9hrR!U{C#5r%^i z7g>EQuoMUDyqK8;>IJYl3L!&59_BZrvCc6B?0C&~Bzrn=LXb zMEy9K>MC}d0%H6(=u8ybA9K>F$Y7JQ2!&vOlgP%Jd|KT!gPB?BlRkkFnH8w_NdYDF z>PIwydjVyrtAL?WDT)C)FHUF=k*ExgN+4H}2ZO-2;b3Ywkx~H;D3n?BW(ug=nJ5=1 zR9f*P3R#O6j?$zev|6duI*PGT4^SfUQv<7gj)H>sF|TUvut7XvB~UmR#Tj(sx68sR zo7PI&cAY$>(&w>4^_IqwLL82ofX)!L*#ijHC8|otd&&dc7qH;&v#LtN<7Sjv$`-+R zRpYG7aUH{lU0OP@`7~{p3R+sO2DYf0T2&`1J_bCfH0&e#gLnB`rvqC73Cg4_pocBL z|E>p7xfQ6NI3S2`GGo509a!ho>aU=*cLrSVA~d7LP`$ zJtI)1itOCsGJDQ*#^Y;pi;YKNo8k!Zmheu*dMmsN3B@u;t-~u2X_dp3_v-O7yt1}pi!D(9epbMbGT`>)5JFE;)JqS9qm_P- z=>x>Ccg_YrW#|W1H>t9=JQgVBmZ&XUUlEA_AxvS4Z-Y5r6}j%r=RpbedK1O}CXTa7 zQ$=YIw+|nWvehm4ZYzXbcgk&4N%IWdqLkWUfrsKw5fuqY2%tQ2{^LroKm}lq+2S;B zqy&5KetlHC0BiCJNi%Pid{r_8$^p=z`#N2UZv z!rYX}4G!d&%)k`ydvyqS+4cTE1cv0j&3BRb(Qo*Qd2StI#ZB-9E?z%_a zR#O4tYx_g>5uN%x@#+?b=tPAq7WOo29-C@GWjhaQk`z(%xXQALHUKnmC43^Nzsh?i z;27k4)uMJNx<87+nju)lS{QggQDr}rtJeVY2_E8wCJ0PJ{>zcY#2P7&D<=fv#l&oF zxM6vD6|pClRoZ6AH-1{kADoYpv!HtF3xTPjzWsck0u*O}dT?)Rncs`@H5#?(+yqCJ z6#S5b^e_*$1$kIMNZ2T-o?c#WqndJgG#GQJbxIjSiTv8gTre!HTdG=8ZDVpvK*1p*Bu>3+NmQ%CfM9?scXlp3+k6bMTiyQDVDJ(kTnQQN+{

    n~K!HWj#!~J%Ny_4??wZ1Z&XSTsYZ#Xb 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

    r$ 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

    6m&`mY^fyVh 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

    F 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Ⓢ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�Eoq6?^Zwr!A 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 XOCET}ml2&xx#ax6v7gXsBOCxT{hWnQ|^4ePWQ= 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%0DY8zx^B-%&z48R@nQe#m*yOa-hY}IaO}m zb}Lv1+XMc(`LHlBN_Yy;n>^IG!0r-tecgyBBjavkm`)TBbv{m=N)K!9XS zbe>AVc-Ajgo_1fx7KnQq{6|5NOSoXe&g@Mfi5nbZD& zG#`19C-7~JgKTM>_!#Ve-1B>Wna`5Dr?W(dpq_QKn~BpG4% zyoedvqt|PFVgGaJA8yfU1%#2@|6lcWiZB4G(9?cDDlAW(G(O*QqO1>%VUW9Ds0hHT z{eRm3W_!SmZ#;4@`sOXSA%b#`Jr7a}O5wGymX6<%AO8$?g*@DFzp;k z!q~z_mcNj%Yqv72TwQri<>i$JD(?d;Fk9i$CHq+Xwz;)CZfUA5!jou_3DV4!x|xaG zaW8*uBJhhG>pjuW4f>8z6waQ~o;_e>9hhl)kHN}+uEK`Q2E^z5dk>gv3Z;t8{hc{(epwS;y51xKF1N8F%%Nqd3mUNGn3&6jz`%@Z=)4t=V_Jx|2&x-8Qh zo|yHN)#w>t#aor#%Gt_GD{rj4zqG&Ott=Rp$I`ZTaw$>Qvc2Aicoikn8@eDvF zh!Ih9xT3KznW1==;8UeEinYY~gWHlta; zZJkN}UmiAi6!#h-z$yWf>=v6-59>>DVHm;#>tjQ3w^2_Tx^^FsOPbUhhD8LWhU=}a zKWDy~0(R3eefZX`&v~w%F8*WvXl9%vs8y)w~fXHcM<(q&J3aWBil^^0hRKScZgA>xE*QGaS1pLK(##JWb-Fl(X9 zZ9Ri$;D%Mu0NAjw=!Ks}jwXMklM)z~=ym&FMmK!iQJgbV_F$`Ayg{{t`ZEquoHBG5 zapD^1hVSh^;w{!fhN*!q%N^A{ggsvb%&W1x5Tm*h`7=!KBQnmP`?h4x{@()V1(b`t zcD5#efjGx665p&ZOj0LWhGKYSyYjV1oWt*aA zL6Mt0o%ooiGZ)#Q8NAFEHcx9abVj_c!O8wuMvjpQn8DEaeV|Wb1+86<33Ec5p8#vN z;}YW3Tl0xQu&GC`T1>E`t-zMX{>QtCX>uS{`G_y`%i>g* zFX_yYR-I8A)GeG2_W-o{!0ZU~-BzgbAds}e)*dH_8Asy?@SYvCj>6@b1uM$0Xw_}* zI$m6Fj#8}alZEc8okfuL_o7&ELB8^L_L(Njjb=Dvn&glFh_6LHmp&73B|5Yxb<#+) zE_szVfX$Nm9S*BxSQ5iW_})0GMN|kYf$(g7Z?r$Tillt) zj>#xiw=XUY(p>y!odVj%<|$*<$g=?oh=v~dlc1SIeK1xG76t9J8|+^ZoEli%%#OGn zZ{+;NUy-&A%AM7tzx*q@sPu1POOv3@c0w$8Xk-ffc_*>IU?SFZEE0D%k?s!ypo1#a zUuXpT$Ae*`9ymI5zvg*<5}>aH^Nl#Qbf*;==^;pSVFOGhXNbNIf845sO~lhV&W<7vZYAt&-uF6Ev;{e^Zuef=x;aMFHgu6$o->m*)85<7zr0*z4_w;P zQTMa(Bo4Lo5Vhh_vgVChi^k%au_G^S{mjql4dET%B1wBQ?@5_;pWN)k#IhUsVr%!3 zOItgZI|T=Mu6bG@p}f8~D@izIWIeK<>e~H<%$6)_U$A8DNRx?D7Iie45P2y}r`JrA z@YI^+gswPHx$}909$dGVUCO%k2fFvG(KfV7I*rP~pOcB!x^L!gNrO+B?vSDL>`NBa zG(k*hTR9_Zn$V044|~V$x=8n_uO8s_l1=lCvV|&`Io~CY{eazhyJ1e#U*6N_?n~?G z0}C0IJ#LDsEbYO}zCP(S^;8@B{GzmzrA5F4RAUONFkM{gj~GeA1*Ut1Us6k-zpK?h z{l-Lu0{CS>|WJ(=FeVNqTd zr998^o!Q`-`F@3qb}uO=0Bw)CEurlz_lD_ch~oYccmLJZEG`Y#j>k`rvQMg09s)(Ou=@9|6$-s zWl~cJ_@S~4(f>^t|HEw{g###XB=lar@^mA2ub_tVH{)1 zLDx82DUSl|OhqPfG(79Z;r!wXk~Z#b;}6T~tIQB~-ia5oRV=iKjIqpgs)hqE+2kIePl0 zYR%PNch!;&Ps@74No@cz1YsAx$93jA09DhF3^QcOaOJgw-DBsfQ8qV$1Aeh;07d-J zs|QCYHLGW~7KT;Z2KqEKkZ@BMAf}T>ZAtXL~ZOKjShDdtRvLQDbUWb9v$t@*3lM!w< z<3{J!D|a_ms`We^LL460VaPa%2S;jNve_1J3RjnfV#yK!FVE!(@HXKULR`a*$?r5bIjf{tXs0uf0wen;{ZK6caCt zQ32l_H<`7*P*vzUv=9f;kXk7L0a=#KYqPPy5T5Ye9l>v z=S=?%*iz4}+zLqhUsc{!`B3FklZvs95sy`TRP+*BL+RGIkzTh{#aE!cq5)pkXQ&_; zocU()`qu7d2WhWr5eo}9ck^h*xD;H|%xD{kBGNklbYZ;h<-PKB4VgxwKsc_UeUZ8l zeA}qh0u@*s%x@I=;?A3-&0wpVwqN!6&(^nEe&k3qON8y~X`Ab-^^bZI_|8#I-Fo)0 zrQA3$z{C|)B?zTmUvvyiD8UBhwIGq8#+U_4gJESc@|tt!5n(SFu6s6D7~_A|bu@z6 z_s{i!_-;M-Cc|+2XT}!7cPU-|jjwxqv#A8X`U+{=?wV^inQ2_{tB5C7p5d$7+3#OH zP6T&UKOEMrD_RMF5q0zpFR%l+sr^4-#Q2Y(AZi7w4VP&&>U&Oexy08Q!w z%Z7>}8P4R8Z0aL$|*Fv_#~0z)c7_#Xsmh*8KnF2_Vd!!JpW_R zpUN)k7dby=n*p%B4F={@vgA-l==r5s5;<>mEn!*Q!EWCI8;TOx2d~=j+eGQ28L7i? zAdifo&82CD9_Un#`c73KL(MI%Z^puM4UD^MAmY+=;5A&3Egoweb*#*%2MXC)UaT$! zppUVeO@iitKAb@G7p>3*tt_qsS=~x^@85m_om%E_1A|Nm^5VoM*h5`j-P+wbWt|F<|u%lqL-UY0{{Tqfn)V0-S z&j^}!n3xW=<`M}ynG!*mcU_d&)dm(SGBGzL!O{VK!lnzRERe8>X?nT|+p9-j+Q3e_ z)If49Sm0Gb6FPOeenbUKDI#3sx`i{R;mJ&1bzF>7i^CV6brrX8l`C$!aKE~YyUB5* zY9}%9hYVEHx+gRlY?J{@XJh$8(x#!KU8|n)(WG6Sv*YS;x30{nDw!we8dV`{Jk??) zkc5Nf9$UiB%pU}ML_qyG3iOHuxFtQJz?=;jXnI39igrB?4=w9WkibB)iLSJR2L;*P z2Mi!rj;anoJqMYgup26%Ry8tHJ7_1(y4SWtU2h-?-}P?gvz1@3{C4HvSN^c_=as*$ zd>7f3N|?Fo3oBHM+=HUye|yW}=)FP_wb zVNgs@&8wvb7rx)m?kB5-*qOZEn%~SE-#XbJSdr?h>6BscTJ8DVGq}b4o3Wx^kSeJC({;ByRSKHoP+#U3puWy!Y4LL4Wq`1rw-7csLy8H&2IB0-Lf6sbj+~lZ-)zmVE%aJIYf@)J)Ord@AV;u6 zUFMp0>Nn;#caNE#V(BtEJ9JDF#1P0!-NcRKK!&n@V&q_SZ$m|3Dq0DSlU`iYy|MHp zK(!PzP!=k-48e}yzA$LC=AsxB761v(eN%@{dm-Oea}FHwcUA{WS2cYiW5yMHKLW6Y z!Q!z(BFX&Rs_`YRn$lq!#{qKh)_2ln?69@rJUmJWTCNoU91Z$W(-p!?40sr`8Ppqt ze!XqQRunlwRVgsLF#_hivDNAg!={R>x*o)qK!uopHB&Mud zUM-@j?Jama4Ikb=?x>`(xN?j+xC>^okO|`ko+0VJ(q(`QaQ2BCYHtRJiT^D1&82sBx^MZMtdHTxUF4@J>?cL2J0$Yf0W+mH&B1&_sY}{2e zOR~s{xH3jSk8~Sx6Fwxd*Yd-FSoNwG0&xi`LI6E!T$>AYF%;zjE1N|)c7}^wsOFI) z+JH{H<+)Cj0=biP4v*F_7&y}2Vv5<^vP`h5wL{yr>kG$S&q}TT#Z7?lS8F=C1ynZU zhVf#fN@*CdD{5RsRY6j+4upzL9CQ~vuOoKbCg67tQVXycjzV6$g4qdBs9|7=>FNUc08~G_$O4Nz3AVTSMG)B=mbgf&_^vb}Lcg3%xHm75vAYZY*W8!PH^6>Ki_ zdYd&yFfqRK8&ywF%v-I)54pNQluip z4qa?425CBjM_TiAhONwOZkc`8MebMd4Ns^+k? z2q+Y30ldICnOw+!JH}Lodd}@*w$EJOsFPgadWA!RBlM?u>qFwy_P<rq8e@9~Bjqn`P?U$(dS-x5i1}^|O8v2%EOFWWWRkYnKAVB>`9|iWtsGM_$V% z#-;(xAgo^11j*0MPz6=^!=I}Ykp!Lkd=LO)2D{$!g4Au!tvKEW<9<(2&a(z|5_l*| zFi2-cEeqJ)Y;QCZH?FUby2o6f0TQ>U9{*{`E)vxUE@wu<#-0F6K(xQ*b_26xt~N)m zY2~R1ItP?APFo%W1fv_GJ;-h0_>L9%8kzBk1$GQ_UId=u9Nm5!ezPQ(+uQBMcH!?N*=vOBbOycO_~9km>Q4~7A>8?+>-m%FQ=BdKSi z>Vho*iul8>)a^YmNqykm)QtV*rG6^rgSM~~sDGe%HSnbqs7zeQ1oUX`{gD<$u4_Bo ziu)ii8-A_TZ>8Hy3ceG#$GXGyTIyFtGp-M+z}A$fNDLEL2%8B3?B_~_-5_myBu^bN zl+?|URtC!D&DK_x^8GLBkdf@ST}SwC+%)TUYy&WKVYhmt^(H{2ho|}P%}lmO!cz)l zubc}!i;Cq$5@vCqRWpCWU*p%}&C0QCI&EPmMN@UU6N;YH=1f=Ujjl%E?1{{>Hc7dB-yciRDNgOQ4E7Qg)nVxL93Tz=?Y1R=1OM($uXsV~~Qb)4t*s zYcA}xR@{``b6y5U;B%dM-n`aSp>jjv+kUJ(Ve9#xPBU82JxX0tcUZ0N&hw-lEcgm< z^y+Kv*4(*gghaWGb~vckx2nU{ji6_O9UaftR(dO)oh$EdhDmR4VbH$91F=WXp(P3z zTp!d&aWV>?_Zr)-*=|Us9@vICQP}F&PO!M)4dkg?=H{07BISXpqthjGTP64NUX@jB zzp3)J%7-gIH|4P_En+qa9u%!~XR5Tv1=@Q>dz-Diar3x*J=5idsG=>zGCA7G8XK${ zqpZq$w5RPK_zXz6I7xR#=?*VV@mLqb=3;4Qcb@Td5AD|)^et5izzEJSEvSmir{4?Ip9Ko3G@$^S%!E+S8;VfYeGnQX5x2RtK z8fxzU0dSnji1UB`aH5-{A+-3lI9@=DOK(wazPx}wao)fty7BrC%qvu70t^BKuxsJw zoAHJ+ZfZ8G7<4J;pj92yd*}Pjh7>jkD0}ym=Mu)SBI~yefMdd{_^A&ZX_=OpjBe5W z`OX>St*C98d~HSN6xOd!>ipVgBI7^5>53&M4nTap^9QcAK}Ab>)!c%CT9Iwnhr>8J z#sm7CC>{=<@%rtbkW`pxWAz7KP~|S=QYYh{i{j1AaV=aQ_WMlb&dQ4`KbY@yE3?wZ zN-bAF2Fn5cq)ch-+sc0BIh;jHlL===UD(NNWP8Sjac^g!|LmZx(A_o0z<2)Lz|4blp+b^~S`EgJl&09A^?l+*K+(vq9~b z+^a?ENB9rC@Wvb4onPs+b;Fr@6$h)wuaQDBC-Mf(7-S*-56?Eb9uiGa_13-`xbd)^ z_)Z|-bWB_KsFio7`M9o7@vYdb6Hbts48d;t8p6XxbU(WPjc>evk}vSP#$M$PkW(M5 zROYoTx{w<(iPS0jYEQ-C{(s)y1ZtM7Dih5!N1T}Fh@9vA=Xt0*-&^xsMcrFa)Bpt( zRY-}b)`^|3eM=mVYamX1css zImZmiOxHFQg^lKRg)6k2$lp(-t|vMdBy~OAc>oNb%I_f9wmj7}6&yp&F!aF9JYT#N z=kGWG*m~e1un{aRvyL_DTfSjd^ZB#buAKt?_Zjf~a%RB@9J`7QDu-l|VmF+Ku-H94 zg-U{{(*G)mzfPb|G4OfKHaY=*ox(W9caAyR6>awFqMBvf)sI{-PbEix8YNi(w-v%71Yc0c+>&8rTZYZ8B(iMEjggt}AQP=^=n~tPBeiRh z=ov^wafxoLuk@UB=@k_V2R4Xq{F<-c3 z(@ZUcTIf>H!Ym1;Hu>emARFuJYnmR~_wG$RgNAj0YG*E0{<0n6!$~zp<-ETt{k@|;0@DG zO!Ms{9Y1~O53wY_35bKc_0Gms14-E7F+vE^l7wp3=AN0Fo*(|~`*q83JVkI8-`;8h zD$b!Ux6=O2({EAnL-^`z1jXmhf!e(466Zn?gBQZW5Hz04@!w1QWa7AC%XQ@DxjTGI zL{9K6H~EXA)&6T+5BU(HKx0PKTIv2h!y98{g0w7y{Lyz4v;@ zHms^J78AO#sq_5pQ4_EDz1H+`m_ReP6Bpb?xtJ z|E>1T8UJG8d9=_xn1rhW!6=TZSgDN$px};{Q>8P&V6h#L?1pz2z33XK=i8>%&4+4Yi?ya=l;Bsc8O$l!Jr8ythbqw@cK zjJl@AQRHhm$}qHOebC7?$&t==aC<;FRINi_=)#PnOJv(JRW)h=-lE57XgX${1Ol1T z^aFcoLzOCWm=1pghTCGXbO1i8tU;kjZgrhd6L8s@A)U-LMC45@-v>vND@r(jgt%sO z_Lw_%$=1@SNqjf&t)pA+NY8ut0g|RH#BgiyLJ-#{jW)BnuSc3e0|S9&w)D>KEw@Y` zK7Srxb^iSHlgqa#dTHi^Kc%uD)aRUTYt`;Ws+Mn>6KGk|C&@6sbYjk_s?gIRAUM+;YqBoj+gk!+kxM=NHz#Z!Xb+ z>RB-J_mnOv2}WBLl-f;pj!I;~^&v|61vwUBUOG0YJj(saUdaiG%bbXuX|Uv#$Yo0O zXMW?1!zw3%D@p3%4t7fURAy<`UuwZU-OG(pPIo$!<^9s*Twps~tU?!y68)*+hjnlp z9nk5#6ZMqV-!c)ta(A;X5x^ZoMLl5@u`Zf!E)sI}{6AbQ^~4bNx=8Z#f8wfSiqryVnGp-@Q)2BhzK8Q9d~_WAdWe zgJa`N7wg5RbW+eif*UAoJ>b7{;lhP4R?-ir3DQ?rMl1n6#2~1nGd$z08Qx%Lvzs8%#f3f?M>6; zSn#B^mO8Ot-g=o>92hQ0d*Y7TXB(ZJA+wogIvyxDOY^a_7VCj=xI5k$ zH0n`?|3*XMQns%e(NR-4T<`mXwr3jz<+iur;y+Wnv-bSj8!G0b`F7`Q#?UN7^dh#2 zMGlMID$Z8qRjc{i$(`8pT-Hyj9Kkb{Uo~M{c`4grQIDy%kmi>wHj@f_tiFR+^>A3b z{pPE#Sq~d3qXdKO`jcySZUZQ&JDL@NEwhQ#&z{=tJbkFrXF9j-l`LG zf0%TRr+OIJzd+s>0^~Q1?ndL7rB8nt#*u_Zn6Oi)&YU1-XaphpW%2@*7B788dkSl6 z)$klS3?J@v`+d+GPLegZ4qkBGxdRKSO%o6ki;ykXY58GuGfeDyYz!ya+Fj4O@&;iu zuqqrAfpoER)yeIj{#2%08d+{8uC%#J5u@@vVuS#cc0BVJ-WQrG=R-9|Md-X9Z5h|} zFPZ2kPQu+uU$fY!$jfmy+-RO`uf-N=>Xsu1(R14EUY}zW_gd|P@omq$;+Tbr0l<#s z(6->5{4D-ORr{veUW+KFY%N>GstkxSoxND5DwQM0mU*3_qNgr+Cdw^owFjprusFO^ zSc;t6RZZArI2qsV>MD2oIn?m#CZ)U)e8|5%%OVnkR=nbB(~>GSk8dA*_|^-9+i~hk z%e?vuzya}_u021NbwSgCLH5ZZ8E~Qh&HM2)r(e-I{v_a7cz&V%bsslxd(HB%>ks52GBN}uT8Cqn4&BJf% zQzgY;e(qkCG{*AXp+QAu8FzCr#(uO*b*#OrXCU}&X5iy35X zW&g|-hbud#Ya3n1*Nq^`I-wbOUdP84*eucrnvIRs!IDw^+LfO+EJD4|z&4D{Bw5tR)|(XDwUG+;*;3B~s#o&LrpCvUc? z>DY)%OEyET*R8jhhI?)pdt=?Vot3rSv*Vq{dS{rqnk9tA5MkULrUaIECmn+!Gbve) zM}wB1cAk3!-wY@9D?Nn2(3MwTf7KS#vw&zCdzDZb4j*F*x)Vyi*=4VIMU@blmq)+- z#@*Nvvl{2mz&zhx+XJ-to|4hGihh#3l^M8MqhTIEEAZlGSwo%|`sNksihyLcYmahG z1rtK@LJ_rRu~Wpni{1TLR0?%gt&*2RcQE*5lVU5q)R(gePstR9Kj1!Xa|mXD0GL8i zgwWY@h9m6hKTW5)OYpgbC0}hcRhpal4Wn+fbO7YhCtt)U3Ia@+ivAiFm>7KR!O#mq zPhgGkwhhi06`X=P4KvdgwiD;+_7ux2-@ozae}VV+-(;st0Pj>7*s*MGCXQv928<%O z(ByW>zzw3vCI+AW>Gc1>{FSdV#NHmb&x)a-1CGh=5C2Fg1)|IGGq1m%S?)b1_$?29 zNELT*gr!b2Tds+HaG5n_FaRRM2hp? zkUE2Tvdren5T2%}xh&%|py!rqPpUmf#b<(@B%VbA7L8m!7v9`U?yef%24gx5Bl)U;yZ`L+==jSAQ3tz(Ny{HY{b@j-8-?X~4zv*mYn$I`p5r@KN$ z=$L8?jm(%%DfJDtbWAmq5%9=dFh@>@N^1L7@5;TiLb&MnX=Z}+-^q46 z&3@Dw-*|j`)iVvu5ZF)nXO!K4Kj8+Uo%A^Asrst4H@XBCVPr>*hQYZ_g{5l&78Ezv zHViJpXw0dG*~$RM+h6U5F}Yp*-SQ2mZcVyDXAob}Z6%Q^BE=^2WFTUu8=6MBbaZam z`l!7$x%^;rlRL}}%% zJ?rNwp{?{dU7xg0hg*%dqT|(!hM{Yb8I3oWx&#(&b8TJR6NY0=vxQ}?oB&B%Z7g+L z3p|ag&&>O4e^&eI|4gTuiwV}MwW!{_C_8F?jk!863KIt6NSowGarYGnxFV@a;ws`( z<+smx+6Rsz?4DCq?G>>ku-{}NKtCP+tJ>9E%)O?V)v$w%k%0}B_+aQ^W3AmDJaN!& zFSkNzAp2MxrAiJgI?8ly?C}#}e5__+Otq*9YL__cYD;wP$A!NG^l&a4{Z1fBq>a8H_uT~FJ zJ>6;vt(s*$z##~<;`&(^s=3PGi|js+-i9)I2h7n2%bmUu6i~d zEiWU_aP8RfqcF`fJEKvDlj)oIF&?n%bN}J5$mj6GwRUZ@_C%1<-aOQ77yetV?4o)a zABwP+&-^5x^d2C+8NWv%b~Cw{7vbfe2Sw3)z&vt|{?7m23c1Gc^d9iB8=PvyxMbyDm1*BmwpW{Yq@N>(yfnjyKIqiph%2O0;_QU_q)Ggaj zrTFq6w5ZCPL=TDJSYZ8($^%7TN7MWN`9~GQR8nudDmSME!f`A;x~Zr{ATc-f34gVE!#cJ)auMv8kbSky;+K45eAr>*%NcJ_=Wo5 zi^8~7_q@d%#j?g{ts;3zMl6n;QniiTq9EhW?h71v^nzD5I z$ws@C1`SuA%UQEu2ML5lFMZh{uKn@*+dz=(Yn0!M5SNIBO(9$W3AEn(hc52U&Xny7jsZ0A99`lsIO(afNT| zHYf^32<1p;=;&ZKs#nvg1h0kr(pD8gLvlMvJ{ToO<1Tyh_qUr~Z+C~eyftw&)e6yg z!iq1=(Y9-4LEHYjzpS5Gi@gS%ka^tU0mtY9I6y=;u#^_=^_O;*2aRqLFoW%aIb*iw zY}VU;v$xvsHc>2HDGbnLc~9DW<6pB~D;_NmyDe8y25zXF12;^t%fNX}H_i)yqFUe2 zIkpTYE_ylrjPa5eOH*+e5fIGtw~4gyHU5TN2foI4)gA(0t@_mxZ*uDy#BnoUQOT%F1wsEe6S= zk5X`%<@zodFP0|c`wn?R$)d}2*yn0Rg?U@<;;a7%BS+RZhU*&#>%(Dl&}(LCY#9`0 z+Lme4)*Y?aPXehqG7i^;-DJyd7Wj6eX+j^FU~hHBbVd*W$LR>NNj;-Cp8oYx2V z#RN$YJXzt8p-hDV4&dd?Gmz^aPeXnS(z$b@qgoYFgwuF+a7ldm>A{&$m5T$CXO6)$ zmDkZX8q$6W2yf_73hpqVq|n;f2PmlOt2s@!1J4{DGNSsA8YwpfST+1$42n6Hs+N`^ z&ZO?UY22ziaqH}oHFSnez_g8*&h8{i_V ze&7VKR`Zh9C|+s4`tRLGe!E@|_nx3SjkA1@jDE~Ym`-rt`vMVg_j>=d0Hs@p^>;Yv z_zqxWjkG3f_3h?(#b`t!rX;chItk7T;B6Ui6S?1rl~RA zT<-Lx4zgf&VTecVx+7E<;WY3@eEJVlhc4~G*zj>9O&P&@d}X5r!{fUVGc?PwR6)LG z0aVq{^{($U-1YxAQTr~_Z%w~RLLm~w8q8s~oq@P8wSiz^(}_(>2TurQOZ7)o;dbiD z%#hqSyB#-R>QnYG4NE04`qSS| z1iGGLA^INEh}{&9W^$w|d3Ci(i4{Yt0SYg%bqTKxH^|g^4e(zKQJtrXjZ>8bWq?fp zZ=sNIr)&4u-c|dRBNZ#<{)|%=^v#P=7CEkGnd4<_vr=4(BDFx6zdI{X0bxvb zDp#QT_R3B#afuFCJ+ok6tIv$o*-d+1vm>)kce(RIvK1~}!S(+no Qm1xaQP( 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 literal 0 HcmV?d00001 diff --git a/public/assets/css/icons/tabler-icons/fonts/tabler-icons.woff2 b/public/assets/css/icons/tabler-icons/fonts/tabler-icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1a24ee3820c5ddc9c25391ab05ea0696487361ce GIT binary patch literal 552144 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

    flU)fgk=Yt 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

    L|Dd1czh8H=~D4o>qav+PzD3+feXzr!66 zrQfe|fAMy_jeU)5+vJydE+!yK#%C`@axy0L<@oyqO# zRt#7O3Yst82V!q?f3W9{bk`{p!NHKEb@5secG8$ZlofJdB4?-~#M;N)!MS3XJ z7}iz{y4j1QzHQ=iG*z37S-lU41zHpb7deBQY+wMEJ4RGVdR_f*S#I6Up)s;=pJLn= zqE=r?3|WI9#fQS2pcos(8tKYv+zIkcr2CC1Xq}IeA4J}kuKe9>8aM)riWusYVCWf5 zrRY;c`Dg-zNKFW(vU{AL58~p5mGDqd=wA@w_-O31XB=j&>{Hf+qI6=^QNz2B`4PsM zeFB7O6GBaA?j#ae!H4m*H z?e6i*?G|>Ub49As->*7LldM=0_B*~~a8i)lnz$PS%YUk1(2Qyn+JR2C(?n_p@tmlE zW6nxSFCKpk+!)O!=gln#e&x}$5NT*Y|2l3RivqsGugdhIYhTR;rzXd|i>0gc;*6OF zyMFPx(Q%Z#(GKyR^}HP8c9k?wanQ5Vfi;*+3XvLMz0bj$@H`?bf8%0Qkjvs4^p++~ zNqytG&G?OoZ;MYdE%KWOb~Rj0MDm;>80SCVK9T0gANmgj#0Xe zLrW@Q9pSXWlWTC4A4?wljRBfukI)B3+c1VBic1k-#h7>*e!Qby3KD^E3&Lf}+`Z&T zlAWW)@yi{$)#az+p9$2s$i&)hA-j+L_45nVr-RnW+QW2ZEhF6_K)k&QTwqp5T!b{< zV;jKq=X>;C)}Z)iDE=P>-!p{ew+WmX`Xw1S6AJXfTnYS@vZa~u{k^k;sbR(s zi4>(Z&q1((G0l>Btv)zrcb;=_WUke2yMr_6g-U;*v;AWk(UT~n!R$xjJ3_?>`2Dds zE|vS^^|qmH%j?B;AsC#OKinsec{z2YED22Y#yt$8$^6za_6!qXPg5_&O0sl%C-L{U z7N^XmiT2l!$2x}Cb+LD5sztf#*Zw`hGG`1Gkhw4A{=EnSLmxNzSAkxt0Pwk0FV z&ekXJG2>8i?-Pp|RE6(8aFd<@q84u$_Cs-uMTED?^rk)>O=axUtQdH6lS%UwPGUOr zN)~@cEtw`h=`&&J;nmTk<#fm%yvTL@>ofL~~d6KR}ik9|=>v>}~!VI_hSu zbfkT?LzZipDqNoaT+BXc;2OmGwHM67qxxlxQS83DyF1l@WZIvf7HH?~VoqQF%(dUk za8#Aw^R=Rpo#v%my-l16ddY%|1K3l^$zK>a8p|CYome9yHEtx=w~#rSaWI6ICYJqh zR24a=cZJ6rC3n(mm>biMcP0nW&&Q;Sx75*b?Rba`*O}vP| zVwFNwN=YykcE1to58mcJtR8s9HJ|eBC)zFYUyP_~CNRBB(gQmmzM*ezw(RvjSWXa^ zy`Jcvp*LlLuubAHBQdS5&%)Z^w~>8C7aN8i6KS@Eh*%m5BMVM%2dv30 zZgp$j#gF@-4Ou}P0yG+X0aU#c^XF7)yLr8TTZWYfw^A^8yV?(Sp`{}}XlM80_Zh>}_@+f7^n28&d~ zK_Dcv8CBHZw9h`Ty>GJF!ln(8-LF)tiS>GImjQM07Xvjsfk*0S20iO2sSh?y6;`zB z;#J+n@1F^TwlV_WJ+yXNu1z-%1s$k@_dESlsy8J*K6{FBlfKkWU{P5_HqepwS(XA5V{dA?&=8|7l^v+yL_b&a({x z_tIPSfrfdnU~KX3zlt7PMD)AFin&7ll;^VuO59MJ@vYZLC+)2tX4mTSr_3Gi`X*To z7-7}j_4D#CL$Kz{b@VAK9ETd)2HXEgsvx|-TyU}(EPIm92d7%y_N1s9=3-*-v^&{+ z&b=;X(k3mjRl3E&5d-qAhHd!cC%~R7lP5cfP*}cjtv4c5O8C>SIzAYz9c_J5WCw$z z2M4!`o!f0q!Zk)Kus8G7!2Q}pbr~h0jlZH=-f5$AbcchOhfoNE;vL2iL7t?w7FFrH zrBabc;A2#1iflE6QKp^9Kf2rd%nHzAMY0pn=nIp_Y`nFGGSKNxMAQ9SHoUG^%g|Ow%^O zf-7&7=s?T>)Yottwpa|p!`;JXkt}pWK2Ve3x?ohdMEklN8@P*qLYa6ODvXSljbfP1 zJO|7N`(g#-XoJf<>i5Zt;u0y!d#Or}@pvOQdLAVkS4j~i%d$)Rz^}C9ieyUdgeUdK zoD_tKsOpQfxuzvMc3@@HaDQJotCzX$AWsXQ(D!AApT$f|1pRq>1eseb-Uk$nsOWm+Sz>O#o3Sa3waCduAWBpBHV<>z{p~r z{5k2{-$_1f7a(=066=P(e*t}sNulrUGeDe^F=%gu;V)* z9l7JPyekKpPnA8gL6;B1G;>%MvZO-}`y`3&x{?`vk8@<(f^^E{M@oX#4nho#zTjcF zDufZuVQLbotDwjk@Hz8>3@Eh)8$%M7X~od!Di>o^t5phwj&1{uTo2)4K=SUpJfml3 z&j?;|pFb#g%^Do41&+cbuI6;bn0kH9YhaCN^@S>^Ph%Fa@AcHZeKJe`K(B+bL}~J# zEQ#h3TT&=W1-F^JUQ{cn`Alp`o8u5@Q?d)c$Q@Jbd|?0f@3-&#hJ1&b+B^lWp|l(x zoTb;ggd#b&9O?#Cr^xb&wAObtw&o9yLv(+!FWh=O_$+roQczBm+WsO)K_2L}lw**+ z%O;k04_ilqF3QNa^QaI0(+(_3T4W0nv4F^sFGd$DBlB8n4Y`i>E;%VHIZjQB-q6cH zgXO%rg~auqbD0gy+d_$w)8KjGhvx(~3+Uvx;94dZzbB}Z>&T82ImGT%C5u1Kztb8N zyYhZba>mz?pYa_aFYcyfLU~(EA@y_mQyiAB#`a!AC7fiDzxoM(Zh1iPG^VFFg)za% z$1aF}t!wnADH5E(C*<|GyX_Z^~X}o{Yi6@sJT0?Inc?}?b6;^T&`AKnD%AuFQBHI1ETon_f zfB3QCpNXbZklp);)sed5?vU+UubLoTHSFU-=Qi0Lw_$IxI>6fHs zW$5D3XdqmJe71^sAdM8PSq$iBC`R#!^wLw$Ibx(hEL(eHYM@$w!JcZTDTk#dO2k%h zE%cj@Kae@{aq_y7bJ#MG94~>bSDN)|+tSgo10GEHJEtm70h?~r0i&_mhrnfSkgfyH zk;fB{MLCP1jDKUWLrE?|?%#(H>ad_JY6b!Wc<_M^Pw59Se9j(206qFLbql~%!eLC` zl~O1I&jD6a(WHg;$++8aQpkKnR70s}k3@B$NCw0R)#bmBx*VA;bpl*YGu-7pvVm|| z#+(>C%-J!!*jjc){V-zF>gh}mS>b1%d2=k`ip{zuF}_mDVXCQga96@RW&B8K`_uB} z^w$}Sjs8iq^@{9Rrqz>qaYPWxnXmL#H^Yh{T6HZFR+p=7=~V{#B$%WdEVG=)hJ!n` z>(cSDv)d7n+?nzP=acJ%e0*jM<5YW_e!8%=$fIL9^fP(7lb)Xfrui_!kEf!jJK}&r zoX}6VePqCXwCzLtS?&cwk1WkN>XVNxr^*WNF<(E3Cm@`QIc6J(F(n6-Z8a{2eUtbjur2}7en5?T8R0#Sjf@Pc1 z?XMxXjKsUL#_lu?zwSvqXVrG@?CRK>cxaI4gm(c-PX zk#uxL*B13b6eFSynZ67x7UzG%C+F`;k z1~Sh5)^#o_fluG&B9kyx>_FW@XDQtsV35}y7>;|g<3=}CF@u>@76%K1rCv7c#B z$JSWAwe$;HYBIr>v}cP9V7iWsuStJX(6*D_s8B?|!f{`cU&{4nr>OTy32e(7A+sz| z(xnyRneh4nMo! zSF`!r;I(o2sDnhMlw(ybPNi|g<3+L7c8E(A(F5H~*K2gNHM7Ey>UnIcPS87g6MQ%r zsNEKVzE!PPbSkIhX9%g@n5U#M4a*MrtYkr8-~dmg=avV!9grTfnOdfjj?-Xc=;;;7 ziHm!}^LAHmWs+(g%p?jiqKFl~Jw}AkN})6QNaYAxL(v!xAlPglBn^>z-l}k{7mIvn zgvy^t18-BX`5>L!dji;}rxodkO=>5X$_ltbRnqBNl6IW67^MQf@3g~de^Zw|Txy8y z?;ASp;X8DI?b(N~>^-Lvc*qDp$d{lTO`Ychr*Zw$PJo<;rMPEYhxiSjIibj)k?cb( z;EZ?Lw8?O8&8}W=L@osZ_^9S@nFzkwQ=bY6Mm_F zh*L%vO;s*EV%}xpa6%s3fMbJQ$rt<^Khx(1*~K9u?6&V3;89-1LdPZyA8B`IhPXWx zxn4(m6sX?acbrBrV@VjO$sq`Lr}WJX72k<2t6&XGUUJB`%7NNwzUhh=)1U0*6cd+y zI;r-^F(`=|@x_Z7`O0CgLTt;bI!MxI=cEY(b`~gZucrs+DhZYMNvC|Y5t{+cK0&8| zj9y=!OzLd>q*1;T32c~tRtXP!B!lB@elv`j2Sn;7^;EPueH?oKN;zx*OkU9CtwH{XRALA~3b@o(+95 zjYsXFPY8$BG|CIAT3JK&%>EMIufsP7*O#*i6b+5B+mY`SxWUC#EzP0&RnZy zAqN(*!q_j5!l_T#V@k`YxOV9?#&b}JccAdf{`rWQ{MGXR!11q^-z5HSHZ12A%-4+?wo^oG{`w%D>UM4RLaSaZ78-2 zXb%2P!oDUeaj3KeDkcb+%*m!HwRI=8p_*66(SVh(lf8)^GVe?P@co%#H#~m4EBW9B zD##f2w@A0>#oE-qUq$Be();0c78rh9mUa`15!Vs8c!j%a=*05aWB617*6XWB$?3#< zd0Q&(+D>j3sRlk&mi2wS`iW#z1)W%q`Cfm=Bf)*cn(25-qnv}h=XK#G8pRDMi& z`q@Gce7w@!B;9Fv#8Ek;fP6U&P{^Bp&Sx~sXnmQahP}FNqm24t39f?>SJwO6U^?h} z=mVaRVlSVV4W}YrSTVN#iRHRLbaP`SNS5=u8x|;b(qFlUKCwW3AHhsj?hcX^F&tqC zh%OWe#4&)#cwWt&oQHmi+OPqTniFm}=beyS^9zNB3DY~Lla zVrrAfomewM^nAhJMx zUc@|Sx1=!1v)doI{$I)m0c_OXIbIYHD79rAlEMJ zT#DYz7=P>3@dvXZ+n36VnaAB-lrVlPayCm|I5OU2koa>UV{q+_oBtt<#AS&jic`Se z^#eY-8bC!c`rS4BaK){|1Nn)#{3Cy(XV;oikneeLoybf3n(IYB-1AUnU(CV{x+nRB zZpUt&FU>ezCtFU8*70TmxRKYkN`p141c4fj-iPNs?ch~n>9yO5xk*ftj1PgMYc;iU z?bhQ=9D~T4<_Hm3zO7u$&Zgm17_MAaxi1<^PcK8E|5Y+QXf~(H#h|ePW<=mOs%!lp zX0g%VVhavBA$O_izewLD(8UhoFA78o-u|Dzthi5O;tfiu*Lhg5t(+}rxdtb(ZV-^r z1ov^@7={bFk~~?PANQe`DM0W!seAlJ$lR8X^@20Uq(JLyAZ<~ZQz3+^^re*)bwWnL zAQHBEPb*Jgsbrt(93O2o!>(kHC@^YKuN|Q=t;Q-*rcnkS&=eXS8&o_UiBZN|Ut(~n z<_S~L^Itu4Bn=okif%(qusV3_`tBPr6QS9o?48EBRV`wsRP?6L zHHnwl$mFFcOh*gC=m&Pt7)ujvzLIoBvQ`pS8Ntn=EciDdYrSyVXXmPo2J_+k`jG;* zt8pOs9CD$;5MJr1LS5uV7#`DsP~>w!HYj&VNrYoCwDjMvbKoxSkVNV8NM`unU?H7? zLx*gIPeHGG|fX!Q{r%NNsF~v zQr_L`@rSE{(`wPP;+l-XI~a1ZGKf!7xeGPMbd@?OF-?V8UH?IAckO|*G@&TUO7MLD zH2~Yc6q8?6w!-yR^_ZS9&IXDAhDHCU6Rfu(Zu4DcFA>;53y`e zJkm%$?Bknit7W7w9>9>}yeu zB+ro8o^Tm?4=9J%_B+v`S0Kxiw{F>8auqS!tr3ApBY9_^6f1hjvsx6X>r_s$INiZi zi+9lLSo&AA(_69l+mElYGmWF&i?3|I`l~F}~)4r|SCw7m*otvHLy3W-4$^-eiF@Bt;D8f0^;ENwX3o(L1IDQ=?Y^`*WvVwwkh$lW3r*Ywj6%DPQWb6?3zwCLD&!ym@u~az02pw0*owt? z^i4fRh>D~CYY4k(oybWw_6eddMQs$1G|?Jm=CS-nQbz>~aa$U=8e89H-Ir)`;X&*b zItpL#jqAVVhoz>h6_1wO{#Z|obPkI>ohj^6>o4BqIbcdQl#iA&r^dSN!P!{$6+)m?0F0zn^Y zh1yGwOD^qUr>DBUNVf^zic(1PpJuINSM`%Ab)NqwkENZzF>XN!3?nWT}?%qjt z6VeGVjoeg8houKs9W?MJ-jP>&I9Qslp_pc}4Bx{X5r;ae4vyhbIZo#{#z8FMrM9+r zz%K+paH>dL7xn69gqpbN0$!L)7OAl9ciAZ2B@58B1JiwcZo1>vVtZ!lTwCh?hTw3bBgX;%VW#* z4C2+S%V;?U)$d7$dTSMv%Ui4^s5l7+7(Nm>xnH9K8i zKCFj@Rl9VJOU0_BAYECPXA~?zes);-X8sZ8Z*o0^U#1ZGT9c?1Zm3hds8 zB5mb?$+ba=lw3(pPdsjGn9y`1PK5QIJU!OKeNP1;)N|LC7ddkK%?ieJrc>)#2BE@L zfE8T879#w4g9LP%*}qys5Ph12W~zdJg$s&(z1$GpTr4x} zP23u?iHbBqbL1nH=K#S8I~!W{2<2_|spVn0KvW0&Kd}QxX0GOJgsK#mC^hu1g*f&E zult`#;dxfGMJU<+!c(GZi{e}d!HLgL)@(U7@&~~F$ll>S!L~?$N{8%WPW6cE`G9Gv zmZf$t!XMsOOFadOpWjlGJG0|-r$*CdN|fMNoGbb6L>}H;9HCayxfD1JysI$?(u9TV zP1%St=UWozuBIx{ZYiJaw~?1Bm_`G0uXdCG)K149Ywk|fLr{hu-1EbC`1uYb;KaE^ zDnQ$w#^&P!xpE}5DjEC1rS%9rIBr?0D0MHI_lajk z-~SgWx`Vya8`kLKAG5yMFvH{spu)O9^vS(ty11R)0pIy9pF-e__O(Y1f{rKCz5|Pk zgi*iA=UtrfPoZ@t!;$88jeF$3_Uztq^s*MsaQY8HE{S;XIaa0ruIn((9WDCPp2v z@p)hP=BVRl9fm_#)_3%$DJ=joW}S%lNgdwxer~iLy&xY|g{A^OBj!Sh7SI&+HQhM7 z?&uHLWBFYMn%%z`#4CR9{u_QKqaS5;EJkwoBR-bnfRGF>0dM8V`n+>6UoplIfvpO+ zXLadOE-capM-0R3)pe5#?X?g9K!Y36Wv*J;iD{{ptk{K7felqb^m8`RM#s07e%a}B`T|FEDNUlY&ME${%~f>gcA#6 zjFKd3MtRlz0=j(9RM2%$5?(&eB4`YG%qnHDIM-@`32rqC7|v_WQ!#fI=%p!No{Ye( zT^MFgzL>Nc08UZgBINk%i0-oy8umN`Zzpyc=6AmQPQN`92*UZ)x%(-ms`~;vt8k?> zj968Ihh+{2=gxw9gYF9QJ+z=IeYzeb%FD@-vSj`4V@_Vs5=&r6e!iE{hrn=rYA-)X za#-FEsin+-OQvJ&9;fHjx}0V=PW%!{qj)^QiQ2T>;-sZxs3lMV17-d5*kyd`l^L8W zvHUB0=qWGILu}i%7p*|TIL3b~@b@R&bJsR$5~xTFhhny*wvXuzWwu>^h60h4A*iMM|(y%zR>;&F?ds-$+&*_X(xAa)zC+gv?>7_+9`2 za=qjfoGx%nI{~539PadAJw@0_(C88~fbMoTW7eibuxc^I7{zH?pN^QH(Kk=~0l6j; zTHu$(9rtkLP3t1IEwaNmFA(!KgxY)Kj8$hqjl4_{v)sD^$Ss`?vZ+xMa^_@@-zJQy z4YiU25B_{Lw7u&d!Qk1jM8ac&n_EC;<7unDjBp)E(JdEt6zE6Hbr5+YW_5@;dH_Q} zyuYzpDws?t6$r~MaypPCRF0))#PCq_pwJ;GqbAS?sR_MMsy-DZ4K1>b;}gQP4Rp2k zwT7ptL0Olu;q)5}p~Mewf|IO*#*CCD&^Q?v;%PsYDaWZjt2Hfw^j5;q_9}FcOzb?- z_z^fqI0T*az@~}MNS7W#*cYPr?}x8%;78cv)9wO4zb)P>?EIDhP-#KKGYEFq;Q7_s zSm8Fpn`YjB0?F|1-}DF_WCVT0Z9x31GHi!Ec7Jz1mB0R%df~la;vMMQ-=cm90sUAc z{G#p(JHW~3`?=)N`6N@8x8s2yegAeNI(A%NBUxO+nH&8^a-4h-0QWDw+xb-=J%NRh z9d2B~Z7p7&x8w_dNAb_FqF#R^Cf~IYQ1TPN|BJ$`(up6%a&VJUlytpZnLiv1vVLij zk$P+%rj$^rAXkROq=jP!m;m!N?PH&9uu2w>`u@y=-hb_jh^l|MXM;8rnf`CX26A0*ZZjXnk0^O%5tEE1+IT{Oe@r>iWfTrJlKlaLO7xRR6%Tzz{$$BU#ndHb2tfIL*KVINa^OU{a(z?*PB#I= zo*gl-7zdK`Z0m5UE0R6IW=W?F!&K6N3uhg$9`@c`%C%P_gPdajmZnOY*(NISgs6KE zYs$nkYtWqU_7#R3l~~*ezRIKaKB5sGmufw69vfNDvMBA zqTb~y597g4{o@@qKv4FR2sKRIJZ9Tj1v)Njg0HY5Jl|29A`u@lHAl%$;2n1? z&(G^Iak$U@g->lH$gG`*G-@iV*(+Kr^FGE^J^@);|1P?G*`ot2=3sJDOUhOLWl~V} z1odOvK6OdRlzR@q;EZnyYgl>vFo&^!m}T!xj)e!>hHmrQ_YVQ@;({$)f2)cdQ2n;4 z>5|$in9Bk<67u>Xg{`c{O7CeaVv!LAHfX(>nt2P+xCb;P>wN373wQRiwA>oEMpSEL z3zsP2cw-knB_dM+G+{nQReG|In?keL?`c+^JA@x!@b@)Q*auAAL~m~xq2IUvizx7$ zgmFJUPe}!wRIKO_US@haOC#MP13H`)nB>p}U4+mO@hdSe(GfH3W#e;=bjv{er(Tqe z3fZ(oAW^iA4nrWx5aQax)}52zEd@=2v&vf7db6!nfgWjTiAEY#tmL>B+i@E@Q@?G-RVkDX4Z<-3A^9}C6uz&w9MF4I*IZ*1E6(J>PHpHoSa1C|fUojL1GSZ##slEf90 z;#b-Xm~6!H&85tIWUFk>AT7uZuxdN<99U?z-3YUrrKNf_%j~YxF-W;G)tS3{ zTVYU=jP@+nQMs(H9^s&DiCFe75eI<>t#rxV>Hi$qU=jm}v6G8{7sXcjkCH@8{IRR{ zrD!$$ndi{ZAn!N|nv-$rg`UV+tPKkDfls({3H?)G`OqYg9#4iPu+Qz5L1lM9h$v+7iWIO9H+G?a4lO88}b z!mmpRK1RQjUPh?Z9S$}gTQs}vzmKX;5hieuL1gNFU!5#C z07jl);fF>{OkC*jZd?+=Of1c==rV_yYLtF1m#Q)*3=#_HO%l|_dx>;X7y)+WzM}(i z;8=w$xB|R<8sSk+{aOo_n5G*4)FgOC@tjTvT+Yyw?gC01W#z?#2{hPG9AmK-3T)A9 zroOxu=k5Q#&x`OFPeqXpJf0Q!e#Mj`#hVI57{*dy3nqtb$Dk80D<(XR$Kq_&3|jKI zArx|ae1_w?bg;yVnfq6oOa~(F=!p4_yQQ|5S&No9&Rl1du8wIu?F^JE@Ggu+!*t2) zmFwuLr_zDMp1HE#i6^F{u`uaW#13=M`DsB8?TGY_QOoEF+A(ZE@4%+-frut!HqqtN zqfWP}VE86c+8h$-Vm9GW@&^!4!lfKKo3NK8CY?0FS?qX@2Cq)kdXrA3Qlg&mR!?!2qZ{agbn2lU$nyq< zq+C;mx9TtkyB*yg>c1*yB~WOQ&GUs?vhK(*{ZkSwAtFk~wDrUXU5=YDWf$%2HwlTc z(ZqS9jxEX)z!dJ-qBq1**Ev-)(`O+J-%_zInh}J60F02!L~wUp@s3wUq*_YhUG|EU z5UqaeMka^2+XKGJ-C$b@QzXZ{CFjB3JaD}d2i1V~byR0)hcJe*6R~Kx(GrLz7wPii zxM&xgxw7LSl={Yt09tUZe6ApGL@t&;GyTeF`%=V9xlv{))X#jcHHWyZo}zm84J(Z_ zLCT}XP()(*p&3qbbayM0krdOXr9eKZ^}7&T3A4R52yyr}#9!qO_Gj;lmHwR_*&aE| zYPI(AdAr27TNLpfO&1%!stndMLLRoP!Pl!&u&Jm!H>bMdhfo%)*LCf$Z^6dyQl=Zx z%Lrrw-)($`GENJ(dyAIj4OD!Vvr3C(_jBJfULNoLx2jCd>entJb|mAEhXd5KYa}TS z4z9&1cax$sp1={I@n19rFSq1S`Pw*yAZ-gx)mv(eSR0|x5k4Xf3I9f>|NR_+E5R{ky`9v466=Q$eLj-pImz}YDf>^?kWM54e&jVjnU%&6M6ERIGrOH-E%`Q_g=efyf|l=mrgJN9*x zmsls(4Ql;rS*o>8m}gFlal*iEO(?=Bk&yz%9_+v2xR$iW*IB^Q(7fahI-vN&$VJak zg%Hi+^zU6KKSqyN=*qYi&h6%M=GgN-%F`Po-^smRhT}Zs?EPY8Sw!L(!nKs|9O=Z2 zv%{;@1Tt{`ZQzJVLcFx21=9PdmGmXv^~k}C>)4G9f~ zRvF`S3BnQQmRS_)T~n_OSEnIImxD;#NeO1a9$8WBs*lkfQybLEldP1!bX41}@3%rx z`y}SlHz)^{$3MBRDoy)fwX_k&dIj>@bIx%6p+Kq7eXEOCsk@!SLBRVaCHUa+Mj?dP z;B%Q|+R}@{_vXAEu-e#aaTn%^l&|lLqpgI8Y`ohzHv}aNp9`_zlUJVQuG#T znec)a`)pyJqG)frAXBE6hpx)kB?6BZID9+(anovmUSrZ5l{05?c(T?i#Wb4V+#A#r z`kJfP#i%w@;D=dN+zm3c^yo+;(42!!iO-N7bpfT^vvQS_B7ZHg2Br8xD1!|j$3uMX zq4{X&UsRNlmp`p8iDGr~r#?F=UtKokFFpE<`Haqx6F~Orou!*(1%~G5XHH8+ZFP&t z=Qq_T`#}VWQo|FO5Kob<6@}9K%_phSm3f#S&O1e_!a=koE5tQ6CAbx(diLK<;P3T- z^8Zg%AE){d97k3L9l1R|!nV^vsYta9W|dg3Y;qPzdt>$}cpIDoFloYeLqd2=i)w01 zN*-nWOBXnl%VW5#6vpIXOQjTY>F8UN8wclDd`Zrv^c$WmZHtdqC|>rFzD7p1WE$XE zYc90!Z>rRH%to(vQnj&_W$WRSwN7ozBwneP%{}g(=Ga9IV$Kl1Kc8?3rfw;b&T(uc zcWW@d>!gxcXkULF>x^FTU6DWErUXwd;17Gl#=jvBY@LyeEqV#ltq#*NW}9!M9^1R^ zUPih&%tAz3e8l}gQbk$$yNy(uiAGocu|c^hgF+5_+5YdGpFgCTs>HKV3diO6KDHu%r7BS=p!Zwcye>M#p86vh$pF`!XhtCZ1o%h8b7BXI7VUKOu8A@ z`7UPiE$-9$9O-yyd|E}-D8nJNlFU(+VAdcEpFK88(T|KEEb_aBn3xV)!qV4eL%HAedB1$hx zs8@q_4Z$+YH;Lp)I4f1Ma{yCw9xKDS?i;pT$rf>J~5i*78RjcXpoGHGiwZ?W++6Cqg#QSBS)60yvB;Hap3V1)&Nu zUi7P{$tdm1k{NTE6gad~8r$A15y~4;qP(rbU5&vP`)OR|NUDJEX4*sBxp#OTU5je_ zW4NB$wpwGG-d&yGM5I-+rDF?Ge4LsnYAM45-wr3TS*PcmKG8DP&Ch67=Le*o8L_06&=J79UjYGxd}mN@!vQRz}P zUyqFWWsG;pqWG*aCp1J*4;ccLxy+bhc{&W*l8LtVUt(u$`aP|;T&kz@53lW_!|9}a z0x270zjGtAW!!ak7~qfNZxrgUptiQZPj?`+?c&Q)vws;dVsD2qPkwgBcEVRhYX?)Z z;pqE6GsnQ+RWzJoy0tcXoYxsnNJ{DdB?uIZ`%ye3%Nsfx|6Kh~Yy z*LUBZt-!dLUQ{{_&(}z5Hki{6M$qC3w-H(?1MvSC=Wx%CuEbRD5syd`|Ae-Le(H42rlj ztt#?4+$c%+-cTiq*q$Bx7F+|a3*7&YrQ@rsDEQQ`5UgX78mXSpnh1FV{BzmbLNQUH zW>tu9M<@i$z|sF-Z{f^Jkbg@C)nkUq#09`|-e~R2zqH6XX>itT5WCMcIQ%IV*F{TE zg}?=Z%JaAGOWu%sOeLqh5YOkZYi9aG?(U`!?%BV?Thk$8wHdIhf&psq2d>L%kFy&o zdg}?7DV2L34s9_*NVYb;7HwRULiT4EptDJ@w3#*&2YOTWj$+y6#W{Y2r=o0vnz*?n zd`j%*fPuk4_FTRclJypBAyB%4y5ZUKEmJY~{y0GlCX@Wibo5HdLL{ZV{^A{m8tT3c zJ7A9e1}^GJO3Qx)xqm~sZ)xnxshq|&wfRSycZW9Wd!(SENk3IQ#nkxV(#nOt$Fftu zXPgBfh7Sh&Bl<319qT`mtnAHFio)(rtB7&T)T&J+%3ALI3L=_cS0+#*s$f5}gD&Am)`*8Ot)5gtHa}beaf{0JMI=r9eQ6UR)#tj7EN;Xx@_at2 zQdzz0hP91&W;>i;IcRSA04p$j?gwUic^uG?UPoIOTn?$`DjwrpB)HDhS*mb}1yJT^It$Te zExs8uX%_!uBh>ppwb(_EJIK^ZV;&GV=8Jd8)7)lcZ>f*OCXX7$-Cy?=u7lET$c1|o z(U-~~tudtEl%c?s@7Ggg6VkTg-@?}h^S`1}uX#TAJmC?>LaJiNdL!6LlQ&_!diLh< zs@atCL`RliU+RiT!M&%b@(8nmHuv+gqE*gc!Mn5D0VRVdV?-3h22`qKRjbxi=4gSQ z(*aL!P~~r`qsm1os8q^XKBFx}N=3kr@p5^dp6hBbq=bDx0 zsQna&mqHUC-piRl1*!v2^1Y^XG*Mhl31s79@qQ3z%MKyQ$yZ^S+ZKh}lk$K$LFq#) zDXQLs4i#GMf@=QP`w9yj*BqW{bA0F!HI0o%FjY==-iuT1fT&j{=*4rn@K(%^(}-je zyF_^%6YUfPi@QrDsmPp^h0>D8dz*(w!?E3+XI0Epn|39(bc?PTSx$y#5d`0qhk325 z{zWwiR5jpwJQbI)D?oEN42q46 zfRsq2$^+X#uol{s0^DQu*Qp%NwY*o1)Lo!X11pT?{8kU-OJ-lZG`&UUYWT%&Oa$0& zu0b>1mxbwAozJ-SGH@K`=c23J?MS3f7b(AB5PDc$2+Xmr3ph1SJD9I)0iz)hZI~2U z2JOU@q#q8x%%XRV&=IppzH3qQ-NHi>^9sl_#dV~_ny7F2Udqg#innAPL(#4o0uaVv zeG8|T77FlaN)u)AytwY3>IDEQT#iA03sAdAq=P+($=Ze8inq*C8JCk>Gt7m+gzIZ0 z2&+@yQox!$wZ?3@Yokh_ljOW&>0`>VJ2+~QR#DH&*mjw76tA%{+*CCnc5UX{`;24M z70+cMnrn`L$nO`b1Z($8VjZhq;>rCJv8GKIW*t&V)jtX)SN1juLA8-TkJMCV6%!qs zeIBXm6Fix$%GGRw>dS>L2yPxhQlP8^F-xC9xowd#g|GaIo!Z&%LVK|)fz@_Po)P2Sf^PS)=G!JxD10BWO1qw( ziTZC4w}f(ln#d8b+Mqyh^HBSfMVq1OUuR#R9A6S~<2y_JDWgu28xP*osO)rxWc*16hQ*+i3s9- z;d!eGiZn5`;&tlJ`DPLO^`4aJQq-B})ZQN0ht~dOth1*+ zsY=C2Xy;{0GKn;jZ5**u6dX7r-_mt|mmQ@P4WK|h=up8X#_-}Hb9=vWN+*Tg@}Z@S zJAFNQuyzYd1o1-IitkaIv>~g-PlFbLl7h+k)O^Z&zSU&{k@`_Y_%a#w2i`CRb86=I zwTSY0QhSwL%ja?_uYw4HkYqk2rX~)|VjM@yMuMWvg)mcTNJEv4Of5?+O&0D(x)zZn z&8v9r3MMj6$hL+J=@95y1&7~da{qU%ZPwgz9(mxM9g&pR3{!`t4BX}3?NCyPa=^=K z4Y2Ui5!dw2h$sJL%Gohok&R~RzweT?4jg=seB0P-vERSB@qhooxho$ZFM{N|CS)1n zY7GQ{;^9L(M29?+u8lq`c--C1!5%tJ^O}g3HGX5XNHAr`vQNRSV#q6FJYjiTPwK7? zQA;!IJ9~7U*&KVn*c;gvqg*Tq)o{8E-C) z8R)IG!-Z}GBK(9tvc~K`hJ}jNu+HgIC8=G~%}6efR}x=+SFB9r&n*4Fkrwd^#&-sg zrJFQi6}zVQsiRi2n&l!&f?Tz#t1n8b6yL9?n%eu>`?w|tuCcMvZA{QGdW07(==v`#PR8B8CZEm z-sO8t2CH`B9tLd?wk3o=$6K=gltDl0$gc{#APdLDmB+|*V2hxaTrdAh-~5|DVi&6_ z0IDP0@bXi&@b2-4(E#}<5v)UB{BuE~>Jd(B?^$L`&MM;Lnk7%BS%YdXsiP&=iDq4q z!_UfSHwSZ-q;*o^S4F&(0Tr%2Tjiva@$)&0GVr5C`aPp<<5Pw7gS5684=V0I%z2~u zAWVpsT^iKzY0v~g8}q~J5Wkg5qyT6}{@ zCrxVBS%e+?S3~q&?|1C*WgY29R&H%-R2+YYm4WxO5^NZxMNcP{L+{_$D$yNvY?*{q zD-q_fKo*^VmAszEroRzZzLLr`u;1CoIn^e5E<~VuS(*jO(d9q1Axj%{s|_~K=8*$5 z**FyOiv?w0Q4f zWliUZ#<{Rk1Y&n6nNb#qT|`$IX2bhjEaN6@x?NWu(d-&~Aj?&$OuT6}H^G2Zr#qO& zsC~jy(Sz@ppyCLNe9r_q92GoBZ7ViBLgK{jyk{edhjEandM)^3=PDO*ky+}*O=r1y z!88mvJ)^v;4oRGKF`?UiKPb}gLi2-{;ITTk9(Q}#>a;#zdFJd7L;c9`(-5%9JYxdY zIuGxX9_?FKFu%3)ehbxC5fQuWtS zDpB&Ljq<#WylqEyYvr?7aP2IX!&YN|*vn{>c7O!P+$t*)^R z#ko^|PB1xTIrgF?&bP)rPNG>U(&FctesM^xsT?#xK|ymk)H=vP%j|u~ zW@kkLLRV_nd~-U<+-E(g?I$vkZ$LJQ$6+0Oc!e7!C(byCMNWN zB|X>q`(t^grrflPJTCKNX1c*HnK|n(J@A)KUz{8*_eG%Jg6$!M&-Z2G5R%`;l0~TY zfgOv%iW{(~3vPglGY>Y_{MFqnt<2_Zhk|W102&kP$d!&-?3C(Wspw4!FgY(CYep+9S*@XJq5utRh`yrlXdL-Er zg^eiJ8uo7F3O-);yB#oM`!!n6G}Vz!g!NMXU8@vwf<;6{8Fl*_iOV|hOBV1j$0>3m zv}6b`Bd&Bqi!54fw8L~Io^7c1n57cQKJp*Us6s3-B!ul*H9p!le+s@@F-KAm$UXln ztE2DTOmkP8Z#|Zf*sd?3R)p|vXLh<0A+lQfSj`F16g_vl%_Q+;_%tvwZ~+SAvhB~& zSQC2bmIE)=o0)^k<>K~9{ErcRa2$|>t}Suul>?vse~+hUc6DbS7x3rxNx$$FX}D7Q zVQ|E&_}uo3X(5rGG=I_M6nu2%#mbOS4P5TR@5m%EdQ+Y+3%^t*<++Uz@-r#vM`ChUT@grpvv;!SNR=K_kfe1%gK0B8QW{Jiw9-38?eB`VXSj9)c;Pc0LfQPE}! z7LvWiOvE6&TrG^C>KqOqFl#W_z`F5s7}j(Bl|KDXM&hJ!{gGdL)dAw>T0Y4CdL=!0 zjd9NG^grE1O!Hl?t$-IoCU}ac-izA*ju#Jfd>lGQko`z5R~Y`73kWdWx!I^FoBWwk zNq&Y1x7%+Ur#^MQwzfD-dXlgJ9i)RnaXH>ep=8qs1qQ?Mo7ry4TVzW)!&{5rb6x_% za#AS(Wz5_HS;_esicyJW<@0nj(gfe;VLU0%%)cepG%0W3^@xAz?+;0T!%=e_G>ReT zh_upbKYlI>X`aHy*M}$eSMETl6;)|_RDiG*P*?9t+tTQ-Jv8Xmr-?ECXQJU5?0l46 zJj?Oqjm`wEJ=-UKotO>s3&S;%UH?>e$cyF8G^?yc@^<48ST#-A{?n4eyv5gf9-mj2 zn=gDD%w6ZSaEImA_yOEVlX)P*((nD_Xf3b5vg2r1)M}pD8A~{#A-HndYkadC{$L3@ zP!o9X)P?p&O7I}=@_0NTw_Bo!=(1u=!KntsCWDOe;$IA1PIWRj_4p3HS#i&Zco+iM z4~_3#c`SsTU)Dv0;B{1~T(bNZ(WE<*ZFDF2xn=LXDa;w($64mZx!LxleoO(WDt@;% zu=Z*)T6r$J}soSmeGGO7H(2TSA7n!Hv}drhI+sP<7s-ts5iS+SC2OgKE%`{lX;4pT1f=W3NM z_CTHVzQB3v{P`;482F1NQ_R9@aQM%NVVi|MJ7brk77N=%`p*g6k~QmTZk$c(W{u!z zZaUL(v+0%GH58;}z>Nc8a0j5_Ez{@Es6{bad3rs1FOE*f-jje9USVIsTUSxp=9uHm~z91Z@PFy3$s&Eqh$xS<5U zh0}v|%J|o-Z}#E<%+N~h#bNO?o^5VA5vLRsxv4T9TGY92>R?>+k|)l<+M2X?LUEx2 z@#7vMj2UajGXABSv!~HYEWsk5dPxAL2N4n8Yqa;sj+WqV14k8%+LVqvvqXs>)WQvM zm?R@*$LMV68HNcV%K7>K#QNE=NntRTpg^0PVWtB11%NCrB5~m) z*49un;Lc=l>650G8F{bb>I%eLxmxKvwwrK8Ft6S6tlRs+J^EoK$-jTK6a{w0=kw`d zZ$FTN&ffK1>?BiVj^b{#H5C6H6*!hxjv@L*Za}$=ffF3lYMIz7wr!@lQq-nG$Rkvc zgE&FM2*jY9GMX0suROjp|2Q1{@9*dL56wNFPR?vS%iRn+12BYQ=tZ^z9iZ^%>70IOOe!BqWhLtT5?78=OdB4&@oM7>%f>KeS zC3^;JFk^lP%V-%hr$ja=&*f!E zh)y058ZQmC;B5wAp0f)S{KHd!>!9uGYiJC|l;^mYt3aJ8&1&Q4qftSeFP^kEH( zW&#>Fg*aluwEhM8>!s@yI z7v2IOp>3R_Gh+aJ0Ay1i>rq>M9Gsz13+qHCha0(V;qw2=`02~-|GSJm{41WQSf73gl4czgv3FD1^n z_?A`8Hpb_gi9iZ!+}UYuU>-)YSWncatjh|@89@Y!O*0*xM$mGX1R^C1jzgGaGWk=(@*||vLcc+V9m1r!7%7&`3C3w z{4y=aD+0vgxo8fWE$RHE{{aIGO@rGk-{(B1mbHM!FOAVOk*bXc?UGSpugRBe%@__{ zDv2C_yda2&7Rwh7=mbbNWU`jMcLOA{Z~y$tJZ0i1X9BDnzBb}1=A7y|MrpO@{5@$& zfHzQ;e|-6PrL@@vrU4QTNw0)z%)k<`;>QJ>4$yDN^XBP>^%XDQMdhPG&w{ol_E!kD zXD%uhDG-pFO_CAJPrkA}`}S}fgZXsYPU9v~I3k=QG_ zqne1779Gjr^)d;YkLW~dO2l5jdfvHZCYs3Yo)uON>zmudPrg*cde}A2U+^Wp)mWNw z3v~@%U9ytPYK{iH_@FZ3BB?BZB($BBx~Hq-c8&rUKBqZ5H0P~yf_SF~s&dB4_Q%23 zw1KiS6ne?2Q4%6WzW{IQfwBW)}2Jcklg5WVkrt9UWN5#N6H6T zsf)p4b0E`S;{_?bN@c-obwicUz4doJO&9M4xB$Vc60502-9a5M=46lJ9VcN(43-TD zvpy?ys2}4ObC7m0KJaL`Tck(GHNW56w-Yby1r%2Sr;;>-9^a*%WZ@Hm+% za^C^f2%D<%{3LK6BJ-G&w2I9Z($8gb_VzOP7h;;L#L_Qhq|3(lO$Zf$#~V`RinRk_ zgSWxe_gZE;B1=AE8jP_biVe*2^zRs7HnnbKu=LL2SQPyDf$)Vox+5{0I?pvq;es&R zd!0u=Wj@@Ziu|zMH!or?MMi+12Cm6l0K+VyGLlwq)!ViY`K+ZMhF@Bs1h*5jm6r8` z%?3<3*;^aG<{I90bSh~UL7SBI3%RMG$%^FU`_DG0VJcG*OOD1Ih^JK+5?NZM|D1qc zh%PT0bm~-Tg8^lhZGN=9H`J*fjc~wbhgYa2V59oc5_yaXH3()T|L0ffL&p32oj>9c zN_NaJjp^vG-W`iOCOQ$1ejFjj{CLY0SUr~jF@5`bhS?BEO+{Gu=#0aIAp%{mc~iJ? zUL*u|yB~XFgShGrH(|w+E9WWe(qV>Q9v~dk^2Fl-LP4iX3`+c9Y1an&H-P^!-Hi>k zgzfk)&fN*!IZ?Q;9RdY|iMq^?4aM-!{I)86UR6nLKUm00&XgoFuAr5NW3-sA?g!K{H^C$8f=(zmc~6-MS^mN>9aEY=J%$*_`3cyj zz&&rJaJI*L9M||guQ_+(P#@6qYF&jjgwa5`%stjCI#KHVpA%paB`Q0r9&NM3tG%NG z5TtUm+A!Bs+&1Q0a>zZl)2h#4Tr)xvKUR1>bF4X{$tG&m)286s;#42!^&@s`oAEF1 z-iWZ6>SA4!v}0U@_nP-r%?_*gVxCW@8(Vdp&J|bKi}han8;jh3X0_tdD3xXZE=8j` zf)TFGJU+p%sg=0{9570}lR`xx(u+EZG|{ zE)*~iCJjTxxyFS+9%t?eLEUP#zo=vzq_0)@7>`)3l&ni)Y(-?C`>G3vklIaM9pgHs zob39oc=l_l!qRIr@#u>#QOoJkdu{4|U>uKCY-1C_Uvc+R$l6L6LjYPrE0sj=>Rl9W zJwd3QK04z}9;l7lGv$j}Wc^ffB}=VgKztglI~sepmID!tkbUmL=^23sm}XjmR~gVN z56_cw@=Ml`ULG&%%HV5z$8Gp4Z&uVmB%mRz7&9RwHd126Rp$s;S;kir1mTpvx(UX} zl|vCyzM&J(5a`)fIOMV8DP>}#oD87E=kvnM_oih%S)Mh?m)91BfwyeIvUYp*vpHrrP-yFQ$H(x)} zYF=nHtCqF@_kcgXG7WqQq;&&U&nT97ENoy6QZ)#dQmU%&mUzjjHf&-AcQJ!G$hu6Z zMxdl|&j5pbCI5)Z0fWGOb(xOla4*cd9oIt~-n3{tl>SXf!1R9gl^A_3OQNlj@i5+O z-QJ=1`J0xLJPuhe4Q~5_lVy+a;riFUtPZ#o3UqR?S24X$(-BbYgQPE z{g7&@D#3oz(=k#*SqV#iZqaJ;*$69X@T~$~PIA6-SM7MIxA5xvzV^J_^vmS!U24-# zq*k#OmQ;E#aKO+QjzvH9BdwcAA=s`7=$t{Z>AIr;HG7T$xPEfhvtmnI+1TkNP+(7#%*2KZ&}6HBcQHF^ViX_f=zSb(c)p(>OE>U?{K)j zEHBL+`b(NC0RREZp9+e10KoJ=ekmB7U4Z@J1upKKr0b84dokG278tVbiPD*pB>NR; zvCzc8skJ)gJRB#!N+Ne zUG5`hzLvCljl<(~+u{KD_|?`5)m6K&FM^BOUbPi>CG?)kV)ZF#eAH$}8frhU(jA8t za z`|BT?*%h;MeXr5Tt}2t(ym~8`+h2z<&(H7%NAKOOqW;qmpx(Dr8 zVvFUbBKheJNh;InVL|b>H z8+H_u7ZO;R!H$7d2Xy-ODRnRHa>%c6?W4HCo79cWacafK6*zLPEZsMQ{6UByr1gvq z8`fz?2)4&`Oy+M|F@|3RldE&d6=!a!0Y3d>LCx2Eu@{V3%&bUA7I8THIWKd1XMk;S zMgXo(HL4Q6TO1R!m(E8QP_dBBMEm`kVi)r6*hYbLs1DlgB}`nS0so6U%NkE2)*0tf zub~+9X00q6k;sl?R3VbhnTTmk9?IdxlppESHrE9LYp5*YfGkmMVsa^{&ihof95;cR?h$|uf75axg1X(Wh~^F`-BdBY{6b(jMiy~CI9NnlH08x1Ll29M zWUw_-2#Fa}(kB<5c2Mc0Qh^( zQ8zwjhe&1-%ipXr4B$Tzv#>qiT@OEdAmP{kq9g`~BP{Nhn(1NzQ$muI%EVpZpjlV< zj@FeYprk|q>q@S{1u=XXRNI8=L_;hL6(l@Ns zz>Vn0FebIOR5~^_b9tr;oN7;j!A{|CaUU&r{-9zX*0$PFp~JG<{xx~XuzT!HK2=oa ze^$(U0=e#DRSn>ad7Cse`YOo&-67b=#B@IeH2ym7eimp!vCuL^dTD@gzU>j~dn;hv z;Ta+XF~O3w&MZPE3M%5J367pP(_}XquyBLrv`pFs|D2lo8JRRPd<;rAGp!fK-}IP!-k?&5b}I}_Sz@k0DM=|!x1YE>9; zVs0m7*BKlf|BCO3skTx%1)<44MoE7oyBT;1e=yMmR<$vqK$hJ?;n?`N6wxk_hMaEs zeReP5nCoig&WQ%r&PxWZdDaT5@KDz20Yk!0xDoZ%f6zK9PJ|05yry`TTnMi?PR$3v z(DCp%$faW1@ojGvBZLeb@akL%xrqk8C10c7>SS_!X;+ox-^yCsi3XqSz<5D(C`(P# z0+tEX&@FKTAo?{W6>i;KL{^t_?qeKAKYl+3Q#fE!1+ITV3Zh4PL@GwefZN#ef1 z#kzWhOqW~@1b*f85@2U*)Akr?&EeT`;pV=WV|U^~S~^eTk2_9nc}&hCAIO6Ib!%5`xNvT~XETvs~T78wtoKdeW%*GOSP`2D=SJ(^J~ns?d&;M#@deXbGMuS{5w zvT!H!-2xk>r2|z{nD18>#kW|+HM>(Lr+&>9Eudj!#f&kV(FMY03S^0@L$bgV(LJ`b zGf0X?4c{*s?IDAw6+yxHYorRMEqc|emmtt?1@dbz)32uV{(1I_7sF!10u+esZAJTh zrfsK}X7>N#j)zFH);jT!L%N5%Al>jx=AC?k(FN?FUZ-d{!7$jm2Mng;c)00wY06vz zN#zV3@Vj>T=Mc@GI%+0E z^rtClq;-H|aO6t__~aQ5#I+l@&uP{+w!kp4Kf*^#q;J8G=uC%nD-7~}MTrYr$8jT$ zJkgWmH>2JZ%F|uXR=-LTfaA`2ghf3usnkZ^-r~K$C#|1*(YdFGiX2U>5qHja^rWRL z1BsRKfwWS2X&xGOJ$S6th~g%YY*oGpeT`;qfRz|mBPXCUgAVap=S-^~X06brF! zGMbvgmKLcX?iEt7$i>x6$Ub^HOBdtME&Cy}DpEBb$Z1ok@HStRPS_ALdwJ+U<~13d zPlwxNA#;j3<<0$T{;30k;cOvAQoQVk^)46TLQ@fX184*E>KSkMXP&F(*1cpRnAHMr z*?r*N_U7*BjaRHC5m1eXvh6=xRgmpiTkFmP=Y(T-G-;RgJn#eiLyq=gse4&)QOv`r zGv(OgGEd{1Fo<^$;AIPG1oRLsqySAovcI~Px9@8(iu6AKR2D!H$hgKrxzD<6i9dL%4+SHi7<)NDjB~i?nQIfdcR>_fQ z)HJM0aKWQKczL{M3O=S?*bO^NqLoNg|LDvz5#PM}?`_a`e!R<$9>QO@GaYMH88m8f zoE}Q$F}vf&03$uSYJxpi^H!Do6BaPO)6pD^y6%__7t1PpjZH3uBMD4-ooQ6E&ss=} zv5Lr-#hEugelCp2y;d7t6Ipv7Wm9XI6bw|F{}+>I|r_-9LlSQ-b)6b*KQxzIK@nmC|!FWK45W8;~R(Q zo1-1&pXETLJKKvI*K-#9jbUE)3w6~rtlVp{KQ`4c47{1X+o${XS(JoN>?vR0M-8v~d>ozz5vxG$6z zo&HP#Cj&u527=Mnn>Hcv!B$PE(L*NH1e&G0A?!l8GzsX9Y{prWeGLK<%GxUc z$;n)DGz08V3}Lz68C z01h`N&f6ye3Iy;GyRMF!^!~fxsZHwR){7LoordYe7Aq(M4%r*nC%O?+7+(e=x?n z>z>LTo?UT|+JRbB%!Ij&3PnqGm(qsu+j{?+SDK~!_ibdBwLFw@YVp1TLT_kwWlGR@ z2!W|Z5GT<&lxYeDq$p(4rja-qjQiJ=6aUR_$QWc5P?aq!y4pEgnSfR;r&Dx_a`Hqh zR2sZu6t{yEiHg*8Hq3DmHE5k7K0QVgwfeH@`?mzj(~B&97_S;NuCd=00^PGsZ8yKRb=$|v!Y5NxD!xQk?Fav|#9`k50 zxTSgxfPtiRK?%yR*2*rV;_;1t_=UYICfK`Tp;fW0C8#pYnR&92v zhC6+<+_)9rbP?#gy%D-n_P{k-s=UG|OtGDp*WaqxeOO9aEJy)H*dQ$i9la;euy-5% zJOVOo2_izHL;prEwTyT?4<3HfI)DD&xc#OO4^s+2L{kc(c87jseeD9NV}48bT|=a; z`lHe@+s?7I-s)AO<0J(E#<1b(WGeN%K|SFp-%Qt@&+`2!$y^-zLdp~z(FUY0kKfK0 zx}!h!a;q6M@+^vr3i+p=XqC$;@2M#i2+XNEP1Y0ax0WZ{1YD`&pu0Y%U;1qy6_^n9 zXHV>Z?PAARALY=D^8B@vuBqS@EeS2zy~sa(oWr1bc{*7qlqcK0{CxLLfx2=iXZ_Va zbvvs%;YTLK3=678qiJx{@h>%#1XX_@3)F-&i1z>dz_NCDap7;h2~r~^1$5x@eYm^} z3O*SKZK^s=N|JX;k?S&QWU3j5L*hn@#y2lYCv9pT{*ND0%&plzrW05WH?(sbg3I7K zEc*~7!q)wc91|ajTJuPbh}tu?ybWZ@!(t87m=Lv+JqF%j?xzHAyn#$WaaC~RHAgVt z&UAE_gdV2yvqenw8`fm9Z$#V#ZNJ>`aA@g)i`hbNef?{hbNTgnhK~8^!#kd%Wy7p> z0~Y)b5(L><5&ZYdB3rLXo*p{;ElO6T*HB?T9^z-XsjX7z72kMHe@QDFiwPIhLF+Zrpr*irwXU?cKXV~zqj3#26 ziO;TpeNP}Ohs~A9n?>yY=^S9&wkup3j9w{e(~xG&S1X`NW6~wCG22n8?Mb;!38@{p zA~=ogfoYY6YSZ3oDk0xCDEbOiBH786O=6T`!2I#Hx`yM1Mk}L7vz;xR-28g8^~G*O z`x7xW;*!W_hHFWU3#n>~77Q!G8=*qr3pZq$mIvs1w?ihVbi}aqB1|ivqj0tFP%{&% zP(EFA5d@U=dpnpdI4v4Cw%#d0gXx_-6<(HWLa!j{KyonrGAnhOkvm%wZLYo9d^r&; zcq$-AZY^YfJyztb&y=5%l}5NePkKyM@OV&F78YZTrTxt49&9n-6~a zP*arMARZ;8G?zKm4j0U6qa_G@#Fb<3>hej-lBdqoCQw9~yGs3{o)dAwdFA_bUXt|{5AQg3&>%ykJv&3i!hM+kX8Vu*CbADhh<4=Ebsb~KNfbN(1Gb6En(8} zUug~~75~hayLa>It%#bZeH5xW3))oRQ;uOtc(~eukGC|aH$yS&da~Kq4EsCxvtyKv zPXbU7(H&SE4vTKQ>t^Pjp-B8w7GC3(!-Lz3J+c_R)5ox#F@lRG|E_XEW5gCo z)s&}Oz;m&)frhQ^dp)#5rw#T4cRGTD3UYFW&t(6IRp!eISrnKRcFQn9UR z#?gnpHRgnUNOLOAVKc&Wp40AIg*1C8)mWv^+M@iFJ%#n$*XvPx9KltXAY3Y6*E)mT zQ_Mv3f?^E)K>@)=)4krI1;CW(Le0r%%1ro#(4a4Ob8F#llOv^ZG08bH=TjZR=HmA& zAuMjAs}BE0z(Ez=yX}lA^`AB^+uhveTc+r8u%5hjWswt4en z+PngwCax%upK^HN;$90xj$vpkqcK_iXfAxhd}wL74Ino;z00q$CYg`zKZnzdlDV|@ zQA)hJ*~B=An_KWR$GF;=InGK`I)SG*yuQhv^vC{-Hr1F7o!|09Kc^aPn)0{Khv}~< z*=Y+k+p+t@@^ZHeZHnC9NJE*%FFElRhKfap_;nck3oRK$C>@2O#BaWDfFum}e#+L& zEY~b#)}7DRbxcwV7cx)wQ>H>UfUfd|)oi}AXHT=1Dc!a8D~FcQ3!k4+UQkIV1X2>G z{yV$Zlxg3-2ry-1;q<#f<3(=nCR%aeHRaa-OW-WDBYh>5~ zU$?_Jh_NWw$=R92VD>Butj|erhaWp4r8yR8gVx4Tw0v3`$g4M~VCzhWb<&s(P3m+E zONV`@$I)p*8a*gHbuI#m-@0$MPxXbh=c01*!O{Q509V?Fbb=hr~L~h%4XeIqS(T z2n=;O9H5T3L1xTik#Nx}8L?}*H6mwDuoT(0MQLrGb&FJr-4}P zwCPR)D`VP*>dB5h#@4yg_r`w|@o#-ouU|`>qZhjnAsrih5$&pKc31BZ4`Lx)3FYmOCu=8^{$!^E2lMKK3XA~r+ER{{6uAO+;>E#8zQ8kXHbK$^W_B39p zR5EG)*ieQ6h}VL_icZW!w)<4|U|rzCe#~KuFFC|`PMs5gz{@5(rP_ieomdJO8@&`a z(9Do*lIfcw%*K7^GD0P?fN2U3k>t8e!*@kco*ao$MJg2U3dr|m8A%^yAq^gD(2}$NvN>Wfaec4NxxuU%XAaP=TY0VygZuh z=iMSt82N#tE3dUh8L~WYZEY+M+)Ooz#qE8e6B~bfeJ9(-Lj&setl8n2*lYm9PUvz4 zPt{VfVa7CEnmy3y7r23UtT~oSnn&uwfwFYZ2CMg1HV@m+DNlk&Jxt!%gd^YX@A=XU zmerf~+A5J9zWf&4=h{gZ7mD_v?%)-%-7=-F!dARTsq>tNsv4lz9O_WTb4_;L`O`hy zJud+|-*0H~U|aRG8FHNC+u@*pOHI(f$Gj7x8O$xu%b0s44}8@u&hB8y-BT9vRv%=P z{zYQecFt+BZt`QfZvSX!5b<58Jo$uKZ&0i}%rawY=qC~I1Y@q1 z%BuL2+Yw8);G)HVJPd5)bp*kt8lkeXu_p!DAMhl#!S9nvzTv7K%+PfFL&7ZhSAho= zRFD;P$rM;M144*Xx}$nbr<2dWNtY7l>4)(R0sADz?0>QX>z-?agMSVIVgW>7E7;3jx)Rss=>9m9Pl zKYcxo&d|3|fEJf_%aGHbKsT$rPsxii%D{;~oRCLSV*NahJl!#rzl+3xy?S*Flj*w6 zUQ=b3=ytZuhN2M$P;M=I_c03l3bsdERGb(+xK%JstV0J9Qjad)K|IU3SFdVB6%4U* z3;FLwCj#u}mM2s>R112~)Sdi74t+$%6zZsZE?9=dLqW3GugOxsTx-+jmI7^Gm~oDqhkL?jTf^hl zcO9F4;`vMd#A1TM^VIR>6W^BD*u6Q$v&Akv1t2bg(()4R!_Iga}MQ>iz}Hw z(M)465l_k}c%!O_eE!-J?W}BitNfOyF`xRDZn}nX*5hD0fg(t&v zo8bO`->OYUKDrmFBJWKj>GwLFQ7>G5uvxQDIxlyJXd)J@B{IbDb`FZxfckuQkt(J$ zW)s6Mqc*o??gnVO$X?>$9fL6AoTIT^VQ43-KtP;6>dQ~2w{29=={+i#W%L$rRku$G zmg>~)efRZr*-5W$M=YMP0+muJ<7VDwoVE?8@&bC^H~DfZgAVWt-&K?~o(DjM99+Vw zh+yKEpJeBkZ(!I3)zHr&9gR=)3E{qUTzScxDIF&hBA33l`BK=Y9v=Ktu%pK;CN{LI zakOwqi`p8`d3KjhpkK4t=wqsJmmIMqq}$ZkCtrgndly~|e9qMm7&TI<``?6)Gn)eP+31`ZpRpwWKWpaEXNV(g(C&qAC>J!+0Pj%q{mE>u5*e3 z951Jz?%EBPU*k>|2%9rVxFgsB!3Bdpk)`pgD!7HLi%_bV`x=kYgEX=>cv^QS@}7V} zZs8BYJjzmAs=GRQXmaIzmq6GAGBir#2QvkO`3F z>`4c1rEr-KR9~@sNSE={?6$)8hFcMd!&3f`A%@r-uM=^z1BLpi45#`eshr zgXe8c#I0A^Il)SO7vxh~3<)L#E!-LTzGh%+F%?~upbt6cg$HUMy&11eE zboB9Ma$9>g|75zw;Gh2mEbYeTlkojd1fXj7?0xYTMqjm>My6^{1*?oouOf~pEa!2E zC&gX-F`SBw^QkIx%3AQmx(`L+z$@Oi*EuEMJs#D1>)ZQHhh8Og0jh1^`s>!_4?~Ss zeOXTivD?UfWu_3H%X@H1BoRf$%C6X2-eOosgDA)PdztQr`eCRDv45J$?MFwVyg+IcUQ*;5~e^TRO4 z2Vuf=vqPmpB|?%r;OBk28q1ka=UpGn7$l2hv22Q7>(*qQYTH3Xgs-*<6SvOu6W83H z$+tamZL#R|V)DVhV+}Cqth9X@gma$iYr1}4nNEG1;iDQHA#!dvqK%%n8Yv%t2EdEl zIkd)s;D1NZLJ=<(ImAl23pM0Qry=(b1`dVA|9i5Q9Sbuoum#sQWb31SCSF%Dq*Q4Zw+P&YL=?-!OI4o$Io@vt(w zkcw@s+z~7Z`_ZZLyxAMeON<_S476vlk0#jba%m;M%1Iy%&0RpI#CMND)9NX$@Alp4 zvxL2_oNBB(*|p7b<0_MY1Hl+JU~Y}Z8G4XVhc~B(Jq`KrGAG^TrB`;rJ3(~q4tbz& zt(;JhX}C|HvPD9BH(5=;EkE}5hn6HwwCMA74Te9ozJw;<3os-ggkYQ~j_0q7+1+U% zyO9+TniugDR`cb2U-m$#w}0}l%fPvvSEU-S;%E&orb@dDM>GF!*b3gTQ7mN3pQfuo^U z;Scf`92@J9l$)ABFqLABRcN#GVR%dg#%-YLAceDl5It|VP|&cLzG@KgL#*lsJ(H|T z*C>$lyfQnVRjSM*^f>%ptYnq0!WGP_F#r0BSb78k!;BMV#ZA<#VjU zYg%wj7le9mFV22kwzF$gXArmCb#~zX%PZh`1#&Ntx-+Bni~6#$x-5=S_6EUn-o{2e zz_*Ne6t?gee4@%lzvc#wHNI}CT(c?!!(wS!&QA7hGilzzz2))i}G_U|`Z&cRH+i5M(tNxX4cf#a2g z!dX{ke7^G=89gs8!Z(oi4#IJ4`=Ph7H;fZ{+y5Ws0&<)0fp zG0o5~PvbPCvMcB6{EqwiXo@jk-sr1SJP4BY#+DA8NO3<9D43Q>+QcJkADGkBMzN3> z2esz9MR39+=U}{-WH#DO`YBpneE~EJQ7rN?^5kZkXw6|gBmY&hk6Fa3R4&qQg<>`O zP{Ys;T?kC(UHO(tFnKqH0FwbJa$-1~&LEfwqI1-azS*M{5r5nn{%wgclH({|cZ$eyuCzVr%v& z%7jBzj>f+r9hMrK@56+wku8DQ5-)m3t;8=UzMd2GR6=eyVdw9d z3@BKk<;(t;gWYFt2R(~6$Yy3}xb2j({2OmE=OjH(KjpQ<5mYAf+2@;`olIJaczyK% zb*ktN(>JPsIUC;&v7#XzjkEJXiRp0R?cJiDF`I)7hqnv4TpweXm^b`81sDI!@r?

    INVqG@yj=^C__QlOcxg#+bShaZ|kf}=5Xl_)c=pfJc z0nl$Mx>gMTJPhc8^Ijk~PMp+Hpp&ra>9x4jZtJ~0 zL`=_s&6?Sz428@bfiG>BH6cR*`)wM7(iM+2!Jc_CnDi&bg23>E-IS$h(p-k0BH{gr z8hVHiP6bLwMNw5pATsgra+VEQev6zwI9AdSau8z4GIBG*B5Tv)2%*Wzlqt~hv_epP z#qT=;?X4Q>)di?Nfe2CJ+Nt)~T5r&HtET!fU~MnCFcOq=SYf)Jx{TqmJnCC#I<_3_ zTC%ZCmd;9EAoZXl`2I5Sls=#Y=%lVnQ=SsIu@dHiIJ(lUHtaIz*-=2@`)!s4qte@v zk7Yx7b&89NXFDWCQT%@ucxvdqw=jaJu<`OB^5_wA6!pMNz0~xX&m1+0qEAlp_0(P> zNjjf`U0$|(vkU6MPN7gNpSx2;z(}2!|Ak$DS^{lnl`H1#{@mUFUH5-Mb@YJf{MzAzmddN`1#iV1}+Cq<>@e^l63SzayzO zc)C#+hy!MT*MlBA8cYL?B3Ne;{{3ff%fp{2eh0jz%YV*dMtZoA1^ znUcgi=L+d70Dm^` z+hqp?|8u&|G5vYHb>Ny{FF2B3obXBg%%iGS$Har6Ui~|Cm6wbOY;WB~5=nqgBn1~d ztCTE0XAm0u*egfUyozdiS;O@ELv8C~q%5hi$h~KUj5HD04C-0)AF`Gep5|7j%Nm^e%sMF2Sb~7LjA9?Ffvh<@*8Si zD5_AIz@CfbF#PabG8#dgG)Oi3H${tErzO4^`LKTJ<;I4}{Rbd3y94-z{n4#}Jf+@ZM;nmsUnX{Jt;%PQXLdE;aD01SoN@k1;6u=Yo z6~38E|9K>hKBeQN*!MvOvJ(>H8j=9wBqfm`E-wKoMVyXsnPJly5Rv^xm_`tm@{Cfr z%rz4f27^E}(2H@XlD|zn?yh+3-*@D#E#9|;_oictKq_te23m9C-PD%i_<<5*rq zi~o&7fwb?1L7i-Ou`1WNS~Kxtrw51C{<)Zo$AUyh3RoMj;>L3+$`KHUmT&vkRBwk( zN@9?R7>UNRzNS(~{JOel7S`QnZNYoUaMOSC*%JrjM7iZ>m$Q20E%Q(0hJY*ZCf;)f z!qgMdpZ@|{Ldf$^&j!rB9|shxCv#FwSh3a_Z1YO{w0w2}dUXCRX{bBz3qP){ycFJE zAtC``$RsbaWhp^9r}&f`ezAs36mHNS^`wLBJLy7U%Xd70g}gcnxq$prW4Ps(HF|cL zAGFJc{e#Q!ph)BvjsX3e@#mHR?ol#6+kCN1@ShZ5oSffSlVWgDso8B0y!=xtlJ>@nf8XSL2O=Oh6H2 zN~Dr=!nG;p60cBb~h(Ba@@+77WNh(fIwG z!nL2HK`G3oK|IU3drpZy-O2uVts(+jjE!?O?K6k7(K1yM;)U#qF zZof`%)5sdHR87m{_039PDY;H5Fce)xjyRT!!zxMoUik7o*&ZMz(wh+HWd+@6H{kXu z9>gjA0@{5RUMEhp640_Y^FXUKkDFUugFC(_l*Ueis=V+!*A)iCf)f2Fs-WD{VwVTk z6mBhom!K8~RN}R_jasCK#noVM(tTh#HN?;88Qo+XZx4IHw(^OHo;)(X&`K?y<_qg|~^nMJu=P835Lbtd%|Qhv9BH*8+xlS%zI z8O%LtaNS^yg&8U(;#onI1<;>z6?z;RLJc0V75|^5nE@Ty7OrHDQQfe&rS`_H&@n@C z?G%84e=S7eN+zHL`m-lq{rHW4h7KffraOc6ur%M`jgXR}0Ov^#Wm>!0#`~Jv8rK6& z;6#@0g&~1{27z}<0{r*M099Ks@|?6<jJQ`6?NdZZ@5 zs8Q}O;NCrjRJ^}0EgmkZKM+6@pI+{*t;wqMC6_=Z*}Por^M}&~-4zuj2H5`@APH}g z`9U1e0f@%JP1iK=zH4j%+u|9^KS@F+6pobBeQwjs@l=j+93KD#%TpOw(sw)z1`npH z=GtSadq<|;jO%w%+?j%#OATebPF$VFZ@%IkHL-81%j`S_{Ir&T%m zoNZa)@E*{SyGuE+nE>>sW`JIzEvvb}oO3iz3Tdd9-hS(?yG`dAjOLLFVuD5M9pMn; z_ELi_JQMBi;`q(BXZk835Aky!8J}A=l;;SuvS$>R8Ou?(k~RZ1_11}Ohr>x$9nuUk{54V-LXFD!<&8Z z9alv4;$xTuxI3@{qgzxb${jcRINQhu14nEWbL`p#CC?3zc2RiIa)IlLA^)!qZF_J; z)ZUH4r{pud!1iYi6y`Kv%yEIs=4{Us{NTuhjP`&PCe@u>pu9g`MpSN1KMUk?Yt%H| zVMV`X=C}1hB>+W0y1&$rPYPUf-s4=54{GozZcFT1Iplh}Vf#68TYVmA&z@ePZVX3Z zpLA#?D#7zr3e^=Z%(F^ih#GX%v-`3^6V679z>)K~!TO3m#$9wJm$*m{%9upkgL`A- ziA{WlRzqW7K|+$@r}lQ3J~Qsb_oBCv*>Tztt)YShQOetbm|>i>*K^HU9lW`>#=;A} zho-HRLUq*bxSKq5VLfxQCCt0DK04`|cYd@UUDIPkYYcXj#kpnH?u(+3q}5iezJ&VH zgevI|TB7UpiH!0RT2U0ql%+Mog1#wd#mwB;_ZSc(Zy-wPq*uOC8E%?a(S#^C!?YFh z4&~)B`&-iI{=LXUV7sR2*GJjj@13c|qTG-QaC>@sx+5rA;=kK;f)Vq^$^3srwa2=0 zGB>KoBp!NBDrC_Rw_2(GQcnY)hE0}Eeo+r(E42hvPRp1_4FYO4jie1>4HC2^ch4ZolH)vtbO6&h?-1t{!pCsp)SwLF3Rd5W-kd-{EG(14#>L^ z5aP!y`p)78Wzm!$rDf`7ESgb%@_o|r8~A0AvG}eg%P(dT-mJ$@a2BM$`|)FPV7*ii zf|prwWkG}NTO}e+Z-svixHX=4xoLGBL z$-bbl*&hLJtMN1QhKvZTVvt<`vUiVzYBe5MF6f1_0ElfFsS?rS6!i=6l7MHJ@0Du=Gh@fHuwP0Y?P&8~rsFCes5xXA=VM ztmqbcK#`4Iku|tkV7xv0&_YEs$BTnrqw&y|!%nYet(pImitTn*W6^(yTxW!a1g8j| z>y)MPkhwCOsHUT5#roY+x^;du!n;tvi?SDF(NVV5`cIq*uVH4+JOK`RE}NAH&53GL zuU*xwd=YoH_W~#P{p66k=!-o2je%TWb9qMvq^}lkspMKC^x^?vZqrc8C4u&K_gqvF zUYE?LZx5Qo&pPDGTvvb$0~$K-0+c+Z;lqRC+f0{Sg^Yj({$;EgUW#oyE?X37&=;`Z zr`yv6{pHcK8X2oonu;}op+05PI#K16Ypn%dS_O?n|0?|5nlr&15TC(ZI<#T%*jjgG zC9FBy)q}`i76Q zTg|k$zxMA)Qo*6GNbLkhwY>X<8Gw)0fFKmiQ+VDyV9^A*zk57n%Z)q))CfvSov#s3 z6C@?dva3Ev`GIlMYaD?txi}23&BZXOzjtJ)PbJzcY;`iq_c`#Hx<;8#-d7>0aMq1V z9Pt8Mak`5bL?9LwKFdg;a^w3eW+;i@J6a$7F7PAbHqA`vs>1-n1(tmSJm-6b-O}fc zFSAc64%pIDg5u8SZOs-=EGRPHfw{=^VLu)*6tKSp9h5ldVaxD%9F)~+Tx|qhrb1{& zHit@_)lH zIw3ifJVZ#fynohWO;XxRuhfxV@%u4#zsD7gGUkq_d(%llW8(fJ{{)Ltdc4Z-%?XBc z)$S?TbXKV&JX(u)a6bb^jT^0Xo|g2ND_=l_+@;17t0fzpQ-*En4=^y#B069}*OpTx zzh5eoJt!9imo*Htu<2as(7>jAfW=^Rz21D>Hw69A6&$ARA&KL7nVaf3;c9jH5A~Pj zWoL6QF`fb$U8Ciy7=6?Kb+G!+7mA?dGOU=*$yV#A!o{C@0IWX=kIH}UC@cUgT0SHP z2K(u@azB>M3=MPWN(WDuK|?GpQcs-E_n%T4`Dydd-qVd{ig4U%F)r2*o&oh=C$zcq zFRgp>N%@I`^{+B0Hhx9xOi{b5E1fk({Al zF5s>Sa5Q%izHSX9ucH8_%uyqHl|@t2<1fP-I63 zwO3A;5F11M`237$3P~zj9|&mWCwQM|#U8h|P3zMVxoqQ#!PPfpv?aBRZsbE0+Mahd z^vc)Xz`YJ}LAk1*+a3S@!v)2DvGN$-Pmo9gW3uFMCYs#zQrNd-vD3a^V`?WaDH8oP ztdMrkje$(xpiCFlG-&E1xk{}b_x~^%gWqWp3zlv;5PV4-ZYBwykB4G#&^!z++?GVOM5PJNV7lI`e?3SBiyYNbEV61&*>k^y88zG;c;^ z`qA+VSne`*v2$$h7qQL+ok6752?PDO^u1k4z@i_}X_;>Sc(?9DUu>=<=}$b;s+t&}`Zrd=jDL09kVt{)ojTa5jJwZ1?c+d)a59c1{=H47 zYi6p=y`C1aNtbc;HWZe8O}XIRR2EQNyPDSw<{ex-U_1gSTqv8 z*~_&O3 zQ8+(}&3LqR*b0teFM z8*duibmDs`pQRX{?wgBq@AF#qfR2!E`;U@mh#+oE6^n+Bkg%1-@ijN3puXh&NjYp0 z`FJ9Dk(sk3bhayG7|uKAuXNcHNj;cN2`xx6=sK?l%naQ@!okRG)-Y#hW88NIf&E;C zRcz1v7mtDM4_yxJoG--FXd#~(C7?1O8OyX65&TKEx!W=SGX_c6ZC!l}x@@iqsGn0; zK>E324=@xWP?%+r>JSdMTY#na#H->~C<-jsb|SQ|k?R+%NI{^uWvVW5WAvEp(4C`8;5y!t^{fJJ zxtG{_gneJfi)yScWSl#nDRbp+#8XrfKj|EGd;Q^TQtiE*ox{EzQZ47Znh?)_x_e{Q z?s`D$csGwK=eYCFeRIjyPQ`5Xt_#D)u<`1hF>SII0Zv!^qR2Z3nNZhxkhRI-o+W3~RJ!Ig@=gm7rzj8&t+h1W`7SvLc9Q^E zYu-xWCZg~sC!`X_Yn@QBny#&lhB4(61~fe!U9kkta=9KDBRu}mYQf+jU+JU;AT}>o z>?rR)foy{zf8>1_@*pQ0J4L%KNJe8okj1qzu0d=5`G@^G&;;a936?q2gl|%1RCaX5 zN@j;mGf8J}1OU;%p+?U}pJ*+JkVQ^goX&O)8$ps{W@L14ccCd=6kY{+TLZ(vyXk9m zE6f&>W33R89S>-^20{ie#QDHlNInbw!g8Nb4D+goFHLGI^8=RvvABF5F_Z$~R1JiiouFm?Ryr&?#E@w(&X#{jYnlvFT^(Lrm{~VP0q|m0 zg;iWX>y6r_U;#ex6QDp(ZRLyj%=irAt1}7214fBz3V`75MQp8EUaYdeAuwAP5qJFo zF~?5;@!ci2)4{n)JbD6&(DdW6Er~vH%87+x9@bp}Uefi10Ea z)M}4PH{@{$pLEQ3-UMer!7T8y=p1f%ckUwMrBcU5r7@C3wcZU_!M_5eA zY^ky9_o*{tW(q$P7ohk!N6TE>)XqH`ev+&Qku-59ZF)HV!e26eJ^BS zr0st_pi`^s-U5$p!I+e8%zv)pn$!4pXNJUzg;lrc5}u!H)Gslh7VwLy{(vf0StPhA zjLbfEGGRSxHaudY>mCD_BG;peg)CsKy;=fpq?z0SECGuvK<;sB&R1`o6Ojo zax~iKS53j0d~4az6ZrcPiTZt=Aud1mKE>_=W8DSb0(3!^%v4NhWDmq~E^)3V*A`$a zA2`y6=dZ`(dTNU7a*p+nS5Da(wMQc*xYaDz}B*8GeftR9Ef?S^mbKa=3a! z#@R>V6;W3mIV(eYg-kZh8z1`=UK5#7!gXITH%8P&Y|w-djh z%Qdmy<_IaXUN$WlJ)UG{?t!`}7L-)Xm~4*dX*2PiCF}5TCb|~g^~nv`KsT$>YAjCH z2xS=>j>9N9jxSf9-$Lx5&k0zH#b*vIQt5DvipB5G6(msdkbZbJpnTnl)Y~~mcjgz+ zOfmdWHeMW)zZO%>Gm;*obf99f2bj=@;ZDz@@?i?;>TxPYd!TZE%}ve`BVXr}=k%H5 zPu(Wtt~Vkq5HSbBxqC1BP(>$-R&-e^ng2JEwq0K{uZ)Qiu2uCQ4w^FhE%7+QX5rFs zt08r)-)0Ag{`A3}zD^1?q0CMQ|K1=YbQs=(rC3_{UV-03zO7i*HDf!GA$RamxE6rW zpymQ(x*v4ZD8@AMSlU6d)d+RJdXyTTt!~#2a=&7HBL(g-k?aJ~MDV9G2zgh zsiiZj=87l$5vUC0J4gz}Ts4nT>Aw?K6d`Lx8%C)V(4zT9Zj0w??r9^cvkf~qGK|x~ zVp-qOT+Xb%b@OQjr0-BXW$@V4S0+(}bjx(x(DR~)t#NFo32Jz9W=8=5hj#(TB)|2h zfuNu+-~Bf&C+7W5x@++JpUUd?1gZ80@VdbHv#s-}?GgGyk znu0lUY6U?SkW?mA>=qTe_0XKsNUEay@}QSl94tZ5GV=*4rdfpf3ng`fEP>W{Komsb z?DEkuo!y3^a-ak{uubjs-8cVjPp2Kg#RqqEydBw}Jh}PNq(SP>_;@3!=appw1ds~teTrkK2#|@6k z8dL+d?@#*>VlH6rYIg^>0PeqfMAF0cI6wL0-BUe0K|m&U5-NA(0t7-4UEc1?%X>>3 zP~-|BwjG82G9Dy)1vYKE(PaL}u@{lWK_t0oa2k!HKq~~x8eN<;=-`&1 zOJ^3v7+=n>BbzM=HGr&4=bP!25PCl#cs_JhYNddx$%82i%(O1py$b9Y+%SZ$otAj7BMaTc+6qCeocQ`xXM>> z*4cb$F1Fozy*$_fBQmAMTxbyfno!ah^{+<0im|kEr&qfM?K@}n&S!$b-5+O8*P^{G zU%q0(ZhjuN4^z7qZ+YQInXi}<+0JoJVFJpFLOWyi*gWCyirip8Hri{a$S84~@kM_-bb8SiJy>(;s*VG=u_{P;}l zUqcK>x>^H=J)EqHU^wQT7(#R@==?g2@(6cDSJ=5t!7*mTQG7Vk=~4{5_ld~uGdIM~ zB`?`tT{Ik_`1X@D5%=L1aH-LKYLN#>T8^h+ z%NO~#iQxG%?UH1l7J#?}RWR?4s%8z7d(+yfuYG(Xpxl`esLgwWXICB-E*gNZF>^g>t}RFUuXjl({# zu_TQl&0k+9QB1h-q4-LZ{M@qZsj^xGJ6my-XxEYd43Dds-I{-*4GFJer(wq*8vJq9 z?^zQhtFJABf6ZK%@V`$*SjJMm^C zy+hL*B<8N_|995wBSyC7i|~-#n**9O2AIv)81PVbVI0KIce;=M$%3cZ{3)w~Yjdj6 zzjq96)oJ&M%#b11a*+fD^k4jH>PJ++`KBvrotzN8&!FU5KgK6G6Cd4qLi^nZuUu@l z94Ra*#o47?^@OAli6?(wtPyRFt$5t3ZoK%KX8Q!DO-y$_v8%C6FRC)&(u%$?R7;Du zvt4-PLe#il7cF4AOY=!T5Kd3qKz`aY>xR{zMV;Lla^DH?aOz?ST?%vQ z{N`L|n&amsmhQk|w-z+rqo&SS8(WTBGunOhIG{TgomY|^_S;_!4HJ*N@%0OM*&Y!A zRof*j9koOLpjo}7iBZ*lWJ|17-xy)JbQ0@Da#I0Z`^1t#K@=b2_BX27g`r`e%5^~N z_4^jN-$T02xV}L$)*KXY?)v$LFildmtA>SwyOcw-O8+5LLw!puh@UBn`z2JO_KMtS z;au&VLFcP5W2W(~E0&c@bh(&x6MWiYqAi@Ox4j7igYMEfTuF)f4xA8dlfkWRlz_RL zIP{qIP6kp-@WK`|!dGj+;lwf%yA_M0L3+UR3j+(r)s4B1|Eupy3!a?3ok3YIxFh|{ zF)qaM>P3H0?N)dH2({Y~G%Nd7t6Ayg25`XIR}Bd$>jcNGMK)3zi??LxT=U)MfHu8O z8Hv|IZ8z1(gDo2nrIl0>t-qo2CPP_-{z#imLoq{=qqOw)0(Ov4|2&8^20MW8Co!M3;3F3s>T64~lcG(qOyNG5^2R-_t;ONPGKo>j`1o$9O? zR$`<6uh{afhd1ny(|-aJe=NP}X_5CG{bY$tWyHHa{B8jZD2y`-4->t_Db-N_sM2Xj zL{&_jWc^?s@{*C)b*FjuP*xj18~p%j?2?@&bqJOI>bb{?xiAJq&O1P;;nZRRL58s2 zH>8Zy*=NZj(~HGy(lfO#XHlbZaHJT;@oABcFx^8ZOWAf*-2KJgLOL_|>~&UHcst#d z*&E_%Fr3p==!OjX`}?{{$*&|DwH!u=RJP7(z%lG&9Thn74Hi?jAUN(Q*B%aVy+Z6s z5P7abpwBsJ7MM%PS&xbSON9a_W5XN;wc1qV3H*H&v>c(!_gr$6686PEG!WWrWFF#z zfaBvn9ZMpbsWUmBsYR7ad~mDhJ@wb`UlpquZ-4)5bVLU+fO2xQOyf-}r3Saep+rEC zpC{_KETdW*X9}~RXgiN7PjW)1iqSrMF@5i_#pn%+{@EQ zzCqel5}UXMfw(Br)dV^vei-!Q*_n>pw8-#dNx$gLuZqt$2i=5;=grX>XHidD9+>EH}j7fgOHQH=6+2} zmOJq8Ys4a&jJA!#QU*QA0|e#|GK4NNXA9Ry*8Kt7n^ zy$8Y4y|$i*+_F_mQRwzYEpdCWG5{B!H!_sm^8n1jS1WN*nGDn~?cm(Q8-6VX#dyKj zG$!>79>Z~ERkv`Zjt-l`db;qdQF&_x!~4AlRQpl@7O8#xWEFs@SBaAy2XDky_T3{5~S9$225;lbx_Z9oXI#P5?H&Zm}3@Wk9gsA z%|sP`9)0d-S`>|ZgjO@5q?R9(AN4ldle>OFllK<3*J<$D;k+#xLx>{CNPK- z(3BGB8b*r+NRCyfl4lC_5H8yuw5G6H`1F+;?#!>GUb_KDe7*$}=ZHMW($s-bRdo0> zcX>qP+>qHErryb^Sb;8S5DgIs(tdNjsE51S zn!@%9--_+f6d`6izPsvXr#)CnQ+IM*BFvhq`Rd+E3|pS>A%6NjU5KiVp$T`;m*Y7} zZfrt8gHa(A=+dwwAzq*AAoFi(rF-}|^_UPF<()C=P{_G>I7Zw+jsA-B?qDOHyzvqNg35Vc&94GVQsC#`7>^FQ?6dyp5F=r6`D|=Q%6>u| zk81u*$7jWiyO8y(yol9OOHdVpT(dY@OQT@cE_V)^1h;vZPqi8u;i-F*H4gBiMnawO zsKyr#jgq@l^}TnPPSL-SR|%iwHt;&I3;2GGwpqW@9#}Y~;LJ+M=4bX^h2$`X*55n8rV3I`$0{Jf=t!0t*DCsJO?=@TLZ1rHn0@#M3)eH5Sn% zM5{fOQG=!iC+7;gr2zq+XeX;bjIB0E(e5{zti-&aDR22Rw|DdoB5Y?YHElquFT*zb z@l9u6cXSI{r3A9EgQe$PANn#LuxYV@ZFyP&f^*bQ1q|6#sT+}ha4UTXv~Jh<9?T@8 zGeuYJ)<(o9Tkr)!?dn5eF#xjFs*O?xHLZq+A~4o?q{24rC1<)17t^=dlrQ+q9gSJF zb4N~x_msO}!vv5!nIe}dCq#?RMyDROoC zQ6?m6G?tHQkG$^_ZGym?iG`ulQNgMF>8q+-bBh%ErlA9BCzg~4BTnU@pNl7zc++9oy3r$|kS?**#8D~jVx&_Z|r_m!9 zu+XcRE?k-8w1f-C)D;M5Z<$k#|M3+@SzQRtuZcK9^Ay`KL87){f<>=S zOfgj-jRf#`R;+fvNY)<52)M6e>mM8G+3N^!#oyV4=IzvJoMe+}kT$5YNOA1KC?TMI z5hYx!Vlkc`gMeq=Tt4!?8a*NfhG?4eru(%b&=PTa5P-vwRErknp9lfn8V9!QFr<>l zv@Fo+m5Q|XIXFf&u-+NwmTmJUv(nb=nvHQ(wa`Q{c_r@y(3(%K>2GoMCkys3mJXVJ zOOipI_io&FGGCdCl2hNz=i!x^s-gE$ySm5#miR8)JM*V2S3J>xM~;b#X31hYh?8k5 z({%k57^HS z9bWS`oLI92a>XgOT$b7h*AV$VTF??2C}NVj+>B{RDRkzpx~s*({J zC)0mPqJ*B{MEKB=BB2!!Rna=XXi>l$SU;NKd&pYd7s%;bkYtschiZLmG@sJs4G9KZ zXvj_R!}tO0Us*5uHjwBcEzM+Z`W$Y)t@lSv{c3qvq1ykn9l}^o`H{?_I>5DESD!O zBe2?xh|(B|IDj7Fyt5uS{7F(P`K5xHQ3s*knkJMH9VgtVPy# zJhVACB!Evm+}aEh{$sbxL+<|{004G$cVc{I%h>8v&?3dXvptvxy7Z!pAl0oY>)Nu! zE<>3w?N96^peQx?a4#aLbi-odyQAl94V&t03E@=c(Fjr65P9V35?>ICcW@_}bIYg_ zY~t_AiTg!v@{9rM3;a{NvIHAcqjILVKf=yvSFOqciYI%!Bp$MI=_gi2oFhfb=)s{C zgGTDE2XcWS#GUCn1eBT8cBN&BmjnCxO7`!*$SM^O@|NnM$jG(i*RI4`z?*j8*Q0DmcR>)Vx!8apmn{bT4=E;*7zPf7msAr89O8mz3S?V?2fV?@zC$ZX_6vVJD1#qK zvRPzJ>ptYNSZG3P9fn~QiOr4ac{db!4Ojyj$9#xgx9{jfTggQB@iSHu1~nU0hsZ0d z)J>7gI-yxbUZ)%ZVyBlWGae5;Vl&DSYg^rmw=M$9B!dL9RA2NKuOOB^a0x8DsT>Xl zb(6*hW`g~=3rT(r0=Ky5oE!J#8xj>kvq73WZc)4PIDt97WM%|``#A$2I>65!V+~)3 zS!$a?$m@QglJnAfeZIV;(CE1Liud54FT?n2fDX-uG;?`mTiEw|U(zr@zUz<#)dS9> zTUC}L$YVTMEw-o|z!b2yjFCfJU2SP@Q|UyRi>&YD}WE3g2>*5D=pz!6cb4wEY(C0 zHLfhsVKk#%mrn=T+0oS06(Jv|Wvr5R*Mu{z(UK7nNAFP>UkDafWW1 z3uL-Ob9F&hiB3$DONYxgm$rG^ILVGZ2E@`0#={SXOKT!GYKjkKb1`gx6}VT>n;J^Ue~RrOeA!+OZAW9iI)B z^DjuN{ZKE~6^mqEq075A>+8h(glmz#-*APxDeX^#f32Zxravamg-KETf_u5WS>n#& zQa$%}hmgmq<)L$q>ib0mc(MY_N!^D~7o4H;ofq5y)Eq7P4>E(B$c7yVE;^S~wOi zz2d%w!yJIZ!llbTo#}=Gn~+v~X

    LuQ3+$+QdZVa_?k~Ve%6mq{lkGFXN86X8-nkPgLR!f zCxZ36wa&3$D=ZBHiD3s7Zc>KI#~yMfg5c}!PWu!DlCI{Ax2D6M5pnkO%E&}X@7z4q zrxUY!6fDs0VA!B=V^u`36&{tOoo}10S$jx3q1RMltJO!Cko)d`DdREf#9stpeNWi3 zfvia}4Gyi#id@~8(`;~-a+PoGRMWg3rq--+>s^LqT+cDm^{0*y`xZ?y5m+PCGhNA z3!}_g%11Af6F1`d4~(5eK5b18koMX+s7~l?f*)YUBwf(6qhUJVOVeft9+t*fc{4Wq z$Ui$cN!NAe^@!dG$NV?JnOx;rZQkPKe%XeuxNGhlQeJxxHJo&CK(Y;3+TJGC*WJ83 zp0F-Xw(HLA>mFD^MJ&fL&@?SC>w)TczuQO5`v)B}B<cbtL}S}X0v^=+y_MjN zxq>AXsEo3oy#(8_XzhAKlQL~@^s_ROqk#h=#B6_NI+M(UwloBx|C(;OiFrSeL$q)- zzp+2vyXFj*ts7yT(nA%r%V~49;9Vt2X z5KoW#?k5<{dbuXUN4SUD=Z2e57XVYNALgdnPWsq|`gOL(VfK~af9BG=uBbowYKdQ= zt_pgweM|Uf$wj``=Q*J@fy42KskeP4bPdvb4DlnvcuIdc-7$1g#7#Du7NA9+sE&<; zTiRI^x3f~D@r}1U10D(O|G0*r{r-<;s_CQrA9gkWd#jD19B9e<1>!K4)uigUYdy8j zSEY8=v}1B`*J`MZ%1dvG=`nsdLcGV?f=B8bIC)p+iZQxBA#aZl1dF*!uO`ec&&`Ry zEr2O!WjKNHYb@{lI%8^l>t3#vN#kk4kY&3C(d7ibt^w&ImIZR%o459LXQEXo>j*H7Y{ zx%IfZ!NQ?FCS|<3CQlI?2Z6&DjQ*S;PE_@$ z|GbK&g0=1lLOV9z`FzlJI>y3~9E2k0LfJP33Xa`4!XEh9M3kn{LSPn@4w}H8CHlY7D5uuF%?y{jQAwSPg zs+%D(+k-RR-vKJ?OvcSaJj1b^v7{eT=HRvv7=kEaTX%a{CnN80D&SH}8%I zVW#Rs2sI=B?54gsMF}aEje$oUaAupTb8uPfNK=(Fh}fX;8}E8f*GXZN0AW*PhzB~3 zHnvO7Ur#0H^toc+UCRzV58xoV47*BxU~I)bJ5|!(o;6#2V7>Trkw_@iec4D z=ALdJPoCGjgacIc1wT3RRrnzSMx!Mkhe3@r2N*!bhCK>QO0i=p%yjALe#EmcN1CJLjUV#t`LN#A-xb= zW&f6^-#Xt8{cHlX5YogRA|PBl3YEp6?&Mp9JZ^*PAA=<+sClYU)1y!Zr%G&!W_z4C z30JPm;{)y-8GUHjtn{g@0`~CTmg>=>Bch5@Um+RwW0)h^ga{p559V?}fsR;DN<~Cm z+Sd3g8d-3kyQv%v0^cHhmy3cdU6ld?ofL%=u|@g8j1BJYTEQB)Imsa76L`QfKJ1r2 z16WbTfhPYr?Bb;Ja40iPrOxvD*CJvl;p4L5!mTPhDF}2Dc9u6xJD2Wt5E=i{I=A?N z2IeQmjXWNga0n*HaOn2RRw$!hcld!e{%OnlPZGBEoE4{0F%FryTLgwr7{kZ4W`>_> z1Zh99I490E&EDjgF_TZO72R_1Y7s~L5&?jyzY5MheN3cM``2CxzK#dz{O=CNWiISg z-68u=1+iY<1ax-Nl(|rScImiC-)EOZiig3c&;u~a9^!Sp{BT&zeujilYVBU_>vN$m zA!vyy5<#Q^exYJ^H*Qw7SI32U#RY|ZgNY-|)rZj-)kw-A-!Z+Th|6Fo)Qsu!A`OT- z_pHSB+!hWF3NG`@UNgao3eLV7dsp^&1bY-tX?#DANrS>$p?*5juBVgA&iQD0<1X1rP{`Z7ICzO>{(9s z1G^|UI^)GmFH)=>aMueazt?sefgr^xmHbFqh0iSy7{6L&x1Z8&xXp=y`#dWipyAWl zofku=18n=szSjKYT2@@%pK!Neu9G{Yn%Xy~_$j-*-INuM;oD;mugihliSb`@mkCW` zfb#U73|@GbFXS|#!PT;smslfRTo=4vjnEGbnVBsmSc-9Q1@TGwf|Ipgpjn~Ey)?Xp zQ~XMo0Ojo`Q^tjkl1VOr%YmWk{LoHR_x2$2_#u6nz357|OC48VhNH?hnPDZZitBwbOB zfu^+;JR-kZk`d9dO7RN(0?vOGMrmO;pR&s<5;n8ZAbDKB!td}?JiQ;gO54OiEV&?M zX_H;C&etS@RH6C!Dk0}}YO`n&25BI`6Q;xN7zE^-b9*cmmmUn8J3?mN^$CLuuIJkZ zJf!>6+Y3~v5516XC#XINzXGj_tV%b~TS18smx+sez4}ww!6-HbR}^OPA6pM*5gco4 z{9FZh>n$^dau3FE5iD?=L)r@;1fV9J>s8nwm;xv$i05qd;dGPT&~u6Zc=F&l=Ayh6 z#RJt6UmzL)1-cS~15HZAQj&PZbr8D4KsN&2lZ?MF(4FX+-yDYkRvMbW$LRC2KtBST z{81F}PA*M+$ETD>pWDtVm^c-^Zb95z$X9GsGPW}7Wzr>ACQLp-G@cfi<*l5fJj zc<5Jfh7Uq{36h2iog;|f_@kr|l`JUVavwIneMo-YE1YMe{Gt!Te!hzZz(3iVo23hjQdcf-z!j$OJu^o@4E&YwV7Jfb~|Mjz6YpLe?86o?B zum^D71SxL(Eyi3nlm8ug$((H2`<^D8Jtq;P|5YWvmotjL*M5x-h>8Ty$Z4~{PDJVeM_Pfqc-F(4#;XB5Uds20buYzfF69?62|Dp-=GF2!X zXCsDJGwS<)vxLe*vx|y)v@~!;)m%r9X&72VW+XU9pzpBP7PnrBw4q{!9Q$B(ZZ^~k zdc)IURjiaEuCByxFG^q?JtjHD`ou$L*BvWgCgOqss)#-AC7;>Zlf7FuK=OcwTOVCs zHk-O<1TM>%0AWVz`+$ypf5xrYMc647|6|DB>JCZk(HOfD+MY}Crrt>_Tgf|?QPE+3 zefVBc5>y&9c*#p2pv9c{p|w504Y@wg)H{p}C?#VG$%5^i zB9H~Jut>j|MPV?%C#nx%HVvEsI#!E+qqU-mCGhHr;C~qHlg*tb-Hhe2fxK~X=fDvC z=%OIjH8sRZVATZHT}QP?q!9(!Y~sa$pRB@ySywMYORgX+Jykc4+-=9ovh!nB8j=g$X;l|*_N1;;pv8A z_NaeyT&g{sV5;5zt_*tFr-a($GdNAZ$EVA4b{92CQ&Wq_>1n$txp|y_tMn35DMJbr z1elPgXkzILHs;=S?Sv^1u!M?yN0LH?@T98n`X7+tgweyK5u#Xgy;lG@0o~q*yi0hV z7JAT=0UGSA@tT%AQlOV_x@gGv>NwNAbHm~1O4Beh3P?Ap4=euu)j}xCF}N z8PnNzXu}B698#z)gj>Ln$RhR}arlm2aw+LbEZZm|3i-Ut$f9)~35p)Y?5w%^sYG`K z&OlXPNK*2o)dkDs=I$-C_H1VY!YFqv_aC_+w0TUtB9zkVqEzK2YfJDD*${3fy+bI0 zrrX`q^#iZKb;8qa$&`Y4Uku|>$GcQYXeT&DiHM@}2DAL`ZNlo{U}B)f&*my}R&omf zwi}h88Ya+ggD~m)I?xn3^KM=Ez^ffORyd_&!xC6#{^o;AkQA$r7F^TOQ^IwV06ZQd z{1fYW`)iTWbZv~E!fxo1WbASo98wO}XR;&5N(?bFqa7V@Ke%$hYK98+N@pd~5XL2J zkrSy#qE2SzMcBeBK=X%2n~XZa8w`qN6aI3Cw>TrN&{7_Fcn^IaM%HdhlQ`}pHw8<2 zGF~avluDX)pv24Y+4GJ#&wng67e9qqHvfm!H@Ys$uzF>fh_!ogK5L) zEnWntLV)?VfI=xA5Oo z1#rXsIfHecu=g{I-tg6s6+^A3t;_hq*EkTLBDv^dIG!Ii>?A;#^tQ z@fcmU=0Ty|)DQB!B0nFpu;ijFb#K$ya6iGl#$sShXt>qX27A$9@G@f$VCo;IrizRH z5*os4CSyRg{vg3*vx#~_u~HfhZ6&;$z-+xYGMQJ)5d1q(9n`p8_ajB1S?Zp{{9zH~ zG1r~D$IKC<(;uo9Tv_E903 z0Vrr@yOyDsaiwSAshGmCRzDfGgchtcFzc*HxC`Z+vgi-XQqXDpqSGckHS;b@CC$Kk z2|Ik*b4PLT{#rn3# zlB2+lz}ODAd#yG06QY}3T6AAEsnIl|U6NvUtAOOj-h$GmRcM~%pia1<-Z@Q8V=(>#TNg0 z*g*Gc7}Vnm45nOLS8Z}t{hAzpZ2|n396maXRfmA5LKbs`H+2O&!P*B&=nYDlXa{Gb zLdnr9XJQlcM`Y^1<{8=z1u6e|&=mgALlAp>ru7mJPNv#!5POTsf#&~;S08_6N*2=R z7a!i$+wGHi7T|C&C3Yat4Mn)3Ke-od;iUrBP#ruNn{7kRWuhzZzGYwM`rj7C!J~tJ z@zx(=2m0!EDta)CTLuAU{4J^ivTengZy_kvCTkRYuXK7T_O3VBLH4XHlQfC%LtIDd zeoX47AgGZL_NkQkOJ4%7cARcdt9wlC8*kf?(f1@8@qhXq;m7ketYakX%T=&s zok|iM$W)IAV_40C>#-L+-*Y>aAB4*ANTY+%IYrBer2eeAkxB-^*(=Twc}-ZlnQ|s*AHW*qLjyX#a#`Hg?-x7}*T6TAzg^cb7eWkbl%w9&K@|_&ETtZll zy}uA6DI6%66EDpB4>JT_7OK1OB?+C+$-@gy#s=_EN-QFhr1G@aIaAL2~=kk+AE|a z?lud;KU6a1D(?+*0Ctjk(2fMzn-RE*LPmJ3xN7*V5~ljNat~E9%TK#>aqG9&>pugx=Q{QOD2&nC`4Gvi ze5nx)U=q6j^qfSyzM_OC!zb!MmBqufvty(!)csef0h{Sb=VFidj-BsRrR-$LAhFy% z4@l&R7oA2Nh-j!5mYc`2Ta2j4&IaPtTeOGBA`EWy$Ru`Yj;!spmx=w%z1+j)FUEiT zjxP^jPjWrHXF-rjBfi_!!cW@R@{@MOD08L7++9j=#nW{7a1FJS)Km}m$|kR8F654f z92OD8|FmsoRR)eg1qrS`;YRNo-ZgwOy%nYBtoB5`a!2@;MX|O7eoVj4wQ9)EVd9B( zH%yl=2)=jrS{1w`LaB|J-)|;vGJxae!>P2MJS4drjjpRmqVcB z(nrY3V1gCQi{6_#uxp;m#4PGrSg-9QLk}}bs^nD%+Sv)@Q>7!XIH)g|6L%4JV4#Rx z)5={c9BE_@VC>(@el4~dE+5MwTH+}KsQi@(l@Ip`jP9Hxs@vxzLH$Dq)X%+YV?LqG zH9YpdTIBsBJBbisu`yKHHIWL?R1}WaP~%cUHkqJ6l6NSgUhSf1t&ba_-i{^zRdGsn zMeC^9>~z_WU)YSfv_#(>*PJYVGbQ)GKu*z#Zpb3lM{BD9z?=NJ@*wY3V0$9wX*BmN z-5!(v-~a$mEliXg>a{M^9qz_=Ob$ z1(H<$(p6#)+3GZabaDu^M8;)J8htuWOR<8YlH4d=wUqr#xq-{b_Jf;lvTu+176c>L zf&pZ1*nOSLlW!q`0_Zd8NZa3iRLe#Pfq7dPBbn&bB)Na*z17+mGLADl)1T3V`;K&F zf)3>MBkOgvkX{ebO+ZR?84ICto*`*OL-w!<^?<(z5#0jCU9AVB%jgDeDGNUjTAK;_CqAn@_spY_*xCpD(LsKNV zMVe`{RI-;fBI9T!3It}sjdX01BN3xBmZT$S;Ww)KM zN5?}vi9~i=c*gpb-wi;!Hi$eX(j;F3iW&PT-MNoFHh{qkOa2)&fd6z*XiSN@4`y%Zc0if>}s2oRILjw$c*V z?X~vS;z5jkO#vwhyq!|GvL_~JrI%6_0U|!_#^mnVQ5@vmO0AGiotENSd#r>IPN7t6 z$J?|Q53NEil$?y=Y!3$q1$}G3{QQ)}a1-T|=d#3IRBf4S{tkFiFr( z(GcIEJg{0(@1jO*GfWckvAJ2=c*|_AzLQ8RD;Ti$#|>;c^JO#y;~LTBQHu}?Kn59bE38R<*H2|HV!ZC%tj@My>z#h z+>s~(INyv0`MaIT!Sf*U{>{Lmnc>vSJ`&tknC?fz1F7;gz#JgIGPO#a`C{4>eJF!w zc=W|)ci2Qz)%C79hqf&GYl?@_%(S~I1(c2+Bu>rb_%xfa@|g4WJEL2Z&;Q$_S~RzEG&BhM?dcB52NtVPc)SfN zs9y13H2{g}M@&{%=8HM;F%SVRlrE60CEWrV{@DLQ9{70$qSER9k<7gGMO-4GKe+Mp zws4(RPDYwOsp9G!f7A?i8>B$3?&|uBxcbn`=g9y5T@xUwT73G>=dF>?G)Tkin+NW5 zrkSbl^mKM$W|&pqV=-P)rkQJsiQHk0AnMp8=YtbXV0?ewMZw3Kl+WofUv+SRZeW-0 z;!L$YO+UMd$5`qdU|8~fKSYQvu;hN^hY+b$+6;-B5@F{?!G6yK92nR>2CYigdck?P z@nPsI?x$mrLn>^(F5hcl@dMGC!p$OG_#nOKrQqQY<7yhGaRb2YXS zvrj-O9v_Xb=NY0R2ab^rT5n_D;YCWa?>U?PO<(li>F7@vZKyCMfU0lk`N(~vCjH;B zj}WhQt*P7x-1|0RR>Az-`;wNT47k)hQQWfn>(s&~opsLSA4%=3)H;{0<152JbEbad z1_;)=m9K?1-GS;a@KWB3L-~xjEcC-1Te{07>b~eruM+aL*>?ZvhRhvJcS#Udn z!tYx{R2r__!yzCADIe&qPo3U62=CNt!KLI=lsJ{WoBFRy9z{LJxBbj~TK_k2kw4dA zB>h4!0QrX=$zLoBo}SX2%JqCZA)b9sG}0w@4M)_%<0T$%|AEhB{)>ehfAmtSx->8m zy>VU{zEC6D2|7miFlR6itqCQ)bnA6n$GATTpgiQ<&Nv?rFrj@t)LS=PZz8J>G*n`* z|BkLf<>54HaW2`3#_(&*L`1kqSd_KaJNLw>^OY(a;^Rs&8KUyw>-4UZyUKF1pRHDDsZDtp2FxU`X7co-N#VQ)rR`997?1^OArIhRU3Y z(ICWufg%uY&u>k7m0&|3Sn}gw?QnA>@scW9j=3Wg(pom-6yv8VQMnk<*8Dmv9eM^^ ze2BikKKG4WFypu4dP^HLn zdhPg@AYGR1RCYx$w-@DH1~^LXZFm$MwJGL5kode@|nq`lMe`;i z1R`mh6!-{SeA-Djyi+?u2WSTZ?t2x*9u_xNbk{^ZIwd#iv}f~*^Bo-{r@A(j{&gk# z;R%z39MiSBk$YS6)1#_oo>j_>CGT?Ot2|Cq2mXs!W;j$h=#eGXc-beh{FTbpx{L;bz4KTkcg#J>;qB9CnLug>Wo>PG zD=S`I7k~N$71x(h8vsD{qL%dd+`<8oM|F8q0o3>3|Tn|mH zVI%LZtiM1N0!dIn%U^#$mYhq8hs6wHMk29`K;mDIZu&m&sThDo)_IQl|0cx6&jPpu zcq)HA<hHTlebOuQJx*TEFd)#U{UwaieEKdI%jM9K>9M(D0le@{pPYN`85-m>u0kN;)A?+BHcd1dQ>vW&$H7qPjJO!xab262$ zf+cLt<m3M8YOkkG=R5zH5JWHK?e;MPrs@iX#`O)ZKj zPLH7@{qw6%24V_9nDZd7@{N9RxLa{B{u?aQM*YV-4JZ3eaElR6dL=J9xjg2RTC(Q$ zsb*>#1`3~~g`*-u&y817sb_YM%p7`UokUH3#eaI7y4$$wvrSCU@sVM9dP71WGKiD1 zX0$7veX5g}l-p2kzy)5PPomg}bHRj=qfpn4=(>_-r1M^o^xG?|;iqKDG4AEYb2d(YSVmt&>Xr}13r-kmmBodXqQ=GJ>j1)`z4NE}f) zu+$7`r8#1vxRFg}j20Sw9V-QnAk2Rv@|NQVSG%jD+l#R)C3Io~rZi7fBhT7+c``Oe z2-~GQ2_BV93zfzH7W;;|p*Iy#d`vW&c+L+4Oe5RR4${tJ1L*m7bV7eNUn#Q>PYkp| zkGqZjH0ZC;ei*RCQa?z98qd?c5S@LsL2)QQ;$$110of%tJRhR)X96n#ew5(OcMxN* zdmMpk_8+XL6Mu6Qw5RWy2ZT-Ys8nICHTI64KWzGqOv~8T5Y&M#H6Xfu>!$j!QS5Bl zF^JZnq$PLOCi4a#S?5E>-vm;opW3k*<$(@zhGtTxl!wZ(u**wJVoq6evPE|mz_7wQ z*DH_8_nb!=&EL#84*q0AGrWAFVZL-dkVRD%wr+&kM+2xF%eYwYh0kpJ_Sv>0*EGp= z-Gx-&Xa$f2UinM_Cxciwx=OoZlq=S^|Iak_@6SlbS$x0IrrEi>^O;Hi*|Jya?+MjIh@yc&X}k2j;yhUXWAQdH4Ut7421JBehe`g}E5IOUzBO z40%NuZAC+Uj(RyaVBz`dzRI~2d2#UbTJX=&O#U-x^PN`WA;HQH>C&UTNhWd;N^&WW z3`Hh`ToJaJ2YU&w7~L`Pg>hv!eRyCQ1Lq+P;wA*|wAUcVT0PSpZ&o0Qz0!Do==1Nt zf+$}vexJEaYrH%WimYm$V_i_cKl~q2-t~@^v=%PlkB6)Tu9K*2LysDn&SicB9&io; zyP{A;{S9`ePo1Tkm`mgkopfx`iUW=4;w;uB$9^m#P`U| z#=g&;eTpK_o$P)84)Kfw#s>f;-2RRr_}>G6So@w6n+ny&Tc%#!g@R&72Vuw^FS|Sm z442H?(y&kqm#!n{A{Qe$r4VN%!h;duD9R$K&vD{}f2(zZGO$EY!tA3ykCwPaoh3wV(|C9h zRZu!TW?T=CflGGKf0Ie8N&4W0IrbixchsxPVJ#bqokN zi|mH1lRuLJ9r3axUMw3zwtr$rlrvEjeN_++G)^ljTx|i3+eMm~ed{wkaTVp#(?i#m zg|N`L1q&eZl8}j;cR`i2WIJe&*xOC+g8s&8j}_-rva12CA`~J)hV>zmk)%VXSlufc z|Bc^Cnz!;G2Is$trFd}-77rAM3Q9v1y}7E=M@OWC+P=zY z8gb?!U;f>c>x!v4K`TvT)i2T-+>Qlii>q{-nS~gCp+av$ZumU-XvIqBmNVAk2k>$d zcirn(%sC`G1urdk=+?uGBNPYd#zjB2b^9HGMsAEs()0tX6Rd*#_-~N&ZiSx`yec`9 z!L76a&hSQ%`MMu=tJ?&jPb~fiPLtj2R};6N%bzO{#umAWTPsSP2a@j%EKz+BS=Z~t zpp)XKwiX1T-C==#kFcnFPHJXG`u-U)kMQO>&;H4eYPRzA7MeIhTW~0_Eer%pQ)J{Q z+-^wzP&=){!5X1Z&k^4$Smik3QRP!W#(}q{P#yI zCVj?k#p?B3tMU8$8rjlk`3&6oXoPmZ0y(_40s&4HqHT3?KQEriRyg1_21^t0OZsZI zFldVNTeO;9OjR1n5Mk&Cf4OIvD>Udi9NF^>)`_Ocd`FU5+cZ;k+RsI=qpxz6-|X22 zRb$O85!U2p zVIXoxi9fgW)g?PT&rE< zZZ=>Vy@AWaGvy>dhg4p}0!)U9y-!JYK*Dm}96XSP9>(BF3qiS4p_Vkl!adilb2?EueHP_i3E@q6grg)K{P6C-HNnY}yUQEzMS^j?{H8eGjo z;Yw6N45_v;6?Y`uULmfD&v6pttyLQ@(5S(x0bZeNn??c_+gwEjIIc8@)@d(Go+di@ z&6Cp~F-%r2N3lEjtk*TytoXQBamPyKr1aJHeK`m3$0{@n!l@8-8RehdDcQZHmknyX zJ(c23yWR7Nn+ZKsl5K3i^mYi8<4#p0ey`d{`Gs=^Rq)?I-K9nSK4)$w9T%(I(`hZ5 zRfQy=y=fx)IvB?qrOFREX{%_bh+?FTOoRRIz>ch7Hae=a*};B7se(tp<4~N`u@|T+ zkFK_-p3B6u!aYxy5|lKi5~u0%G1_u6N!}DPRWXk;LqY!vHLN!r;t4;+n~EXrSJi>k z_ROhGpc?~cjA`E`spLWw-X9VtvP@$4*~jN1B913ZmSM#12eUEJ^<@*dgQ}N1;jco2 zcW(-(KvwMek~3Fgyo=BP9`Diwsa$E@3T0DyvCnzO0OBRTb&qxGPEluit^LXh%0}8o z%Mw^~!;ivo>-qM8u|%r>^QJ6wdVv|Z`tDe)We1Lvi*y8C1fOUboM4g*GCSPKkIm=m{1wVbbs>6`N=V zic@o8sTtpBgZrGYKu9F7Uw%&Q#+bAaBt_fi6S|KY;Dn^P33zWpC0WFH<5#B=636>J zGkIkX9+EW;7Q#XTbo@(Ggo;GEG?gv)auB=NF_n#3nLY%?#Agx)Rvn8CM`5Bcn+-U} zGS1R0-8IVnc|dbMZi69Z*SOxpW8kMg4QZi_ntEnR9P^jv0OVwkdkN%;Y7Up`e7pS zSx`jaE;qE=NFF_dG%>r4vlknkxk8o`ROF+(%<3Ey2aKLxZvLk>5lkB*xwi96k}$8}2c~RQ05(MfYJOGN&+oJ>707!N7!H_Jnx3;%Cl-r?kEj z>PF*k03=~KEtn4bWDC8rhZV&O7zTmN;wGo#`;CqI!0V+4z1E(kd%PV?c>Li%r4PsbReF%uh+p%Xp zsqaEJs%4P+w(Z^d|KLYk5W8ZApCpq-O2?p-hQ~mbCBzS2sqD0%N~Bqu_}B>}&&-;a|4WXqF605!|ylElvIY@y~&k3g|9+IV9H$USmP4K)_DPtCZ}bMIVz z{FI?_S4byNDYWn7xKrX56M4U-z}{|ww%AB#h~f0Kf(;>(p0=b1Zcg(TX!fQ3YXe&R zs`&51yw*54O&b4En`YjlB2Fnr{Ymj-A=jPsiTeq!(O(S@YR5DE@{hHFJD<48eP776 zAW$Ba5%*!utx0g9{_{SAp50@dy;EA{i zB0vG_3`KQDJj4bR57UM|J>4oMnu|=i&T*0NlHuH>WY~tFNJpEzJ%z2KeM_Gyn2P91 z+11G|4nak|bC16k*KFv3M+coxstZM=RrIDIwhxvX|0VK?S#isoY9p{rZbXGFyn~?w z;e6uCVU1gHdRVptX2RRI-ro!%32tqd{$3{OJ-scJ8_?@l2DqZ|iTYwFH>Nscbh=^E zIFYr54Y#3>v2>cC-?%pura)RE;yVZ8GDrh_K|8z@rBLIbdUSP3sH*<2)FT>f&txpQ z$cDH~LJbk)y&x+aI#q)lFsKvAw&7fFlm(wEZQ?vEEgXxV+{RyvvBwdCe$4$>#^h*)A1*ZDp6+ zelVQ%Y9(m?ptwwn=ee@-)?hg4iWljBAe@q>4g!6rtizS^?O-@3W+FJQL2xo5qjF_d z_rOM`Tm$7|noU6kCU343i|SyvZAkKs-iJJPiFw_552Ap2()zRk_EAZ?$uz; z#=?f|CSte0Am$8XDHmBqkXEd8vf&N8aD!~0TBHfO2EEUh)h8hq@4MZ*W>stx6xeYe zqm-~8VNu}*8pcV-tkXfz-}^aZv%Hnx*f%r%0<~sAhoe?p%O(ls=);* zSWNmuw7UqhJLYdn3)Y|$X{g~)VO7}n6c0I0|MQSq#kD!=j1TKACsmPK&rzp9$0B3w zCSa375kg)yV+hIB=t#7V?V~I!tMM-E7|SDkA339{-I9FB82Vy8ct!8Ex@E~7k;zvm zviA}R1!Aqy3SyGOu^j2ms){Guy&TXbg1VgvGSp*KNsr_YUgj@OnK8M37zWl+y}~Wn zLkRiX-4`4As@ZOJ>`7l?;0n;PhP`jgu_LDp12@g3|AgCyC!FmgcmS6)rqi?1)sOI& zVzgXBugMh){j+xwJq@thGm!heaMzAzzFu@VIH*g7^%~S%AADBYlJxHXRnpQ(h>tb( zx?8A_wyOFJpVh7L7iJ@V&iTX-i4Aq-7PS`f@is5Z0CoPa)-Y02iaAmwtt`A&5f%C3 z;M+(7V%(63ili67pbGC1M3^}5Q#6D`iX0e=300~cCo_3c=zKX%m+~#BvQ~q zQxwa>UCx80Z!6@-wO+*I*YKx6CThmkINY#fClg28vp|H_9WUhtmM4p@0gyu!e9t3s zHeYjuFi7?-HOsoKN34~k=wf!xT?Cux1@|2^W!_3;nGv=H2sVba;UWbXun3{ts@Fz;6xEgifkJ*OKXX#Wc|zw&RK{fERw-cYCMHp; z=7u^tU_c(FG39ZUvD!KvHMnV`<4&NP{GhcZsOp&b@+aG?SKU2K$;14s6jp>H?6Uy7 z07Og|5dCf5&N&iN^6Il_q20}1Q>31~afG~KqR!tD0NQg?X@VG^d={G$aLXW24$I}V z;3TxAhhzENPG&YL7E~kj` zRp(!}DKL&PQs`lvXc6;q7|ZC2)Ihy(6jUH9dyo}U)r)3=qi5A>8KTFa^|#!F#wQgH z91{;C`9Czkl@BdE*-(|D%WA&yMd(ET1T8)9xlC_F&y%Zrj@S$mwA93+xowC~K$sbf zvGI`@EiW8<_!-`40nK8zlhkOq+6rY~19#Y3C)cj&K%+Fn9aHBk2@{l|4n&H3zfg8U zE{z5#t6{GKgNrE+{Ww+ev09j^BpTVo|)vKmjKcee!N z$gE}LjuS1GQMxS=gfpAR0QuO>k+wXZqkw2a=$fHODKO-ZF95O!sv{7g3`3EP(+@7$W#0NSe z%L^6u*elHBJVprs!QxY;UC3+9;_)}XOqs7l z?H@wUU3ucz=+Iw3Sb0>VfnCSpQ(@6F)3zLiVEnL;m0mh0`~1ML8IK8LsyfrA2aU~0 zLuYoU1uSaM)Ws544FNy#+j=2;ep2Qp$!c-X^*Pra`(dmzNRX8=3MbXr9)F}`h7{^| zH<{N?30`rF326(>9amEns|eG@;b6S5ps(bpMBck&d|EctI}}OAgMpAiWl&vFa0HIj z_2}mI@-iOLVCRs5qDQWn%SyJdtj+4@eDAcsk}SNwQE3^V2=QQiSRBm9r&6 zH%sl&?wx>GntQP;0J>_kNmNzIK2l3DIf28bG>9~WqeLlh#Rm5U8P&$MNn*L1Fu>aSL6)xmczwvaJ2NYb9Yb4WE0)(ofj z?NyxVmn%+4^HDs2_qfz59P+vI9Ttj@bICT)>n@y}qmEIPu;WTfBWbs-^i^>^=Pdup zn!yg0_!N$fy5o3SM^RMfsAq}P*R(suR?yTra}HHB?G)p-k<8+qiDMXN$XG-IJvFkC zCm-gQ42@<8IT*wgL>&k&+0@n&ZOXl9q?`!TCoGo;;mobXl2As@HGY&fWh#R!-(~C# zdKZnLvL0EI{F!8Bnh2m|o}_N$(H1kzF^r`e&k-8{aq69j9T1QkfCcPq4vAuFGS(t4 z*^n?%M{fg;WIlk`dqAc{3!9_{P<09(GQowcHJmf_%jPXUZjJv4^Ell_fpc}r!Dj7D zS(CAP+jDhd@CaHU+HeKZPF<|BXMR4I6N;&Vn@6x!1q+W0ye}gL$|&2etfh73B!67(?mx;o@XzpapovJ6aa z8?MGr7k-D)*~ww;_u0Fx69}R}a|#I*UQ%%ULlY2g$uaGos&S8G<)xb75|a9<8*d%F zqrFT-QH$*rw~$T?ysAylvUX}Aq3PxS)rgmgY@mxP4_;lwaY)vz4L^r9{Tw@mDyloD zkq>228SC^h4RyH>=S{j76*m@(0hae2A=A5^>pzwjTv0-m{*sMOyql0D8bWt-&QXh9 zQy7w!TBDSRp@BUm5`~e0Jf72xmw(I5V%U$Uezy&d!152iY{`kFKlmHrm=Mfr{uUq! z*mX2^Xbj{7+%G9f4ByQn@4D5ID{gWbCg|%$5d`ddG5*ly){7h>qEURuM-aI(Fq3Qx z{$sGm+U3SO`7Sz zynLQWIC2!G0!$eMUMfx}zNgGsvxCqu_qYBX*U1?cHcHy2>oLj{DB(5ZvifnC()1s< z03j#n1jI=Ly8n&z2EWwHy7*!KAJZ#Ju&zk>z8HFMK;&k_{`ERI^$k5EhMDZxs)dJg zugwC5rDVeZ%uZR}dutj2v3nzQX>&@Ez6|)oP9nNdJVc2r%?}CgL+x6I2XyBuq!G~`S90J3UhMLr z4tf-(6voqP)pYS}{_0nF-exuQ1FiA8{guqI_zfQU<4?|<=kb`LdZ@&0G@v<9)9P9W zL7cUO3(V3%@Iy>dy#C9D&FBimQO!ihFrolf6JR-l=eXO~f(-xM@dG$s$WJ<;hW0+i zAn}Xl8Vxlq0Vw)C)ko4@_0VU0*P*h~u5re0R8sn^lGo%ALEIsK@#u4aD z9&^-O_~Hi&kX~16g+2{g@3Yc$UE{>(<0NH(>1YrrK8+nX8*0ln&_L-87-i&>%KcZG zggjiNywV5uFl;VhT@m`h&}nEQC&hFcIztPI3O_-TW&LP~sP^!j$ekyYQwfJ2BFzV1 z_pix$vq#-Mkfi;-{OEJ2ji%SFe0^WASv2frR>1&Z{^C?p-5zgX17ME`Lx3_ zh*^$U&p!U;Zt??8iwH(yfgT*L$N5!i+`yX^RRm%wki0d-d5 z{Wnrd=rHzEpxhdf&NQ69@*(Pe)FtFZ($DwEf@{m#DXEl#vpC!fKmr-{LhgBoXB~zV zD8p-p>L@#xgYJcB4|*VwY_v^C>WR{Nx=m?Xl{Y#XRye@~B$`Yn-G&Rk-^$CF;JeY2 z)Z~ASG~zrSd^u&U2SnV$%|Bm4f(Al2UYos%*K#Fu+KXnsGg%aU2vW`M)^M~Y+>6|~`$_4-D95jgs1E7P07R~!Q2!gdOXh1V8a)XvGKB8*a4m)$b^ubv3mn~3*IO;r0s?A^vo&{7Q z7|j2%pf=#-auo6UDP$@C?}y2=^RTr{g*gCG+K+7Byfg<}gO;&#*^FW>n(BBN!{;Bc z6iaVhfWVH2|0h#QRoehofK%N9iHM1nhG@0Ll&+~?Cb6YDOidAGpxKOCj3K>p#P0@u z6=#xn-x`$5T!Emi)uKhRh&j;#? z-{lO?899pSvl3Vo_Ei$Q)j$<>_aspL!AN8bI*2b}3{!phn82ECz1ET@HDd7o2KUEV<3Bkd+M1RW%sOJK#% z?qRRC@?b~cDsPE{Q0*`-B3hR;6ko|wlt`)~{c;-y-9iMRXld_z z7;>zc5BN8*%Ocz}&pI_GPZ--RCVY6c4LOSS}52$VA@r{Ql5-gVwr$)-D4OMTyc=#B)^fUoT zLa~t)2SKc~$!+`32TB*WN7eP#_E6%z=pAVGtIl~bmq)Mx1j#(ysuGjju=fu8Yb*W> zgXbr%csdVxD~m;a!mufSFc;+Tm?j3n2w0rqnwxzQR)k-1v+j{>HXpMTZ1f4FRD4l{ zbd6`<=fRIw){~Qbms=lP4f#Z^N=-hwvNQhtoPQ+mtzEYIyu$+$DE_3th5Z-1rbWL3pAX zH6dfp2AbZ9gOm&y123X4rj-ItnFT*QtcM)#R#&0hl%#~TMQX%l*vYTf9=$`bZXj@c zGg1n~;7r-LX$rIUjOb8NmYk4q$m}e)`f5{faB^~FG;BAxD^wY0A9(v2)0JKf8X)r(j7E<$v*P?esH*m-6!+H zEoZ@Di6QtYRs;c9w|1egtsDkRd|&D4lTYFPNlCIk6~QwE=_fV)|F1Qj$Nfz%F-w*+NFpW%&2;!C$n*rj=eXN#TdjfyUN1lT7zrt)^SXppd|# zkooux8XhcU^lw3QU!?1OV*o3|DJah!mYYkP0bkRR!xYn^Dm?BO7+oFw>e{r-Efk{n zZt~*qXLvS!;m2QJILKH@@w>c>3m$2+gc)Ko5Pe`Yhz%{O0o9c(MIu=ll1SzyZ4OWd zg=*=sST$tN%ZJ9VWVggSC>j6%GSo`35tU7R&v zzNimP9Mq(N6d!WX)DZ2-mT;h3nE0OT&&NW7u;Zan>S5)w11Iy*V3({2;3O0o1WFAD z`+eUg?8r-*KNpmDA}x=*Jss)32ToR3@PI*st5@C45`%8YBPAUyC=xAUbPlo1R&RSy zP;zoqLnSP$$a8fE@1MK6CI=7bC34Z}DzzJq@|2t$AKxy_G!{zHP~@8%qUjZ;cZQkEja-2(?bl1Rws%vXI0qPyEHq+zF((Qd}0fBkc6b z-4T2gkp~jU_$E%T{izTHmJ*nLUb|P!gUZkd{j<5BtM#yEfRR>ls`C|%Av_SG_>Jov z{Sfoxi4f-swUYWw%W^R)@+%vu=L5%NvRHP#wSZs&Vq4ylSogHMnA9uY6D z72yG_k?ZC^ChTV4$XoZ*%USghx6A$CaeAKvJ1u4NZW&ifzJJ@$m^I=4hX=-^6?LzkU((_a`WUFM&Q|=M$%Fh{ zasS+^PnntLYPT(|Z0ez}-EW#SWew|&-%Se>TYb?km@NPImxq^`Wr~*@7f=je?N&&p zhBGf;R~~wt5j?&Yvbreg5fe4M;#;ZJ#_s%-#OtqW zx4rU4I=3U7h68o~OQjat{R&0wJdt{8a7iWufr(vM~ zsAt*?d5jWDc%lR3N{$f~`bo!wA}F)p44NHs^mniX3iIKkxyfoZ<8)-?lFaPW)&&#u z^0Uw;x#C*nndlf#$Kje@%G(@B8=d7Fjb>jWd+b{%>FW^ZTTN z;gs4=)&Xld_GN`UaEYk{f0eZfw^H`e-n1a$EA+3QmM_G-wpmNoiEo8%DTXbjFO>5-NxUy=B9f&eB3bTLBE>yHGD(h0q2P^Hk`jh0 zF`PmxC@KAwTtdXiDE}V+0;0@6?%9vrOpBLuL~7vqpDlUa6T`{GSDUjWHasNBx9p6 zFx>80qL~^vaJOn)^cMgYX^VX;f-+wmOYIow4;-07l;~n`zB!M)hT_m$TLJzZh#f%6 zT{a{Q+L{0S(3yV~T!X^dEkKv2c8uxKJ(n7NoOA7 zzw@4kluF| zbW{ITp5>T{T&+5b7K+cU!Xp$OpF(m&lWaapnBq3JJ+?^ZFiDQVj%Z!sv3@Pjrs69Q z?>KZLK7Nt4L|Sv0y)p35fW2@TT1e4~I3DLQiKcDeaJT5o&{YN&0r~yDm2sl;Ckuh5{&Hrnhs*ZJx1Kd zKYfTuav?1goKrRu`OtkU+L-)Z$bf3*1kp@t(})9E^WUg|Sxz<}$o*nehrAFgbc3oF z_cZO2%4x}vyXWsVkKQGYe!!f)qent2kC-)gO>^i;2b#`@ zv2caHq4pwOThDQ*EnB+@qoD3R462k5q#rhIVWF$xTbvaVc2~~bO&AtGM7wJ-Ji?1$ z{jI#5|9CVGt}r+~cavCVjy_nlEj09>5j8Kg@x$1GNj&}rSK)q_bZob)OloukzAv8j#PcMk$xae4n;wm1#REjK;vD4%Xc zRYrDIS9nsW1hCySYFH$3jNo7k0y~Og_Us_9pfP!ByK_hda~lA@Uubw;gZrdqrxu{U z=i4IF%b%Y6XQ?7kGb5k}w19!QLsdusN^_<^E6Rrfjl!UV``;gVCyD9Hd7O0jw7Ukt zi}rXKEW1lIe@p~|qSpT2r0#`GE~9Sb*utFl{~9RZa4V&_Vm%hst<3&@FgWQuo!iFB zG6`;AMWARGu|wBTPjkCt?>V@aRT7 zgsWxg6jaauI)H!PO!~iS_l^0ip}#WGU1%yrjX&rQPA0p)GItJkz)SF|v=C4bv{7x) z_rK&y=GLqLYbs|81>OejO|Z_0L(q5RZb%!&yoD_FK&TD!5e4%?G8>8&fu(p|9IG|k zx|j;UTPl3ja!_Rckx~v|vVD%_4G9VK#l0v%&;WW##8hXK-p2I zid+Cz9IAr3t0(GD^{7hq7a7LBlnn8$CpVB0-&o01?o$Rxvx8FLo1lbU6Ol#XF+ zDEBG~FO;hDlguHlOD^`ITA>V=2*?F&Z6X>lDr56jKF#I9_;`9rtbQQjCawS@t{3hC zzA|onh^~QJdd91)oEnYPQXGFqEJUx^=h`A!-b2=$3aEt!XMjJgIvEqF^2gt?O?l@*xrAkX4yQ>EVAgY7$IB)f)?7lK zW;fSR!%$D$!P;Ad#(4)dM>Sl#1N{0-!W1W#5Ql8`w%&#&A`%4Y zC*jskByzb#cVlv4ml{&;NL~R;e$o~ni)?H>`Ot2Leu&uDI&qQ29ENnDGEHVO%+jbC zgbkla%RIAb%{v%uv8jcFYKgr6Ie4xH*0-QwgyLQKzFedL#u8`)q@t^dwU;;uV#)yl zmNz7#xP%h<*wza)*2xMX5=7B?Dm$Pt@Vw6rT&`u2M-?jBoR*ALe+i{*3js?DioA~S zCr7akn^K;04WE;%9XN?FngaT;&Ih~_(VZo5g$$dJH#WKk>ivuXo&7pYi8?Zf&F0LR z!svE^ic0r5Gue{{1AYM&(;moabUnU`sa4ey3v8m@YFUZX@J=?bEz;iQ9e z8p1jZzPWKc-Xg&_hZljbmy87=wN&p7xMeT%jFhGHV8TP^QcBFShYE$|2_)f5CfU5dUviJi~r)v z-EI=sLvyoCx)29rddy($g1F6)`{)>?OD6g4mhsWWlTXE>c8%MCLMm_*jdq4v90zEl z*PUP*)@Kb68^mA~5pC=nO<_Zyd_bf}`fhmJ`yx+hHm%oI*hx*8uqr4d3Pk!(J62)I zNQ8ix>YqGvO$g6e11ScP?lY$%PR-;Qa!<(d4=)-Ma285ej8fDsrzqY@U{A9J#fCr6 zpV}FA^TW@baZCxZTD_hkao`;%@W!VMVKU=ZF$lG5t);-<|U2i6r?jR)xF-DWyQo02;?cOkJFZ# zD35;n|gB&gBXEJ!^unHGa4i7z6I#{NpX$o^39(W2=hiqz)51ZpF+k* z={lR+1i_atc$7POJfy?6A(gAdW?LPy{+w}b$ycpyVX5v*5TWWb`uElcJDq)O;%Cx; zEH1R>rlLsHTIrWEI-flI(iB0bDT)wTvh2yb&H77Pj*Re)w}h7W9Z2YeRHrb-EaYH+ z5%m$G3PbqAY|AuAL*T|yI~44WzX&vi)B{k+7$})J?y^MS@;&&rVqNhWSE%g_h8w>P z4{VWNEj@LSi{)Fx0C_nAbP0x|AI{s-tMDN(!qT{9>{6}+C9t@b7lSjm1yngnT@P(= zjz_G%?~#rxaVs}(^8GT#AmZCnLwBR?0=UHu0}EpsG7f3|dB6LN+&C;Z<-ee!!1~FJ zuV{3iuW4*vGT|jNcTo%&E5cp2ZNHeO*i7}XX(#>hOEr6(v-(vAu^*}MuQq+pPr4|0 zo?WdW1icwkH5`P=H0wt6!lsVH?@irB3WYn9vzRB`}_sUsK?!d&tPY z+9t{o3ykYT^#C$8@JyH zgI!2=Z3l0in|xbfz?n>4ZHDZ9f>=F<_0q%6lmxFWhE7(+3mrd(?Ll)hw}uKNsWadW zi_G-B6@>DPEjOCfV;RgOfLOv^eotV8Bo+b{w8;SAFJXqK_}gp9XgaLJGs$KZAy#i7 ztc7RWWiLSl5-Sl_#g2kU9F3hiKQfiYqOGM$W4(A}@U0%4csVHCdgnEh8QL$JR2rhc z1zYC{FlyP*Rux$LMn)?G4gy(Uu^con5U(#!2~QC6q$2MfZ+G6&=~RNLyrXkjXShXd zX5k{AOAcGNSn!ydl!%mXhU%;=xPRrm6b`_hL-^ss3)^}XwbDmBqA6e~-zkFs3HjCS z2Ro(WU)_Jo+YnfBLwQi5Ja~0H#{XSE|E}&?Q$H^R!qjLJ)0>0L?u3VlH{rfWq(>eN zLw%HH-$lm;slD>IgwPIbSRwsQ+MG+4K4SzUmxQoL40IcD}nKVY`EYug}D z>MI8}v83OIL8J5x>Iiodeo)_$seRpg^p1$>XX6p{8ROPPwssXY>2VKi4_bVFK1cyg zp^x$DN)UOd#rLqzeRg;{a=$HRr?3$~dpr(rix6wFvKBcB)wLnYS3lcVScR1%k^@a7 zEDq==xCSA`I1gSyC0(v&>wuwDz3a-eZaE>Co!j+IPSn#Own&WY_$lVh=)DRVjfGSW z7tw-t;toSwq5Nl(HerRvf^N?ejJ0r%cU~b3!+Qrp$>DyAsOffsHhKbAc0q!Zq0}Up zPhh4?upm0bv0>q*eJVNCE>%+H!I9cr2De>R=o?*AR;DcrFI*~@MN)4``_9-Pp51i^ zfis?w-Fd=kMo#vwzAb`hf z`QcMYIRuz8M0RX&5!;~B=m%M`<2BI^OQXo~TLu_3!CAPbdI4k2*+d*-kFi4cMK7#5 zNv~V){OBzGYWLL~qe#iYcslWk%cLz&f_Jt;l(5bfm;Dm_q=h@Pa*`fO)XKpX0!7F;fN0IUyZD!pJ+F~=6Y480MH z*Z65qY$ouSO06G2Khn-9BM)PmuP586N+$R&8xQB6%1C3~XH5)PU<|M6Va5FnR^jRN zCcH58e>wc)T>y2aTbXk>&9!v=AA29tt-;kU77E!Jr%j_fm>cmQwJoUuLZ(<$k`x_V zurQb`?d-_%o)1w)?(W*J7hzvqq`}mT_iOGI;HbyBAr^QFDt68|0nK%;>lBk14il-= zL8)8%gvo+-azd*S3dkm^v^YLlE(Gtf8#?HVzM;@*5?ax}Pz8CxB+m6ey;`+hPXt_M zo^>ht9L8}LvL_sOt;`)X;2f19wYGuS>25wG{xA~$*#Zuy0BTzHdA-%n3$J0u7YtbI zD7bu1Db_o9Gt(|uxb_ewNRS_9hvrUonWxpj0yg?RN~nZ8)X zA785nt}d2%`Xi(l4&|qxvl=+*mXu4S^L^3}i)WTKbSRb&I+tRTDEx_L%^cd#%3>!h z`4^JUi|?WD8f%=@75R3o7K@qoJCvvMHj-b1ZCmeHeaLPva+{tV%69 zWGAI$S5Fwl&#n$-x?NJ~C@C$y;TJ>{j(dG&Tob4s|%fG#-yc=xcEJ9+N$`Q!CBpD6g4w9jp zPhn_4YYG(MoxN8_>60BA0&}*II>8fmn@zn_H$ihB%})k!)kaY&g#Rt;F2@br`dbY( zXibIW`Vw;H0+k!BT|~F2LABM z&h1$9+H-PO@w%xzh558+5qI09{vGYQ+n(=Z$0M~Y$kIQB@KGoKkqWB+hj7mLfNYyk zX~2-E8Y{?v6MSQ5d#yBDGcq#XBx@!M$tG%1YW()d4SFVI!9FA@kL2#!086m|y+q52 zb>Szr^C9b>^FiCr*L*m7Q;7bCcYu0wxb^jv5}5#iD3m3mQEbB`RQ04C0Bi?8)jR`@U=_^zn7xM^WZSbl{# zK@lHW<8jWuu>=B)J7WUdU#pLA{ywrLa@e+)wN`6y8>DQ!1{x)Ze!g)32^0D=c8VFY z=!OSp+Yhk-&GdS*o-imQD?$=XiCHO!Yd z-I>$G#jzmpnB0gh0D zZwF1wLi_|+Lu*RYU0T0y%+cr>^+*PR<8@*vzCWNf@!H?fV7ke*g4PXzAcV1wtxSC; zyT3|84vc7Tw9VH?fu7>2_B@oh8d3oEOQcC}|z9ddm`2Q>z zeN3Zq)j4Sdix`{Z=CN5i5Qm6jO7q`w`^nVopT_rs%e?Qb1 z7V}TuFf*%f6k5t+{yn|N0uQIRn`%4M04{^4gVow!uQozw$#|2I5@tA)clx6*` zOvQLO`LDg7K!Zf>vyPM7N5*Fs<*4niD1&Sm&mC1oJv+UPi|czWbj^TP2zNO#@d=Lk zL8WA%l2ca4IycqhWY637uXIDiwa&li@d*B&Dht(XW*z@z=s*^i1BpAwr07icJ4fWN zNpoCyr>*<)^KGu~#s@9c(dWGcd;a;RC6QN_2n=&vwlU1cLyD{qFz5 zqWlnI#;?G7v_jcyQ&GjrW7dF&uOB=$HMO|-`V7|>d_=uG336erhb?Gw`9JHHK4SQ&>S{-?d3YQbONt0G zqQr_wDD2`v!j6(L@r%FGi-5=$P5;?UB3g46H@YAHvJ*m$4!+Q+ES#91pVfIar=OCW z16iiZtT!je{RwFu-=jcEcH2)CLl()36dIw~>0~+BRjuXZ&{rZH&%d>X!SAaj{!_cr zh0Op7B-)gX$+Jm~)!*h`BWwyFB;imZaB|)pCEF6FuxTS5qRd6_DbZ%4dSm!{;JP=m zjubN~x89~EB(v=IWmugsH8-0;A<2}$tp@}98#K42pnzS)#)c`)LWr;*OjB_S4a+9y z=YzPSO2kBndp_}v_8NCXc|gV$g^Ewen&Jp~*Sr?f+=CNkFu$9m{g#{4i zVc0)qKqSu85Ru-&XHGC^WxiRXd`m^PTEP+)kQlzw5Tr;i?aPKUC~ zoCw%P)f{U#bRuI>*xCIB_O0_jk{0J%xZ(Ul6=Opajcd;C6;ISY1?04sxI^t~$G?Mk zp@*jLE|eF(;B@t(=h!~xswUt;Gf=ZeuwMXZ(+#>npq)T+zl|hPSpaXJ_=D96L2L{N z+3=Ycyx}V zm}uDVKwpX!_p_!cilob^SG3459MPpsZlvwMbk5Ri|3=u>q3GU52ir57!gMTtbGHej zBzX{*8GqzW;iLqw@D8AfLLXm3)#Ggq;z zIfn-`b8`Zg^JSC5=3gpxz3i6$pr>ebFZ!ua!Lz0+t~_*VQ!ZI_xrWQ!r21V;=rQ7- zjWO@`Fs7gpsJW?* z&Kr;hMSCE#%n^kB_VS*$f}7S)oGW8@n>{}TH+^ZKh_>eW@Xh(X>b;5EG=^q@;X!x= zUW>Ca7E6EyF~gjJG5xVf_3i0k^Xtivf*d7P>}P&-TbT%7P?H?}#^keI(xJm>|CuKY zZ8l-rQ~C?TjDU13$$hMYbTRDffUbSbEIIKQ`|flfy|v8@vv(#LoU&xm7edu<-LDm2}A z=S1+p{%Ap8$EUd;v8PtM+UitMpR|s%S0{2yTF3k7Q3cSFtETKl9Z(Z!I+ey>tTM+p1=I-v@Vholr8 zr{r0E0h^hf`Yzj{jhsUfEv_v*{i`PC{H)@*Fdx^7AE*BB#Fz=q&X&*Y*!e77*5;L* zcni>PA&coOX$c$%m`s*geGZc27-d)9^zrmHubDCGlB67feg-x;u$nqV&ZLg=Rmc~xIa)`pK2gOZ&L|6Cw z^U?6F2mtuBKfVfDKvla)f$C=O@j87FGkduWo64FO65ec(ecA{dCXATO$O^A420Ly$ zcVcAAJ+dflWX|%N*hHIlM{^FG*iA4@Qplx}sZ3=t62n4?sf(p#1=&NFPI|hkjDr8O zD3xXE`s#5ECl0vt0qonIB>pH#xc8P;+E%wc-liMe#4r1!tXw1fx1+YkmDbyPhDEpp zvEPmlj-%O6>-~9t%*ak+P>nkHmfqYC$S&vht-nB6A{T6=Fq89rWtDZ}BMI+dN15KP z>Y3pMB}H}Hf@PbX!#tqBokTy4&3eSoX=bJUy>E$V3+&urvh)n_Z`w`{VY5q8JuC_S zDiiV7CI?ob({N9YnJDIoZ`EY35oDPERpn$qH#WUbiLPFuMiu$>Fcrg)ljO2pqA?tG zM`s_tjAyTV>$eQ~-i=7jpxqh$sJPkgFZ*lga3Pn^;FQk;I2k5v)UA-13_g!Zw$!sa znyO!W)Mei#&^SJnw4c;WJ&ujPpzJWFiW2-SIz43E7yFBE+joH_)TVGq43sC16f4(8 zei{-0SktJ(pZ>pg#E#3OheVimV-A2mO!y*tKd){WbYP0`dYnt?&FGBAUiJJXCzKlZ8{|+HtnJNRt&L& z$E=n12I{iJHhH56qb(Mv^8Ij&76}>%-R450>k-Eh_|8noZZ}}v_1;O2Yxk{=)pSa3 z1ihyi#cYE-c?q2sFYGO9DL9UoosRags~{bX>uL9?Z>(eAaXTtR z(~x93#5o^6aR%Ek%ge4!v(}xQDs-)5N>+Vazgv8XLj*9fZyJ?d3H1zOdT@|?w@X6A zp$bJ?Az}k!RCf8UO}kS*qhfaKqI6by4|i|Zu3Fq#lai*%bn~M!;sTk6GH?3b^19WW zbRWu}uHu$I#kjq`yGd~RL$SW%V1DSaUge+l7Gy~(SX8VQDuhBB?J0(+*Xwd>OJQX_N&VQvfGD=T0@7A!_h{PM@3<%N%#BG% zsbo_!zap|P^!fjEvnKCIZ~5?VDRW0@3PTh}3@Bx~>r0KuiDNb4R`3@5i6m75;|XL# z%LjKML3{+=$VTR@NTY*7QV*ER2PXC#yTo7^$p8RHuk`dzA6uF!i>p&+d%)FhEBdWX z@RfZ4Zrhze=Q21Op>Mdq$UL`JnY8MWyhb1cGx8Fi=ob!_0 z{Z-JpqoSUeDZiupFAWgQp$Z!Jz#{SwHdu`$knpp*!0uiS`uyzls(ES+G!hi2?PAPrOS{q~6NZ|qRq>rf{DF*0>1Cj4b$dx z>&jN0qOT;ve86e>%-QJs6kmpIvIR9lZTR@>f=b4E%@Ob_hQnP^ znvhtZGe-}_1RKA%uv>@Z zrD%B{C27BT=^r)PPBV_2r>9(j1B-0*yEdkTH0{PPm7|$9L0FA$s!7|?krg;N`3?B~ zR`{P2mydNNkDAcp5(YCIeAzn69J=xRX5%rZSey5Gy;(LR_XUK%T`tZJu~?B@D**=7AQ(JgQ#40=8j|a# z`xq$;(-wwR4DkzHp)LQ<; z1=xS9Xe5yz5W|=lZi#q&j#p>x`;mW?RFQi=n?|(fOa@0_^G+XhF;AyJJX}5?!$T$w zvCq9UfSr?d*G<4oA0*UaORcRm5F~n_?yr9T!Ll1MK54PXlq>L~TZC=xZN5U8bX1_J ze-k55#YJ%|#UIuDVKasTvWxeEZAygM>-}x>%TjXIv6gn$$b}xeMzI7HH4b8MUSQ}% zt?XPk>M;sk3v4?e;678Pik7#r`u^00;Wz=$Fe$2{%k;hT+Axg5;LIXcnGeAXiXNbp zmklpyp`OEYcwEU$8Q5esb{a!5rXuCL`RK1KY$~`X+qMmCC(h*?fbHc}2?IIOhr{-W zgDlntg`VAKcWr=V278-_(5k#$Y-`UdWDL1Ck4!w9+@iDh@(dK}h zoe~y7VhjTp}X#nQ6qs^N&Va!WraDyeiT5N$i0s4JxAKWQO z`$KlN`UKZa=MSMMP&Q>%WN9A>p=W!;93+`QXn{f{ShZiu$!gLp5OQjN7Q*!-UBbOw zS5b%k8m_mOk!AyS6ifa>@j6ml{BkT)?`(W%BAAWbp+O~k?{S<_2}5mwE?R;#J3im3 zYmc@`Qib?CVf)2YJ@kZ-f58-nnDP>CtzV)=2LJZBL**V+awQKJok);jDX(CHFT)3U zt~{;=KrYB7H!%k;v3fV~FP>k=Ib~yT=gEwsilHa)DfgTURZ^yU*&i&0ut)Bo|8%YENzVDxJS+?5tqI5yrD}00c=qx}}%bXDZHQBsu0;7SQ?AKjDA94))XXEwv z4co(=$N{rs&DZL2oJQMB`H2HdWI^r7SCNyVa>V>@jnj@pwuiPjZM=TI+&_1LYz1#zKI2@=F7(9 zk42&jtM#T@i9%#mIw?po zLP?3$20lj!@ZD+YUaZ}IPKTTmw;l3~h0<-^LF+sFw>r?IcLCA^l$4p>C3x=bPVafk z7m5Y0XIL(2757lf`M`rW=)0mvkoTXNKj|*Nk9IKg4w69T{LDF#=X+x<`7ZZ87=DBE zGceIU`d^*UBL^zAd+(-3JJrqjPrtz2@tRE^(JL^&l~9?Rbli z&z0-A{WK>&e%PiM77aKNDF@7^qz#K3muXm|2TzF$Qg~nx^%$TPs|d^Fdm!;x46ZLW zn(2XIWc+G{tP8w`DbuWn0bz?76&|j?)&*hfih~y~D8dLGpJjZAbb7Pqo&BxY?FT)! zWd;@utY>AUtc^}BDcqIPGbV^N?#O?7KstjzmbH%HJP>@dw)&wdg?eu36}el)>>pV( zXNdXse7`2ZLG;S=>d9ZuWGyR4;Id^AJJ4IW^*WzVQFOA-Ed|3pFi6SxF~6|4fxdXt z%(RZ!%xcCD;R)S>8p)buvr&YJiNIAmHlX!7oY0-{nx{Eq;M%d^<>Wc98i;^B0W$Uh zGM#xbK!-4G#(I>j?FgXrH9}=fXw5OJmvk8`5D(huTTs4~Qwt>*(Vy1XjM_R^0b^M1 zqTK$^%kH&P9Joi=YTCfz=TsQi2udJjhLme(*sugI!K2o_^SsXJL7tj(^A!y&`Vz!e zAEYp7_X;bzXd}EYH)CsoCFg={q_@>s!l@x7VN9Lzs>gUksn@-2126TJV&yQJ^mqh( z3&42W%2?kwaWNl+S9yWI%VxN@3NGaq@(LMnQ9<9zc-d8Oi#sF#`1?F$h^xA3H)Z)~ z6Kc8GtD}t((D7kw#NcAyctl{Ot#-`kxR0xv+J5xF$T`iz>CpW7CKfsF(esA03ct*t z@@Cvw;vzmydpjZ6Z~f6g{E(cyk-^^eWs0;beD&$pD(eF6PQDT1n{IaxZ;0*Jn_Irq zbQ3xOR^j+^Ip0e1vbXGm4pVbZ050gb%_JB`AbgB)%K&3@(UZ%)TpI~W4M(+4s(>SJEsD7sU=%V_SsTCVjReWGC_n4TDS6vD)vXi3q0@&tRi<@FyQJe4gm#*;44C+t|Uu> z#{N)y$ct=UAQnLgE8=y#z8kXg@^w;mtunhw=ghX|(8vWxjjmxa`J}-r(f|*o zUQ4PSgyy5!UeL~IC>@GHi{o7D0TRlUyYs{-aiV{eJWp=GDJp{+Xr}9i#={lf9$S3JPV?kT|pOn_^{#r(W_k_zq<`Gzf)yOo5)oUn2^x>syo2tR=f zwp~@u&~UAbtY?hKKkjOXj!RIvRF7oEo=Mkl18d5)+cxf|4Rw7AQ*)i=(~+fW%G z>P%&DeYYTqig%&&NBsebzP!~c&z1=zJmp&T>h7;lGnSSmKXhk@HChVGt-Q$zuFDl0JY6vi__GJ&W2 zhj)S;Y^YgzWeZ5K>akLjffN`gYKS)mBSc~6Xq6`stZDg{q-LE*8~(8vF5;Jt)W}*H zDY4Za^rOy&HsexQzUok(w0rVK4E%{;6c->$5xpf7lQ%Uh-w1|7lX%oP+nO3~`32*n z#`m9{+hhQ_?57iuNE@tlm@`E)Dj2 z#Ub z&A7qJNb>D*ZngOlT%d8<4|OW-*#*q8Dd8u^;nRVH zy0<88t#kstf%FlOXAVhYvFRHtZWzNIj?USdOjT;#gu|b7%^7g>qI6r&Fwg*CIQXnNufsDog7fZAC+#2} z!(?G<(7b{8%oXqinxp8vGPtp(EH$&v#H=V0&JV4+t5hiSpz|I$_?JLGYu_BEPmSQP z_K|;Q{e-dSmz*j@6ceX`R~cfFIpFyqlUm~vZ!!i369+wE}rKNG*M;htGT-1Gs-6v#)?c3oW0fn1jX{;rcPSaLgt^mpU#Om-rbl}Ly zSQs!Az@hk|y$w#_wZt)J$HH*K3z9ujjoq1iiJ0b3112si|8P%cT{`~|H1(!f53bLs z7U!e7TL2c|jG+yM0wGn2grq>WL4-4HCcC(K2z!w(XzU&ecUg?e)(dr-xNtYohk^?l zY;6FYFNe5jz4o4ND$Ztm%8-T+Mc{MAg@R%NF}SJv9+GgE5iJEPWtgv?D78h2k6+e( zb52ft>f?!CUnBB-ZzD^t7by+J^2vzMugh3}`)Rw}maUEYUkTf&J#vo^J#Ohdb@4Ji z)4Bqo1yeuvljCi)Y*ad6_y`OPV$T8EZONB2>(Ioz!dwxib<}_j znWbdc{RXAs+80M&_V(9FAOY6{oMwiwmd12TB_e;S0!-{|=M(QF4-xZgGyjAv+cAbi z^t*ape35SMEupB&L!^~~thGt$9wCyupBX_tNS7=aUb4E#Mq%Zx!9JyQyX_fb3wAE6 z_Q<{mI+-zwL}7+&l%(i68f~83OT3Gmq`Z1jEI$)c(}oehnplO?6E>GlZqqY+Kc}47ZDjNegQlslf$@`td0L|>Yo1C1sa#Lf0 zv)0bzmGgT&sj@}E)0lW5!Yoz(D5Uk|iZhBLZP3ohOQ*M#hZd=w+go!EFHZBZ})q&=CFF|U`N>|zYR|E{PiAtOA@2<^M@3x$N`;i^Yh-bEcgbWAJU z@bmgJ{yC{DzB16?ma$0ay?aF~(`6z5o%4$;_BUcAC+aRKvD?>GO~|Bb;KuC-l2_{g z=y;z#L+P%0G|aK=k=OQ%$38{sJyn`QZ%LX5&aSblC;4;@gv zYv~7wf_eJ$)G%eDlFefyk7Zz3HCZ?seMhK(54C@H>RbRN_mV@K1a**zK2bj9m zuC1sX4oUajT&lmkVN6#%cinzAvAsEByY#8wA zTeWH&;gxSMVFx;eaq6p#DgQ62ZmaKp&`43N$ys|cRQBFiq{lL7^+%`KE5fTk@-R0{}a_@q;ec< zW^v1|+j((IKU4aAIq~d9^HY#`zT4H^Ryw}X{sm!=zj*!E7u0*~g*yr{ZuB?G|M?rt z6dz4gud^cyYs1onuK0ifyffANR@#OaG1kfVb_+?k5JqgAPa6fOmYDqF%u09!$d8-# zt{bQ1YKCqtS0x%;(*mT|h)KV%02$6|@xzcJk{Z^^KBGg3NfJ#e-FSNBFg5d+Im8e# z@h(RwW0HDXi9tCmvFddPb;OR*o;R9g#%P!&y|rM0TQ2CVN0q4nh{VA+iZXih8+qhE7!*#098+Ml_`KBej;NXrygTbmhN4 zY{oNqM#!j9sof^5qVoDVu3`M`2#B6R@~u&1oST)7cIo3*ds~htfA_7(25u?|fiEVC zRvSY7K-n)-thv2qF8XU$JuAancz@43~1 zx3X+!zv6_R^jh9LRQ5u{ZySfFBB~(T_Iw=teIw)FPHVwh`j$p9K<4_fB<{BV>SC6^ zdW%BJ{J2)!RFtp3Ev))cMI5_s{9vKo{v6hJghqzjaUi0F1aG0p8Fze}o{87Q0?|o) zXTtHDl)Wd;koak<8{i6c)hf&?S1x9g>MaSAD|PzWt@YFnL9X>CnWpZ9=Yl&cV7J4B zXc3_e@4CQv-b8=+R+AeREMc9opab!Lf2GPmE)yT6ybLXD5!+L&3wyCM9_=~SX>t^l|LLhyA@=?d{^xoY@>A{$lG*04{f(R`UPuW0|0lv& zH%RuF8LATsnHG<1t$<{HqG2qpH?*7Vdcuvrd3t`=<4YJ0%?mWSYYX=c4jMJ@t7w`! zYQlwN4`Ck+O^*9#wJxr%fK~&k$f$xg54Aq~p|L*&``2kqnNGSGh>sslE6tIAUZ2vp z)_c(-*A>%AieFBug0@+KT`2L6@&~yf(it@+2~1c~mc1FC-gzp7DFOljmf3t~cWXof zs|7CF6g%>f9h6AiGV@9kRE#Z%=pyXgI|dF4 zM`%WSdpj~@AYR79&!Gsr%=vRL)B6D`Piif;RDQ;c4S zijLwUMG8oq5UL!Y9}pGd#~y0Esye+%vq%L{F|(dsqcevUUp^2QL#Mut`2oc=F?*yMhIRGNu}9QPKd62 zJqDB8wGif^_kzd>OcW?cE$x)0)kn{iqjF%Qqx_dojc>7B!oonc&$Q=sLfgI;E95?G zyfI5eD*=ue{iO1Zh^yI;84uShLlDPz8|H0S$-#RchJNje{AEj^oB2 zXdsqUU<4wA(rlTCFg89!?RZSpZdS)`Kj{~XbJ%UPJON#S69gknBfti=oV_N}i6miP z*trHbVAWqn8`Z%wLUFkMfXPfR1h61UBxA~9oNoNRl5~iXl`xtEbz(4#ZdPCdwjWX) zSL$;mC^&RZy?eDuApmxzbo0XEg7)_6LXK3h$WyPMf_<6;g2epEn@+HjA`2itiF!l{ z(?OM4GO$EdOF+e@U?@XhH_N0?<6(58)YKGWR=?f94QeM9^mMkaxVZrkSs;$V`AZ@T z{mY;}P*iYoutZ4qjy?c4SKe-ec1-s0FuL9 z_E$eD!j2I~ouhmSEWCzQzU5BefS%D)>T7$;;82bm!Y$G*e&?O%JU#+x563HNX|REpQZmGEyBWLa_5>yi6E59mGHl zR>LnHirjUzliZjrf>KnK3dZXf@p zl_iiu(;s7;<$%|!tN+ePIa4+RdcuzY?h6D zIHMyD>FE1AM~KSYKB>wM=%>h_11R#XTm4?P^NeyWFLM} zqVmw{Mxl%>biCIg21q1#F;+OL(Ajgz{TMiFHM0@#J9v`Rh$TykTw1g#TX{5xnS2`S zT+j>fz|NM3zOv%vKoX;dO4c*cIv4EU)IYM=CnEvpSM{fUutqB7XoxLD8&yt1eFD{+ zq5sHL)TPy~O%Ae#Z7#i&5AX`ga*eQS48Zj#fgzfBO^wPfXp&QiOObO4^oTh#<_Gmj z_ld-#+LtU(uZb8eHGx8Zx1NHEDLh$`G{960$6Xt|D7(WswjPO8xf&Znr zI4^I7AdB+nSc1^;?I0Lid%`8{x1~-w1xSQpjK>{Egrh>(Q@ELmhy4vneb|#qDggz5 zkP7$9?qTLx8fnD3lL=D&yDc;JbglM7@gYnu`XiLq1 z)UmGyC#I-moT^I4(rTn&{fLndn;@{mC6tWIRdsQ#zy2})J#dGGk*Ll##h!_0Tq-kt zR{g%Eh0{2#=uG7wrz)wUb%fEWqL@Yt9ciUJl`6*E%_k%fqPXWUNj?j;hJ?{l;|G)XT12U^cv9nT6>jk6sOARUk2N#N#T#Yszt!pDSrm7_$&Jr|!A5PeltEy^jQpy)<>HrIxt657tYp3#{=pS=ggJ8|x| z1@C)53h9Sb{pQd*lr6(BflS_}hQs#?lztchgFEa{QaVO?>42WR@j*_VlBIR|bPqw| zPaXOwUmR76{GR-tM%Xl=+K_`YV^Sq+;!k%K{Lv@?v1XJOiws>2=3{M2*j)jp04+DF z0%Ug+lQCl=CVVbHcU>;P+AwBKFN_Gb;;x#ggeX2u5x4{AO#TFtPeV3qbM{*JtGN$` zcieEW3O)sk#84BHoJE)s@&pRSiZOoy=BH z7H8s;nCAe~5n8dJXKpFMTJhZLuJ~{wK?a;ulG6+!S*!cyPOJ;}9Tq#xKwHV^s+Mjw zUUd;idMg+0mQiib-iZTcQv68lT(EX{$S89{yJze6nf9Mow~u?kwzRb1yX^_ z3p}WIMIRW+owe5VwzZG@%1-%EoElPNPn>pJA6b;#uaQ|+>WPYUF@m$^6PEoANYlz; z4HbKX6p3DhiS7*jnX4a^%&mYSD{48FXpM93Pp_P4OU`|@10bonh{(4=21J`Kjd;8I zG_H`p_|IL6_tu=kWd{$>K{}hp{rh-&q1Ww`enL6GP;5m{@Cy$i1|-TqK%_5jo<^Gu zuWjkPZ?7eC5wA&=Au^J3GPJS9PDs_w(ZoK3s#3(;4Q@saH%akLxiQqk9k6fL5u>5S ziI%JX7hs)MoU89CE;h=ZcM9>(3}e5B#YV=$->omW$b_nzeJI%eP)0Kz$M=jeM}GNS zZ#Kqw{p;(88%(9fhUTvZ70oYgZas$VIGdyC7S5Xhf1Yd{aWcbOVhpEb&#iHXg>#@_ zW%9C%H8&pad6%iqYQ%Ss9KW<HzKqeb<8(6Y?le4t=wbgzukVR<`Mjif_4C!PQufQv@J-YZY)qc)mwQz6Fc zW}+uv78QFpvM`~D!FMW=q_dpY^wp6Ew#4H6-yU}swj#V(J}yMZ>?V+^OvhPf=np3$ zM*K8fbBPO5c0=tx_3xfmhvTbuhNz|!ldQwsrrsv5+|vb(S2Kc)wy8L^G0#>8O-+Qd zN-(1wNo-OB>$zyxP8fFDYp?t)s3G&q(vBGS-xe`+)9~eK9NVhf+q~FGBQtE(VEJ~` z${Zg}2Pj`BFQ4M|OyH`CsFEA5{lp5UjHw*r34J|o>CS$Lz(Sy?y4`s>0RXM#hO!AXmLg+13knty(8;1?OemeH^o8BUoosZ*f+ z)X$^|o_VRM)2>V_im4xpicU&C85&=#roy%Elbg#9zX)~*q6qpA?t8Yx`i$bN1(qvi zzIP7riuaNdtlW%^+8pd^?&KL7s4Lfrm%w7BF*cgzIoY+qL4Fs}G6^c>r}7H7=+JY^ zr^OVGY4r}~j@m*DKtR!*l{7!qS6)(C5z5GaE*%&6hm%TVC6Sj=VCzGkf*p-LH7wp+*if;i~P*DMZ!i2I@ z?n!E}@*ot;0V;M$ARXO{1SEDqp%*0wRuu@j-bi>ESUJ{YyrbeEpOTt-`&B&xtjQF1 zziy(g*WC;588d^OLv=;HQLLnK7Xri>OZbGOIQQkR|DZJp0^IG;n<70{kSYMeVRfV= z4oavU&N6ktvJFYmABmXue?En-C4F)BFz+(r(vCop+_hf5mU_o?b?aXNUMO!% zA7QJPgt6$Oq~7fkU1y@sSXG1Kw6DE-!fbt1Sh8gawFlqxdbHuwJjLg3&f;-9{UV7v z|GZRbz&GbYeNjMcOpKIrUN96L;uV>~@xRwYwtd+!#Op-9ZSK_q`b{AH9O+zZ`+jyU zJYP)%=M13(Xk0BV29+`SA~AzUVP(%7oWY@n_alL`wqH8l3+WmlUc98;tWqJpi3gc zgv6AR(NgUk`Ul|=V6?mZFV6bCZ8*c75bz*3m+72z?Lwl)cZ5KVBT|iqwXfy0W*5N? zL3!lk#Oy`ZsXh9IxrK0W&jtZe?K_fs2m(3&VC;Rrb+gtU7pUA;4BAk5`jwF?%$Osg z%)E)9e}0*1Kpi*I_s6^*57G7HQSo;AmwiOsW34xYM>aP3?~-x(ql5zb|KfP@^v`o_ zccb`$tI?WfAY8RLzZUBUM#}Yczv^dag&9d7_(n-Yu>EcH<1db1Jjyhk8&lW$gV)=DkT zV6mG1_O%Mno>iLG+lk-ScKd22qfTTXj+SN249Kd-%81EqnfzRIC7Ui($RE5%aWw%0 z;~)Joz5^}gJPeD=VO$}OSq9DdveH~6m2>dNO6$5%-?ip`2x?OgP))S*ThNuyOx%6X z8^zQaa$pB2f6wFeMS)&u&*q8)QG|*f{j|Ph z|2MxKF?NWoTU}&hNWee;<)i+XP5?SV_CK-O5v86#9A^0>cztomCh5%Q(@iZ-3F2et zGcLo!vsl--Z{Dc>IUWc6HmKA4A6Ysy2MKRP6p8#k+c1m1e+_eoctpTIrmmU_PbdI) zUehzD-;O6)h*B0k!cGzknPT+&<{o=na4i6b8q5V2YoOa4-^G(}CEW2@yz&RV<~ZXX`68T;O6q zB6q6Plw1ZhkhTawMPC7zeL_Xpbt8kBn6f4T&!QE4ZmmF9XpA`_;6xvKWtZdpO4|1G zphPAaZlQP=$&7n}i65r-lPbaGA?+aNpb|0%#?zSE~(;4HsluJ%Ywma5;6U@JYk2_Udbd2kf6%v3CDcq$g5G1!cZqBiQwC4dC z{9+Q?^l3wzXm>(DB0hi}Jo|#S|5TBXJrMnPm^BxW{?F5zrOaMfI40!AZRr9Rm9?rK z5BaSoeo08(-c|^;}bUnRsh0c7*L-Rhr3~Q zeL-AiI#jT&zJO^ynSk%lf)P}9&_S9Cpp)}a_KyQ4fv|IT9C0m$d#ru}H+##~)E>QC$;l&lK*z8rLZS z+xVC5%x=qp!gWlJSXVs0dxyyckf%2)9pXCb-h(L9K5~Sfxz1G{#H=gXsG5+OJ6P=5 z!SZz_pxH2@+E=44D|eV9NGOPZZ$tawnjQ<{OHPekbxD-!B~2qWs-8O4c*p z9qE&|!D{tlx4PrwW$vrhlB z=-#ccU)4Yf-R=J|ZzQ~A`*%c}&3p7GY9>=U+pdVL)UGtSAaJA6tH zu_0K-@AO*39&gXP5Q)fSqh6&5QgG#pt6TMROiub&%p?s(P#Y$lkm%vxv={(m@JvjbGJbCG`&pa4z%k{UhIOVTjearLf)p+I=$T z<*_kMia}E-j5`>5$GSGPlQz(L1=m;3;+b39xr^)z9#qad;@hy&kdP-(UJhqtlxAD4 z(4%G}LyGtm?`1cbVBwE3ad}LbPcDZ-G*xpS{d8~c(P+25eg46}v-N(et^8J`%-S)Z zS<6s){&f5a4FO%kn?tf_)Ow944$9<9qJ)m2oiV<{z_s+rC&a-D`xur_y0+Q{mg@wx zJ|DwXDKS#_`t;HOLaL;lTepDe^9Lg4go`PstLX53`t#&* z|25ahHA>fc;U#QRN%N)(SyUF{@#dK+&m842po?cHE~wCR4+ZbFE+aY<(RJ&%)uZoj z+VhRV2cA0C(3r%-#eP(^$4AtZdAONL-;B-=38AyA4q=jEwk|8rN)!^Z)i7rI6*3(L zR~<2{4ExA-k3Dhc3ewRXodO=3YS7`2{#$_27OC*^5o7|_y&%96-XI#+CC*_AW4et^zO*S;NYOd@uUDqY z|HSM$JxQ>dJTsW1qqFPf+abSo2J+u{Si6>M^K?)`m_{eMcKb<-cJ8q*xJ2~OuQDqN z*L4&@&m7#1bZ^GJ>09uj-szHzeoy=KT`=-C?f@O@Oq0mP)qh5%lkW@DD1-aeY_gu= z?majT?9Mk@SQcJ1-xLJ>H6W7RUED3wJ!6E#A9i1la7k^<<$>#Uh-2wJBHhc@#_$($ zqFeAbPyh}0^WrUYsK66f&lP&#f^Jy3{W`m*8j=g{d2gr}t2Vp>$TZ+n6b;aB5!eOf zRqSA|sD(lWnrq^{fc%Xxveiow)h-Uf&5}Dj?7i)#ku0@$ic>Z~=#a{)pQ2CV{g4bX zDyvi{+6z@B#W^|3^FYcI55iZ^gxU)5KVbkvJKxkP4vYcNavL0`C&HX*TR{$NA}gUradD1g9D z$Yn4ExMYv{h2)rgWPVEf#cfK@=(*%=0);#yL0xqSb^`TlyvB_??uocw$NU|R76Mf? zSUtwHw+{`_vSD#X@0cR^745N!_On7FH;j_Zq6sMUp>>tlG!JJR)3|}~^xhH9x<^bG zzNliIgN*vEP$V0(Z(*d_i?ZhK^6@O26i@PmhFBs>joGCo%ovXOv`!>j2yJz@1#MsJ zY+N3}R9`%m{h+_kio@0Iukre_8>S+{lT->k8=b$m*}m6?Z%KBzhIqQDPUL|gd@(A( z6w~@BY1oaP>K}8vKxDs6IO7H>m1lWaa|FmGjhz{ovOgD}72EN+US!vgN@1IYHH$Pt zbE~qu^q)u>>p_iO3pv#Egu7qVIyT#<>s~ zr-+CYc{C;wR{u6U@siLLd@2y zGi|0Y%|il(Edm%bB?Oul&igThcfcrT08YzeK$?W^*~X4v41&?A(bSrot+c5YUE$IL z>1~|BiA*T#G`Wn*$LY#q!)7wBlTTEcFpw9`xH=FG9 zw1V*(7L_4@v6?IkSS_zCzq71(a-hFN{i>=m4jmO2itvGSimbxV^&ubQ_#zSh+IFD( zq&7nbMDpRQ4Da~?5zi8naj#~=id8IvP1B^i3}MqQa;hyumK^F?_^B5!C=d{PEGDhY z8%9-7__eAc-;4IvT7}DH^~Ms=Hxt*6-(vN1QKG8|jVWtlzDtsXrp0xYWf{vN6J$WE zHX$4izsyz<0ztVqw^_JXl@7?cX(;~(KF5A0q)q!8dDPo{D9%?!a{&LF0MT)G|v zJCV0jm**l(-RHv9qlk27cuAKTR9|ri!gLiRJ*9Swo(vvfrzL37n1Y%k_yT(S8T2{A zvN@J)sMK-ghq*s3KeI&2)@(2OVCa_2+jh?{{K}fi{!HT0Pi>6SMg5R<_)RJ@4BTZ4xJ&ia6 z(H=4!h0aT%MwVG=_V<>GWaO-H?~Q)#{vFZxlGXh@+z(q1&ubXL3}FPz zOW}jF8A>xW$w}vA;sVa)t>)ui2zQX1FXl2|Hn!n7)J4;4ECE5A)~XlHlf@q|m*|nK zkaZd4yda8T{kPsxx zBcu%M9^uH1>!$@rk70^01RqYHW^(45hmPB`8M!g!&0L`cY&_m)ON@cmZZO?&tB9!G z(Qbi{^C0KyTKyj9L;t#18ul#j2bl{-$=0={oO2GEpG)EW}RTrbWj|_ z{sBEV3BV~xf6s<5dd%|dR&kiu_Hvq<`!%rmsp6Hp*1Ef~(E}Fsh(xBZtw2gS7(~D7 z^_sno^TqbfR}+B)2MaP4O(san61|)D*?NW0q%o7IStshv-({OPw`Le<+xMYj{goTY zwXq^BE(6ZXVD>d&Z!i>2`EfK26oH6}VWUaSA}uuV-}>@@{ghu5*flVw)ye-Hj zJM;I^(l_SbMoRU1gX{{;S7#7$wqiis5V!S=8xRC3Ku**usw3v!-HNC>CSd7yLhsmr zB|OcXom*BAqggA*$KExC30hq{k(mz?fPXhXs(ub)4gxF(jkt27DC5_P`&b&T{Uv{{))hOThJ8zEy+%(#myn%Dqpr_<~+>6*g_Z#<2+{%eiD zH1Mcfin&;d;k#u8^hsb|CS(2m%(6olyh>P=uR7eFe2lK7-$UTLKs5-Ayh?>F24!aP!vkRUd9Jm$Uw;@Jwg3EZE7dGunr}Vd zkeS+JZHaIf>C<|Y5TLkg?b4oQnJG^mvb5;78w505g;eXCt!_|$N<_HJ-B-()SZJP3 zKrfyY^Z3=gdN{%i$ao!7bKRKl)ZCE~yE|z1UJ!fLWv&>(2U9KAh}VJIzZf302p zi`h@X$`%|8B^m#^saKf+(Diil09Sr4d>OYiKLZuw2 zrZ<}%jR-UHOCwTyo`|hCb6=;&oV7Lr={za|#@1j~zve$Ho7`snFH&A`X}F(!%BgpP ze(ldJYv$MV(i8e9#Rx`WumdqpTOinsKhU|n>?0=pqdTV<0KNeO!I=P~i4C=tIi5wg zu^=WdQdeU`-O1}7qiEWnw%psx?1#S41%e5e8n@W5unrEiw47bfcs;l>@Tq8IKu2u2;_>kGqIi;hE@S_B&sN+7BKVZ2q3EY%LlmCU za&$u3;|$3jjSU_4651-Nz?{6H#|VB_9>;3T9xk*}haB6MkbcgtNJf80}Rte94MuI!WX zT^H-s+&3(RQ|00WT@xfh_-z|E=aq}J-g3&&<)3HkC0EUu<1OFz@;=NVl(!LIlD;fZ zezahohW!66m4A(q9^JWQzHv5n_dJH3;^9=%xt~13``6Z!ca%=WWb=_f_E*^-#9&~P z##+%sDTr${v2CYpv4MWkw$!CmAxkm|h>_>m=#w}Hc*iR<#-y1C^ z3YWWoamUy!v{*RC&BNZ@*JuNcMA{z>O4daau!W2YibGHav>#ZbSsA}Vs*1D2_B*4e zH^=z+kv;Y~2B?5B!f3r=}}TnqX6nyTW&UP~>PS zPXj7Wu?0t_s+RF%6PNjqqKp~d;m3G~0%~ekhgdL#RU;_Aj}`pQP!POEzHc}Aq?&=6MxUYD=ZY`)Sl7q%rwKYw;+CoY6-E+GLY>mgb~c-v7a zMm(Bf0f=F?%Ngtg98;#eQzqA;^%4f6em?>KT@xIqsbA*xqP@kf<%Hw+Pdrq z)`+0sSL@~2sMV2s%QASD07<;|c<{MMJ^x*Skk99N`n!97bCmPSEI$H&dS7QA@(7hn zTgh{R8}jjP~){UdvRE@34lYk^@Ym(uiGGeN%O(*Md7 zv!0@A0B`lAknuQ5b3ZF7jzK>Y48`nmDG`?tfn2VV#qyrD{-)wJmz~HVbfIT7=m)}RVN+JB-|D__UZ;g}w?E+OO5}ESu)L#!vJ$blL zSq}MwC8TtRC<4jQaG>5twiil5aQ<>AT<4u{-kfEJw33mA!hMhqX#42gpq529u)BVm z&=qbvcWw36paM!=(WOia4|i8ACIgQ7scKaC(5whnnL?#^l&!YCDp^>9a2-B~w+Yel z^eOC|27MCmi(#gYol+wj?AOq98qzF3)`+>T^-(+MdOvk8V~lCg(os?;9!xn-R$;Cx zSYw;l@_*3m`RN-q1F~pZHkX@aX;2n*3=wnIMb#+-0LBM{DadC`oqWqJNZC0qU~L^U zg+XV*aPSP5COnI~-+v(Rhe4XFePf~-o%BZ0ZqZ@kkjk}Y!4aWIlV&}~J|^lDMkA`B z4*ag5Kf?Zqnnq(@;S&YKi!9Oj>}-1vBAQW`OEKI~Tzdd}E3l9Hqi4CK+4llf7s8hX zZ$kM`3^N175zsM?7goaK}L$JPhe7GJEN z(Vy@sHJ4NtR}P}OdT}nPH>LH_oE|@wd^WH!aXj9Jg@E;<3!%oP@!3!v+f_Rm39(#Q zR#ZQszV_zTVzsGz?umWg8ybN_81*nEH&EompljCGDqbr2CvmKblylABt|jyggYx9l z=snHf``&X}T1I6eIni`hMinXC=R;>M>F!6Ej3W;-3bJ-DO0v$9F-WIJGJkrZ*v3Cm zJfhnJ*QQK;b)7SkUF#xr$-HPInFww(&%P;Ui%}_mCm6Nj$0938950-x=LSK=ge%o0 zQ)*c4>4ha{jkp#(dHoV8^{3w;Qi?(6dVVW=9?U)}^R{2h&EztqsG078mmlQ=xULnh zE-}B5ER-vdZr^ilBqCpuRRfu_yGRHxW>aj2cGH9>RC2RP_Eo7@UT_y!xfsW^+dIe5 z;_|~FAvV|-Eom4-?a$3`*4QkTOlV+U&=jgSHg<>n>rMAXQ?-s%RpkSE{yYi+T zd4qa87;2zE3t;W1*%P18$|hoI*FaE+TyfCFHip5BGiws5YVdV}tZ8{ghMKMoVGe1f z&S$w9YP^O3+Qq=X%LbE_F4{&Rtd|!tf_9Oey?TT>+hLe{ZQwuu_}WAe-EDJ2%^;R< z^eCCCgnXqbx}^F3_M992Y>Tzh>k0jibQD#~T3Gy7RmwRm@g1QXreClXcJ%+1& z(GzL~@~CesdkN$Q4Q%8(gVd)Hh;k0l9R^{B>!?SOHyIyO0I@xuB)}Qp1fp6T7_CST zXn*rh3aaFPFDn5la*kv2{&&{35%eg{q za)i`|iq2q*REgfJF;Bp@NcCz6kB}-pEKj%>BJIYT&|%7G(UAozfP5lA_d8YPZ)Ab5l^U`n$IfBpQG?1


    |Dd+xgIx1Ft>6|a&u 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/products/s4.jpg b/public/assets/images/products/s4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..803e39788a2451281d4dd332819e624a7a95f3c3 GIT binary patch literal 84198 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 z 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 NF8(hNg9U%N@ox(My+r^3 literal 0 HcmV?d00001 diff --git a/public/assets/images/products/s7.jpg b/public/assets/images/products/s7.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d819743d36b10cd597b86b0669d428578d39b6b8 GIT binary patch literal 78225 zcma&O2{@G9`#64Pn(^AIu|}mP*~(54N~0)5w8@fW8A}Y=cTL_FQV7{bnN->=*+Z6+ zWJ@U97+z_!Cn2Q%_cOhp&-eGguHW~6{m*5d=bZDLbDnd~z2E14{O!w?_pk&uH&9Yfq5 zwVWh(>ymc{X$R5H(5Qa)}O-TrimKbSx2tKZX_5a;lJGVkCui-$ z`uqNU7nF8M{=2Baz(A!ybtNw!7iCo~EiGjgHDxt5MQEYu8|>+4AEfB%yZJvO=u>?i zecaCYxp{e#u@UVZy!`!kNy1G3EP;0Bzr+4t_v-&>XlnZZ-IPYdHh?p%uis(n|IGLQ zI*RNKhY*U#S5k!qyBOA>}qa&vRi)>qNf(Au_dkJ_H?s;a66`dWIb znp)d5HFp?js_)plZ_j`F>U%l*)2N<)|LN=WKYjQ9uYECGpq+s?>r;K)0;o>=e7tC6 z&YHE|{`a|P{jcNw+t=xTpNroA+E*DSql`iJ|A6#=ssMek?0@kV3jf7?swbek58(Ch zNwkWCt;nes=m+Te$C-HLIo7Ld2`uIstNsd?%HN`;adgI_HZ9|@R4edOvoxcBJy?UdB@(rw@o|xCf4a6 zl@^uJSR(+h$KzJ4SV33;gA(CwIK03L!X{NgJvE}F5Z57l@6CJEh0k3(ELG6%uvbL% zcOT+k0i6U^2%z0)>DZb>a(w6kue6xcWG8VhXH{zG$42emPo1&T`KiGlIkncyU-g5vC#oR~|YU zAw15NUr)~!TBjQGJfj>kM}|Z^-JBN>eX!P?U1E|ElMefcH|NEvaASi*H4g#Wt;B63 z#2YIJQ_iRfQ_Oi0lDdZ%6CfjDLOdc6n8K7pn<#QTDlj}5tq`Xh(M>5#sTYx_R~a0a zLY8zYk0@ExZ;$kjySz#0(9xVdM@YqcjJXfSKmUH``HM|bwF3A;b3Kxb=qX-qNu1s( zVOR}9Bwk(=PeF2W(l`ptif)ZyZCJ9#Q7CYOH6mm#MH0r5Gw|q@I6+PrvA_SSNW6i%62*Az(l`(7u20jkxWB>&SM9zW%7K%7*5eRQ0D`}dohj_?13bdBWCbW}z zC^#uzJVMe4_J)v3xD)wCe3L(Ot(YEDElRKnQ4%GI*U?cb{>@`)DN(YpFfWBHhs=+1 zAJQTi3E;(DrQ$K{l#|2vuGqR2!#>Weaj5vuox#CT!aK+ z+qp41m4fhcOBPa+2qjB(^7z(W)6 zcsxCc^G7e{+D3T8yFyAq>ZnxKp{-k+NQxw3!okDEYDT2u*GHPP~YZ#7B|D zZMmP5bpOH#h6g+=$WEl&+FK2waEmr{WEB_wrGU`6S3q>G&h&RKOrb zN;E0)#h%)~%>lQuk>z+1P=GKH6}%bSVGPS*df46aPZ6jD@!S`LSqmWwhu>i3VLuystt^ZX)gI3#lf{EL$mNj(4N;D#*-PybWK>uoW{=@BFiD2e}VfEP5N zK*1PrSPw%iZ|FdRsly~Ob_HtyMh6YZWMM=SJcST}Dd{7uCUpmg@nbSc+<23;ev&cw zdH&%@p^KD+O{Yv0tRK~gegM;lKQg{H6?aOHYz~|? z9%qgK5J;Hxhnv!+gn^y?$-`@L4lol8J2;?%3MpWn0&*mj$iW$Gc~D6KH2RZxR50S_ z;1?dc0ksg2;3+^v1pJUttBMDhn3Duf!Af81;WFyY6C#hvZQ`bKTj{xqS>q1zq5>5n z(SlA%h_s*sXTymI$g2qQ-dDtiCo&Tv?Oi1eN#?@bL_r=oF@ljE4+Wb5kUGo~n+@&^ z){;ZU!e}eD|C}PW1VPEeNkp9BIgCCKPL7Lt8lc8=4&CRp05V}F0rdk03Gz@t1aT+= zBLhsNKo#sfG^aa4h6s%7p#H6EKn_Odqxj#MoJ)un-NfxeQUuD?BjcGOc=|0=Sc?!J z!by^(UALMG0~YY2>q3!{dRB6qVLKHl!Yk<4g_20HVSqgU*>WPYoI>GD2)kJ0LA;1! zQj(Jdr8&EAO_t*!|EYlm-WLQB&M9$tsS%w51>Bz>2?zpk2q1)$!zcj{NM&RgExt8P z;QXFFItOo$#KZ)K9R%P+d>Er+0+P`AP%)-gz?+3hYbe`*lFr_2Auqo&gIb0VQK18o@&cSP@_r2zEg|;M!66Q(|v; z@g`FGmmj|15{(qs=cZDqdgKfo{TK)~;~3!R!oc?Mk-WV3i<$I2beT=AvgnkEr6?U} zS#GO2uOX-kNHoiSs{%7a-}o{Ubk15qm@-U+D2IgC0L<4$o(9A<=LV!gNE9OgJ$Q;G zLuoQX(G)tChego$PzaLdhMN&*>xpDuiXZ^hP#SwkV3J`(uvD3dLI!SUh+RxD-jjrn zC*pAOWOHO>_%d4D_yOVLUWM~&?L5y%^y%@Ukt*jdkjxFG^^&k*HuG|m?|_)XN52wu zB}WMs3j#)Q*P{DU{J=~jBkkoBir;XPc$0{i5g`)hY)J&9VaiFJqZ~Sei8KtK(HmrL zga>TGof1Yy03M88%8@xVjrPDc7s9lq&?iDIDJhB|Pfikur@-vZDG0BJ!5Ete9r2Js zLF7i*>L@@fdK>`({7VWM1A37UNgmd7CY1_G?&ZHPX34Kcj3QbCW564UdVG`y$51=RiZp8JJ^Q1}9Olz5h3hFp9!N8zEi}6KFu(n5r%f ztAm2@2|QVxRVz+0z6{id17zdHzajA=dFky!ywduHTX9f8j}e|?DQYN^yhjj6Aqpj& zi{B(Ab&eO|d$BiyHVcRX;_n~k1!M_g0G~jVLO2fZhgU&={82z0X2E@7d}c_a>>M|y zCaoCf>@(>PjxmLyMB+Y5GS>t4{fEw_B4G&_DMJEI0Wgt*$zu##4;Dj#T5M5>z{LNf zMyH}zhzK?U0yzs$WDwvoDT(x$jIl{{kkUwLs+BuWKja~2zn5E#zyTlK7O)ya5(4u& z^SYop54-~#5lh^}H!IN_K`;a+&}jSSbwv(^GM?3vo3A<@lu%$#l{u6>9G{!MV_@<; zqQBXO(It`4G&?ET=hIaawz)}k>2MuwZ1A9Mg0~af=5nyL8&=ww08o3WSkV!Uw=5EC6ruz^x^z%|Ui0agQOh@gbW zBQAhCIi8P9#~1^!3*hf~d?a5EMPY>;7wkMFISfTs=!xrz6Q0*zAi)X&E>K^BY~=Nb zxV>bj`&3tPxlLN<$Y4Nncrw-vcn05|R|yyc5+*XSS7SgS(1Cxgx^wqJ_sE?UxfSg9 zb(dwO=Z0hMUF{UuSi-fz0U-$sTMHZVkm;v+?#oHhu^M=*xs0F5s_ZFWPx+90k%t$`aw8rG zOg1Jj-yBfv_i~WYrd7!FWKJ0;dZ<~%#fJRdReftpe6oL1^LU4giH1piX~TJaRnu>c zq)sQc=eG}|jp|~*QF2kv@_69&(J7CRkVhWj*MxSLM0PZ;91t&5>=-pM*wKFVTIQ&> zi%oWTQrfRg*Bkn$>)$e_qT{&DA{}10GR9NfJzm;`DcyOr&8G22$($Pl zQ4<+Bk|8)x&?jDyC1k;@yZYDp@zSR#NC6aL$_HR5y!dl^D&{7+L_=(BNY*%Hh%rh$ z&-2<0xp*-;k~+s+`{xU3jBteZVlsP2DIo2`E5xLsLY zqfOInphn_z7p|KELS{YB+?;bXmcm#z4wB=lW*cIjJZ_d*KTqvp-<_tG46QMcox7%H ze||imTs}a4yn58lqt#{k!$RZxkq^D~*Q4S>pSwFPPj5@Azc#E?(*3DWTWx=9*^*|M zox{R@%iUIqA~ovn;hmz>4QG{SYdWH{kF4>TSSnR~(Q!k3_r?gwLW zj(WH3$Up;k>X3Gw&QU`iw4xRh!U)`Ew}97iuRs`AmJ+4_BnenOrrRNI0EHmk5TN*n z>Ufv{8pO>5&KX2pBS%=VgA4O9NCDGSz|$r5P#V!t=sMGhgs;W8s=^uYi$De+O*e^r zgiQWrfAq(^06id8BrFtv@Teg|FJKUasWMJXXLB`BhR;kESzYorcwnZ=5=ep4v_OEtfsI(^fbxArnlQe@A z%4Fo{HB3x9)iqw|hi9I-vMsdVCL>r@=77?@4G+4i*}{dhKI2QV*82~-#_=ACv`=5> zu9N-iRdjU(HBltLz{n}u`}3p?|8#qKL#L+q$DGjMtp|=&Pb{@~Yt3o7C@Jk$av6yF zZ1ju&dg@_IkIG+T>tF61SWc{a^y`~zYLS18cS(P*NK|*qI+tbMVLp?O-Tf2l4ylci zMH=5S*=mh8sx8}CPZRxqj;m`p)o-tm)aChRCw_cK;8LJZLq&tC-}jG&Hx3Ogf63(1 z%9;)@N z$CYP90MKAIFG3__gxTrBwv;F?O4E+WNW=q50gghKlhiX8g|0X~3N!|_#Sn=Cn|*_m zVP;`N{+sU0;Xi`-|JSDh&7lyq`cXA=`LBCkeZw``%M%_Io8t_M^Cuj775X0jEU#`0 zn{-h8?8jDbwz79g33N$bXb`p8b$tIN-i5TiWtS@Ubu>@3O<5U#?{X*_y0>|Yw^<;| zxpBrlJl$_3@ZeL2%`Zh#t;G+n*ZGpc*jeBiG^{F|{u@QSjtD4du@8I93N)STRDQ+o z{Wcl9=4EM1@B>vo{nErluP23yjntx(YfRj9y?o4PxG+1zrqu>YXB=5z1lX5B4!Oul{;Iw|z2 zS~$eBcR*w5spVwFXH;T z5h8h$Kpe(flFW@L1S84&e^3EbL4ZC^1_xR?v^4@aa`Zy*gvdq-a&rS(@L#C4HdI)# zgP6)i#@EV01AHVm(E?hUgV(4S?uc8kSctCjSWNF2-JER6kB8CpF}nnmaSEo)Mjqup zM+M}<1Uc3ovi8Zp7&4A=+}yGG^l+ysfy$}!Gxn8_R(181j(k)%%+>8GZT6>isII=^ zIhopTP$V3EBa9lmCdJ(`{N4QL>;VDO9fErk&&GO{7R;X&rtUa>&pzF~-8Q&Q?BRfU zhEAnop6S#2cIBtI-YT^Zokkf_0(Zj~_bX!G->vy&!|1PA_^ zT;o*8$_^isQPU4~O+$Ls>;pH({miF1{u*_g#iN{E#4Q->f zOY+0#f-<-*fAn%Wbm)*PnJI)KACeI-j~utcX+Ax{$om-F0796l4ZK0BmJEUce!v|# zFgpd{lHr^|5Rf<@ok>xrTSpp_KpmzC6T$Ey-Jx;Y^dCxwrssL}CyDg}CK zk@V|=z9eRnAU7Ch<``mO76&5U(x)Fq`jOysgC8o!+_g#g=(Ph=H4OzlpV&@AmwPKV zzYN|}c6~&`E@OFr?9Zi)g_&0E$x0ck>3lxN2{%^d=?!a?I)0-Y0XFZ8w&(mf8$c?0 z6eluor|I*N%S4m4p*JAZ@!?=#(iRPBuFcL}7iBM8cPvS}ZN=y;mys83J^Ib*>uJrZ zm|aDh`X;vPorOg8--YfEYJJ?iX#2r*NvlJ4At!(80!@71hS(OdsTfBIc0kK<;`H+| z`P>?(f&l%xSaz{P<1Y11YNx8v<(E1?Y=t)V)}()Zl%SFN)lPs`!fJ6}Fn`bY4Wc4UeaydF^X&v{etu;js> z_~anzqic3tep)GKtX!mAh@`mM0}9>%5*m+htj{W1=}Wj8@%Ku{$(C zR`J08VuYbn#&jM@X~J6iCIHkQipBT>P`(~Y zB`~29(f`=LbaSy8Op{PwgNRWag9%*T!r(fiH>ASxk^>=^AWY)o~NwF+Bb^;am@4N`Evkr6i0oo#H)5rl*)nKG-y*dpj`bSz(#* zPa$>x_VsQ}V#=N^d*a_pcc>naZwz!T9G`L4ar;~Nd-u!W z<#C^BUWt|7T0(Y?=MvyEl8mHl8@QLldm zi+4epG!nSl)FwbHwQP^Vm7U6A-+!a#(WtV0r+cj)-R+s5DXaXhH91o6*V^;V?3+{U zMyDAWwU^)5_^~}c-t{r7On) zs$c0&+D*GJw#RSG%82*VXzcf?87y1pFTXr|w`Eowf0%qR&V{{MVp{!cOUIWFud*dt zfAI%T+tDgs8;%x+DGl!qioSSJ=?la0rR;cWf_V?E(6r~#+LptK8?+A}OR6~@Eyiv%C=li(RAy5R8-l2SkysUML}Bf4+co#uu~e|P1|7CEkP5&;jT=R zcmc{7q_G4l{~skW2?`ifrz0@c$cPTw#H$lb5FCYuN zhF&1@7uRR$WXH5>H?O$D?MWs>r}t5(+wSXB&fjR*pq1`WIN|s*XtcAcqRj2&)m1ZG zCJf8E7cjipX)Ae$&srp&~aBT zOhhxwQ=Q2!^_n)GkMy(bznwLo%V31xpIL{L{k~5b?^zSEM`+V0!=(M4El;tnGQBiSbv?C4 z+FZ88{IC@m@{4$PYqflTKq3gn(uPWP8~4|;kzaG_GE2QAf5a%=^ozcEWIaK9*TCSl z@V@>+mk%y#1qN6?pwWIPWd=4KyPkQ!`utGFN%}MO=gTicC%)zE|LW;J{;qFv z{n_uf(XM!dEO3-c>LF>pZQwJbNRdP%!IT3<5e}kAkxYO*X1RfT3s3-{hsYRw;D$ZG zY(hF6M2Q;n2~q>!5mw0!S8F;i0b~Z4gNTBzV<2TFNK!5cVyXk-KKNSoIJzeffvEsE zb~y6PD`Pmt4gB+ua?(wgkBIh8 z3@xp-m>kIQI~`axC0gfL(M(ltq$!s6eh%-eFJ0JISRztn@IAkCA^g~APf?)Xhp3uQ z&Y4aJb9x-oB5oBGd1#0!)RonX+Qdrsqz7#f;ECDJVBcwJ?W*7XrmMc01Km)oesAD@%wCu9~#j zxwMkqCm6rCC(6W{h%Ntu8`PIgLE>bInM?77Jhx~l4jQn*Y zJhbH3n#%OX9`X2T(KdBq=tSt-tw{eg`v7t}i{%IH4Ti76O7nI{w&H=l5) ze3xFzCl8IvCzrnuwx|3&By9cAYG6DxHYdQwnx$@RHg3^uVVAFalcqWzzOgUh$9u(6 zjXAa-E63k%%4B(F-#~S%ZT=C@3Z)m!6=VcVo(F6KDl){h$Wy`;fCHI7cdvpo;ZE%X zy+4#`0>I{gn29(JQQ!vu;sPCyBh!KSDNaho1TJ%aAaX=>Bjan~-~k^AN+d-A5o!fq z0GNg05jac%dBAJK9e)&xSi-6BDN?}HAmXlaxWK=Tbfz%Znhwdcr&5EfKPS*wF0ISy zZ1vp*`K4B~ff25=vS*7nJ}8=$S?pLEUT^XnJyKs<+b&LPecU-28XGpK>~%8l;h^e7 z&98R;k~}e*R(R;5`-I)*x8dE2bKM^&-YZtJ!soi@)%3ThE#oR0oZeTA#2&kzEfS*} zI+|}wTe3}YWYN6Zvdd*;6!R+fo}9Sqb<=6Ft++m&#`c&jb$>3KX#KX?NAcoVQTWmC z1HT-0{XC*>6mvT=@que^O6kOn2FI#~H4`&739=WYjk4D?+dJvo=J;4>^M95|86HW^ zbx3%6@K{*Qs9lz-GmHI{#X6AN<;HXFD;vy$&5AufBQK@XA3qBe>1Kx~?rwAPx0<-O zvFEy&OSN)?xZg*cCmmn9WGAgfQqLH)$89fiS}GY$o%>oLnzVPrL>WWf#?L!-v?1`y z!D30H^H%~Ubt1-A%6rt8JM5Irc>d<@t659ox5NM4Bug7{Z(3H?Kd1?F9gyWzQ`4S^n}c8g-)R&P z^8+eS8_2$|!gEI1=$XMJ=eyA_xR;vgg-51IZCyKTsJqNCdNde#QBcfp^% zM%Z2M*+~ul-QgK)mqInR?>{~q@mc5UZxq%nI%pW3x}4)b-mIGDv7|q!!w7j4Vf^Cw zbH(-qv5$*KzUX!-_Ro9F8A#F^T-Xnrs-Gn)CcE$4eD#Q0&fd=(%4b(o>uGa?u}%7I z7T5A6th+PH{M}zrr&leEt~U78cJ|~thtcV>gQpFoLru0Nvq#2eT9-@)w|d^#e9blC zNvN`MpyIFY(AYCBG1Ddu$4c(~O=O6K-=@}-Y49m^xMa(JdS1Ow@#(D9QL53!NAH3r zoBMnn8;q*IbjZ%-3m#jz-DR6uHXa!GalkXT(Alq$?VRc8c%ooDXJ>BJV5yCN!6n5` z4O1EA%NF7?33Z~EPA3mHs&2fNu;XQMboz^iq^3J{e2)idX{vTK^?%aR8+2TLeZ1~c z*(k1|b7qNMng)gINGrDnr~B-B4z8#fK*GL%^J3Qv9HBnb z^}tj$%V1#Q$FNjGQpcKiyDaDCA}(EZU_EsM=5r!GNkL4QmkjX`II<)WPoYx}5phv) zplzUEcn%ID9kjZfH0!B#zxEe*F675Sg zH%D;D6Aj`9vwE-tA3Po7DjW?and~tcoEJ5pJ>kf*(5UO1`_&vf zFcqU%vJlvC;>h_f`6cOuqV~(v?-o~o@f0s|>(6!^SSS$MO|@t$TJ17=IiWg0fwbbY??_mYzO;s1siVA(|LAhLWcr4rffc>Qtr5Y`Zy21TbBHt>Hu`<(s zMf6vRtG0xevJUQc`cZ2CNLBtz%|7T_Uf*|SsCwWdV<&s@N#mMRWi-)HcF=?6+>l4( zHUe80Of-e!o`i&kGVIH5UVYj0E2Ha0%ge-rm9k5M?|LmhRUX`E{ayJ1ZII@1c}!rX z#PvGQqLj|12 zvq!Q0^W&OnI?kV_7?Hg{cU}{k?0$A}cGmgs-O)Lg0^{n1w9f<0vAw0^*Pf62%{zys zcY3JThiI2;9FIuR-4grYUQ5|)wrgsk%-Wwp&MMPgEa&RJe6@y4M=GrRrV8wqpESH} zJm$R7{Z~e1cz582;c7-W%R$vj{j=r)rBaEa_Qkc5$uBh4<{27_i$V|v_&+g@!UQ~{ zm_yh^trTAG4{ISrLOo{Z5Wq9CBA&y!0G9xhfL$RbS&9y*sI~@|L;>F@A2I~?M(2go zK^Tn5kynrl1s^yzI4|^qLpu|=Y>!ywV41CJ^5W5f{7S~c;u+-xaqLHPp z{2<_fM`OTFRgvb{L=W$dW4VbTx?|rH-E_iZ=VY%gNST_LNz8md>;@B-;H`_KT(7SX zNvreYw)uBU2S2-h4-D$DRsTCQadk_lY~#)7%Gb26=%t3fixR)l8!@l?h$Y`d>811| z563DhZa;TE#%ReMCXFoq<&{FMxmuM;EV`pIKAygJDpY4NG~ik;Iqq~>Y+meV>Lvfn zOFj)pZSOof`N(B8aWEotu%c1ZfiY1L#D1r~)a$NJcz@DscZcU^yFd+NyF1@)1n&HJ zeWfPEKGy%;ovFR zKC)C%Xkj_Ny#2d!@%z3-S(nVLw7@dkn+u;ipRcPJx>ssx<-zlDT;_p47I@7 zjyEI${wQ!1C{@t{zh@31$xNm-rktY5c=Cs^fIEbn;-tWz`N zW@I@uW|rFD-u3uPM@ZQ~GRremGw<;~lU=r#3ljMarVV5A3mtmXZXUZW;?Y;^QuO_7 zmd4q;J&tL^$@03i^aBUH_WQoo3BEJf74^BwlB$v?HG=f>4{?sj-{ zAYmd|-qFzM!pXC5cTC)<>gr@i-4OZ^^fdo&>ELg4xMI}TqVsyzM!UXx4FSFo)i%Ed z<96fMLP}oOXzr>OFAngRZx%^0kTX^rnOq9cdGFv*a;nPe0jP(jBV!s8&s#sqJ18=4 zKVqF!Q0vKgx^G^hprSE$%fScL84vsiM=qXj78&q;R~hDA+BdkyZ!p3w#;=PO^?9yn z%-!R3<#E^k`5mnBfVr?1)|KB#Rw8+9y2VEQ-X+n~`z`p|_K(Gx1YE6g9cL-AFUmW2 za_v<0GtjP3j7nRg)>!&Zc$EGOQg|3y3)|00-~_=lapn}?;aZ4JI|`N(My0 z%9y+m9@V_EdV^-?h77l3l7$qj4g@r6Hl`&fw)G_q9Lz zx>zUtJx5AIcCGHb`B`V6o?7l1Q)Xke5FF-rRpxl7*2P`3FREmNq8dx`3lg22#b*6d zuB0;551*)PIBrp8|Cq&|jE}yg_+w1OYJbA4r+dIsX!gjRLzYgi%Q&ymZ`3x=0?&h~ z*C%+XvsWyRxE%~plt@Y&9qaY833#}NT2d!!=jiabyLhPaTh_pVAv;+vw^;tbi^gD- zHLOe-&r7@9T2bP)vO@PzA~jKCCh*B!)rk?Wj8;EuX`8*zL)v`9mxsAFl*gQLEW9>R zQD!#K_fBGMsLP|#%stCnz7;u5GOiq}U^%PQw?7}h`O|izqx-Rtk^t82NikYf;pU8b z>XVKX=|2&cShx$2D+Y-b=H?W{ys|dx8AT7Pkj5^c*udcnL_b3-3?4~%$blmC=Rj5U z1}?P%qzOk4M%$}nF#D}lHpoJCi0Ur&Lu&dY7{@d z7D2)vk|bkyhAK|dt|@R22a-fhQUnglS1W&gx=^iyp3(dul8rhw{v_PA$sndpqf zvPRp_W~H2nrh+e(j@R>4Q##AKTO1j(P3wFWdG|I<02(FS(gHvCfT=n~|n8+AP}Y z=J$>I)UTP}PHnd5+i<1(yQ3B%k`6wjY+9Lxrdfw}!%ea8}8 zFT0L?YO6nBm5>y?`{<-(Kp9KDA*I)%s-mdDFsQBLeO<4!SK1XuZ{^M(9ezH|*C5dvEt(c}tJS`0{No?wdJfEKif} z!`HesUbt-#5FmYV&)amXaKUThvdxB9w$T(K6XD27m{7+&WpJ#HXM*2kPi;I8ml|1s z40Qx1Ru3vJou2}?c#J=DV%Ho1fMCMl@hjp_5a|#I2<1p~{rgeYF=RnLPB=AEBhby^ zO9LDQM&|@&L1%I_L6}Gs;ucI45%`;)fsPs>CLkdw!p8a(cn)|(NAVEjqN={}Y0|sl z`Re4GGcJKefnmSOxPpt^l4TqeVm3dN>^qZlFwbw4(c7^!ARrcYyCW$4Ku^TOah-_Y zNXBH&vrN@_XPV2&w48>j@u<|ftcqcI8&CWBfr)K5@6Y8IWmOF9FK>H4yDebeZ~Hoh z0^yv;ACph8+rm9}<+cko{}9-!ue)nNbBUerU*q4Y+3W9ctszc~`cR=SB(%%6Nk)Zw zrTnYOi(bEm8kfwuGNv)xOnw>0YP3wpe6`)a8>S9rJa$zJN^ zd$GlRZ&jvOr=RV5o(m2wimj@`#~Z!Y*!ibls~4hY}Hr?%=9vyB1nn4;a`}aNd`W~Lx5fMAVC}+** z*0Y1>W_E0L`W&e-h`T3iu%6 zI{LsZX>pE7xN}bOJ{fz)p?(bhf0Rm$7vMoq6Cl`l6HA)L6pRN|`)v!9Q#sg~-ouiJE-7*x=Sz zre4B6RiPGWTI~@W5UkSbHCh^E(jXn^k$=x`q}#)P{Cm~Q--uDtkdVX}k9jckPDHs& z^qx^L?bDVg z!`cyZh8gl#N_YKTI2WGn%E&MDjOr*hF*|nK_GZ3ICYM5rX%RI!)R}yNme-o6kj(Zl zF=MTLm#}s&r?5G&(rPJ2#C)+DRCu4ieLf<(p74#;jcY+`N1DHg-e4lzy}FhSZCzOlLeaQ^%vC=Vn~o)w1c= zI2spF9Fq(HgV<9z72%EKwj>HBY?4wjS4o2JF?irO>`y3$AO*BD4E(?^;0m!A@aYqo zjxhtUav$@9I}KXEVF-Ynj(^Kd#E^?_4Q>B*i7@eIByhJw8z~4cj7M}U0yM#C(ZQF( zF<5+|1AfQfF`|52Wb3Hip$YW}2DR*JeY^Exx7{TP1?{dkt8CXT8;$Mi^1M>1 zaO2S3F1E%C11*y^7bhR?zg^%t^Ug|j)}c?|cD?*r?c>j)%SA4^yY+`t11lL+O}}Y| zn*Ogv!Jslb9?A*y3k^p`d)1o>UXLae}#Le4NjKzJXcN_`_FOTJc5+j-;4+t3Gj)8u~CLe(L zxzku9h#N)V#*iaW;Hw%Koa6lZH=LEiX#mlp(g;t1uva-OEDrIzM9IPV3ey6I(5h3= z)T`1-$0vC*!(9y05{eem{?epM6J%w`+s zEeaa9w|ji+9@h@^P41b`y&)u6+~k$h$WU-8bW2XEmQ4$$jj+zMJOjlfQykM`{kp^$ z)7819ZBOc_4|tDlTfTTmM_xBKZ_w>Yo9=gme+svd(;U;0n6SeMpYIUQQbXQ$Q_ zviL-nH`{2mx<#X{Cc*9F2Kmu!Y8m_Z#slF&{(NJXR-429gEJAqyiQBSVaa9DuA=;`A`$f`mK8Lx{&d zQs9)3(ffZxo3J7=US6Ba($3Fjjjg6ZDN9JxR$E`+z}eZzx{aSGyV(8Lz0xE3Ci+X_5v=tSDFFlQIAOPER@ov;Y4+jCFXUBnGZ2; z;(7O0rQOaM{*9DuygR<6rKLsPbd=V6fD|?r$^o;Mhl$h z$I&U9;1LdB0US$;1Oe`JD1#{jhq)x!p*7}~TokBb!ta$3#B1VfL56|982A_&bDaD~ zTY_4Q7XD2l9@WwwkDANpx|tfBM{&l=@QQPxC~P0_7s zYu!&hmzs5NgnLYsS1Pd{&;P8sJIUA?F!9w>xpRYu<#2WryXnVO>07}q+E1&MFWfBq zRa4j;kVZ@UWs~KQDA-*@Jkb>>;UMGSc)dUMeRI84MA^oZiIxvjMxP!l>7C5&a5x$p zo$9H+zdWXxcQC;nUtLB|-zkO{uX*4A8^Jufe@s*nXv$Chh zZFH96g8B{0+{MPPdRCk*qCRyFJ0g%wvsNthUVUMa)g9jaZrzh+jo01O(zF`4$lm#^ zsR_2~&p!2$vMW^^*9|{1^-USeYfN8maPDzw+-0RU@%Tga)VjO|A+-rz|CT&Wll`Mp z;kS?C_5N%baHIe39XB21A|x+I2D(6mc(`DZUN zTJUXQIwTX!OAPISG%P`E(ZLjj#(0i<3rDenUMEk1X~PXL#Ka!-Fc;JV_ya|f=~&BJ zGD6&|>1U5cFl)Fr9t_9`G_i>|QQ6YIeo@=I*KTWneQAi!pul%)<)!MsYFNEb?#{V| zZ*9+cf3lL1Rq3e8epWoYI-tkIvCKPxMZ2**eXs151I?cAw%yD>)c5N_VAWm8pPAZi ze6#Jb{wgo~cj-2d4)7NVRMhWqK0B+r)DFHyjZTGG_G$yxuloV7Q-32>p`A|}rtEJV zZk(4_%u{}_q*KLGVod&;yq|8obI3R3vr?#x^N+fig}mx7m-p-xcRw))$4;}y9SaJ_ zZS&f?y<}spavVy-%e*Vct+!nKjn@6GaWntsyypx%w0bfyym?pe%vlAqI;S9;_0dId zyq}bGOKf^qHjrbsBTIfq@_@R~>aMefRlY^DyYGH|AEUePH!A6kbFX-2-B9jikf!)+ zVtQj}RbKn)k27|R9}AtOE*&R7y1;(Ic4CPm{0Vd{i_l+WBatLHS*HW>(V=XDi%&7omg(K5n*~SCCL0k9?7%p(yj!yI4mtj5zHxnIN(IN5+o@4NQS_=aJ z^#W2*@XVuvda+Dsf(W*qQ2_ciu?FYgzZ z+%~<*D4xr`(d*4xjFDOTB-!sjTHzcF444`x|FS%Gs(sMxSHfIgFRNg3>2+U!RrBsD zPyTB*XL_4tc9?d)JhZ*pZqna3Wa>+1c9m&qVZcnFJ9{{@_1Qw;zUwj5Kh<>w@5Q)Z zZCVOwsgS5y3|kD3asTG~zKyYci`Hbbe_8iS$v&HnK09qn7jC4DkQV-WJ9U>`*B;99 zd0#Qn?bvUsvDA3gqvGuMZ=J?J%rxZ3W#BUf$NMClkx{0 zUV%LdzC|E=X32^uM29khZ-qb=0n}guCKVDO%8v=SWR7tJ1l*m%aVrVEVbT%BQjmKE z;i3x8uVecXF)LBE_v_&3U!%wU$7|#Z0hD}4y|aW!EdC0Lb00dZk2Y!|EA(brTjy$b38gXD6V4d>QSy}{>AsCZs$w;Puo0i zSfsZ(i{~W^qXmP7jsezP=`IU7+Xk=8+8xqc@i> z6$OMp{nY<4eK5hVA#S~?Qe$|3?)ktYp0B#ui(?~G?QO;(%3habc3Mn@zO@m`EdN+4 zGg*ChYj3{6!{(H-ME9!Pp3iwDnI$K41Gj~3yQU;RZDtX5(0aGkqSwazRjU0u8X=~Y zIY-3uGCwwZ%v$*c+mfgS^{j1A4@|#X3R^nS8?Y23)AGYJBiQ4HjB=@)>TdVL>_Nj} zyQVasQ;mrm4yX-Rj|Ug9*ElvhwU*iVxv$Z0;JHvTp5DB@WM9+!w$9xKzwS8C?xr=e zbneczg-*<|PGrb>Urf4^^y{rj==Yg`Vvm_C)&4VsLfVSyb15BZC*67J_l3wn^+$Ol z=|IruK%GfH2W%P>!~`4}VTp`=5NW~-;6nr`5}1O(KHxBd3`hbtB>~q0-@g1seu8}? z%?Ser84o%qAVlPwRba4SI)WN>{Br__r_fJQk~oZGE9XcAVQSZP0$P>!F+V>kNlIxF<_wc9TK zvu|r$7ZN=^>&lBH!dbbkv11P=u0nXe!EOt!p9h@w2Q&?i?tXJUj!`l=TU zw;zviNn}N9QtEw0_G!zo={0 zEjoQF#B0YTN5}p^mc*xB1I@aod7t@b9r_(AXw|)QChDiz+s5lEj|J{ime_dkd&BI? z(LA=Mf)(ZkA|yV4W{jL+S=s>zs$C`{&cbZye&Mj-R@}BmQj{sLt)#Z z=dkgIiKWX{$+DUI<%b)~Z0aj_W@^6IbiG;7KIZ?B+H?&Fixc94*2I(GyZrd=z)Nvb zKweUa%mcD_E0IE{0Ixm@QkINS5GJQFQ|90);IMG?Ei9A@wxRkO2&Xf5!Wv+9A*PPQ zSpvk@aM4}=*gu?FgxiV3>=cd;2H)9$Xvf5OG=X35qDRk}_ca>s6AdvEMFA!$t%{{R z!|G}#`S~XXyiZQu2>E-g=5{4*L1kRAl^rN*W;V3Hx!y9}?7eNn_(dIB)a3W4%JqR0 zW1jH~nh&cBL%J&`Cu_VaYf3$`2N(f1HV^LjW+aWKC1<~O*4cG-^>nND=FzwS z*65mCGCS1ONOiO@Oiph4*xnlHZaK{Vt|+a{>_oCl`uD+C=}GJnDUYdvNmbfc8_myc z;ZLS*)_YbjM3w3;oJ_p9>fn>2xqBUU*^G^Pi#DQdCO25VqMs+z#w;_~+eQj^7dg3Y zQ1~`e>6I4pXkMgM)ppaxrgv>|yB_9DSc$Un(ix7I#r7E$3Y~YV6tNdODSd19?A_9n zx5wALZmW!Y&bBga+$fUrqKgHLUghq?zV|+|$KJpB={>Nt@yvKQ%fGMk!i{ygcW0>W zO<#W5-0t;rU#YWC`n#^o7nWi1f$WPcc_(Y><~ZpeQ)Mzb*)2~#DS`K&;aU1+NL4lG zfV4)d?5(0>USh?%x4yLHSKpZsb?gg#dUp24)oY!eRyVJ{E7&+Vbat_C$yV`1Po{74 z%x|Q`csiu*(aGNk_bUH(`}i*ZFI7MFCv-kFD+cX8vd64Tig7T)dRb#r*lFGv1E&so1w>4{XGHs^k~vdMKGokPwZfe~X@B!faX|D^U` zbtuRQdRefv-d;T?nR-HqXXmN~U?1m## zup5>LkqAlZtssT@j@9JkH+-v7F0Q6ACax?$r=?poUha+i(Jabx*f2G%9FzNbvTygL z&n@hiXC`$|+C?tp9JnrC>NC3(Tyy%DdY^56+8X^fB@>G~bs-uCx0QH)?kw;N({$VV zxa9{+_ez)!d>FIe~VG8;*WyaL@egkYiT0-jT)gbW1&ZUVe%3|FHEY;83=0 z-1zXQryg2Rq>yB(Y$1E7?Acl|7_!aShAd<3gYP}^E#K``Mbi4MQUtJG#-A5>U(IHE;aVDqqNCM^XwRM zwS?BDoIogTmU%8wT{ZU;FKXA)gXU%Pa_Vs%iqehAa~qcJAQ&=DMz(x*Q%*ClbomrN zHQv`c?zpVr;M}8FG-=VHQ#XX^6DFHmrF2M~tkbrQa99X?C@|M*6x!;!>I97zUH3q% zB&?mXE6cb~Q|bWTza5?cMN(ZVBM3wNFq3-ADZ*uSYPLatd1GD0Xkej>EV{!PjncqN z%NpyvP#HfV-xWpzS;_Y#W8cLTF}8CC)V%l*4tRDhvjampkLJp`RcAtrB=$McUc_|y(e1AZ}kSIKB-{GIXsnEUV^#b z)iJP(ebx8xXZ#3Pqs>8kz&GMP$G-8a8~a=uiB;fW-^!Vs17N;B8ZiyrN)`<>2 zyy%avUHx2P#Aw!=*4}#JW2Sia2$MJ0G8vBF{e1e-pLc;VIQZBRZB9Ors$@EC#Pp=_ zD4X{&rV!hAA?kcUgFgb_pFRr#ZKgNtgFPUiI?a&E{0>su$OWzfAZIZBb)dftnZaO= z`SUV>J@^KlEbD&)vTtn1*bzo*CweNSi@R)T;11Fe^=>F3*j0i zJo+)7SIh^OKbhDN&)xUc@LcyJM885P(J9?)zd?vO4>K$iQ<3bHTv>x0b&9=_-aV+N z-k+*#i6_Zp@W?o?UFx!7gXaucGSRKvdDkp2e$Wi2Xp&a1NxEUc-5bqTgK|f!&)1nR zqpC#nWu8(ZHGZ~8-ld|M8cPS21$$bN11>#36LzcmBl?w<2mR@g6K zjYXx^)NJi&D(PruLT$F+%huV{q%4<>-8V11bj@0_i$>&EGMgS*--WKg-~BN1YoBN4H{@L{{`+v&@CImI3LG@6Y>-~E zso#~;qNUr{Sd}0Z=1*ya)j&P_s1*}U7=;|-FrL&-MY>oBMmw(g=?^Cry)=0LLd+QM zEvPAd^TpeqQRH=(50jtLzqE#duG6;YnL-${ODDpn0*V@OQV5%HEwFe|-_4s>?-VWM z2Vcdhy4HX0DDgY9>%33aPiPq3Gn89$YTSK0aVdgwpHJ*|LQaX%{U&BS7nI81C7Si1 z&iK7>?2YQHULPvF^buKNCgmu<42^x$b>qBh*=6iOHr3i%7*Um!L>N67F?>0!@YM6h zs;LtuB080KR*`--MDN8P z6zXO5bd@&tPnU`8)}KSenkYmc{ICp3T(=}?HMxp}mMQFLPru&D9bl$}=8^MkpKlH6!n)K%8SoUve$;VYdhhKT zpj5qmLA0+qUal{Q@_bOLi8UOxnesjrJ1YI4!Vx-&x1H|{SnYtDp%$j~_VqLJ19XOV zPaX_UH3(2W9pcZ-!*zr3sG2UBHZh5?QDx?J=F-g}n6&>-n&jDfC(n6S?!}C$(2CjX zost~UFK~^q1s1!XS;LJX+8s*^&hpYrD8G_o+o}&?vfI z(&hEl%+o->9zkxi(K~StTl5ZN18@w^{qk5>d3+Rq%CV-U3iH3v`pky~IV$S-hKa5^x{RTwc-yqGM6HITqM@48lt*-#fz z2b{(kLLc^GD#NRbk<+*Zxe~2A?P&`6+`l0=9H#Q5ruz}EmUqhc=aI6V9c40O4#b?w z42hPOekQ}tL9=Aa=E4?+sPh27DWfqy%t9d5ub#_-Cv-oqkY-7BG43~3^>5-_#Qn&N zv?iA%_f8fy%G9|ynUoy^L#4;nUlhILD%N8ra33|=D21Wf^E$_?S6pA2}>8U zeA#g5!NY8saY-!uGlGLp4)JW^;}QwA)JkdV$T9ziP$!q(iTR(^&ZImeOfgO$!8X-u zhk7n;QRTU5qL>Be5)nITklJiIKL#*rH{>^?bfb5TLzzE?xp|#$azGBY38)#ZhP%0- zF=V{60nx**=)4hyt#3G*-?2spS@cSXt(cnx>l=4UCpV7@jJHKQAvf9^8@E4QHyXfF z15T~Wxz-QZe5xDrPdgapRHv#e65EZiW*csygs+C#j*|8PLEY5d%?sR0Nzo}~ZV_X} z=QpENk_L$NN}PI~wamRmzJxf^h3GA#hbIs|i(AC~dbcvNs}WC!(z0#DG;&$TiiC*4 zH+QLKFN4IfL%dzxuydJ)6jIvu6FOZfZ}dk`xwWO?IH=>X%@?%0A2n*yG5tVv%i_Qa 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

    Yu8Pw#j5xztkXMd&D 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 literal 0 HcmV?d00001 diff --git a/public/assets/images/profile/user-1.jpg b/public/assets/images/profile/user-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e19df674719b9d28c247d4957e66ffd4dc8178fe GIT binary patch literal 30954 zcmeFYWmud|(l9zW!3pjJNU-4UK?1?u21#&+VPJ5F1b0GkcW02`9^4@?z~CAnc<=6)MWb<>10;X6a~d#cAOP;qo+ta`A9-a{x6)J0G3wq=2Y^Ck3reom^wh*yokdmYq_Z0Pn zKp|GHX7rvAdj}U$PYH&xQQu3!lU=|5VfH&E4}mvwZuq8H#4i%lE?y30C)C&BQD;j{!M1)U-m-|r_ghb>R{!VN8FC_mvt;oNn<$7d>>yM%Rr=k86^{798 zB>$nfk1zjFeJh7YeRqCT?BB-#yuYa{!1BxE2ZZ!{2@niGM@2sT1Mi3U+704v8FR){z9}tdev;pd034J@GC~wWfE3`k!W#MihyM@u04C>2 zW#!hn!!cu1-08?wjkmE(a6{B@K)G)YsBg}=^XTZdMqd4A&X+Y{oU6)Q!$B9Uu@_sF zXJUEJ3gwOi+)*xZ;6q;aP=7GtbOzxla2WZlpQBFY7b&rKCHMAWV<#|xbFD_^2vHG9yJXK2Se6LG6^8-HkX@dpPDF4Ds3 zGg;NPK7KqYbXqyi5=nLQcCFTVbTmmb9=J=}%}>STEjpAMIcIWT{jWi~%7sqKc{Qk? zWPC8oUFxBb*ylGOJPW>&Z|M;T$Q=X*`mAW0i0v1+x44TD+zWL5 zesYXc?&QSbkp6ZA;hO~x2W%^|iYL!wF|JJo%VeQnA4(4N@GL1a0(41r6ELoo_#Vtw zVS;-5d!lr_d!l2;?k>Jx*ls<3S~{K`(O95)8LmJ_%3i(yUqKK>wabf`Jm5o#Rk^8FvihXw{cc=XZD&%}5{DZCm%NKw(IwVL zDSza>lT=ufluY~yCVBH$h=`Ad#zB;zuM4-fXlrNRmx6m`B~V^g=S+7>f$lW^<1Wa*Ynq#>a4cVJ>*2{a-9dXg8nBC9DrJC1ESZZfPxb|OCrdlNzZqV%Z z43ASHvL@-=RtsjTtH!Qo+bc@x|2HuG>w5on9H+efk+4HUSoAZPA%Tb}&^x`NasI7| z^G0hitjz9uvZE^vA;fFFYY75T$61WuTH6v+ zB>K>8v=qhWAgSOO|DCN!4o=P&O&H6Pfr6JQ)Py*4$2Iu8c0!Jw8GJY-U@_sz z@M}Pz4@7G_8<$S=v5#7Dg>BD0ao>p zZR=rgS`z<8t13ZXMuE{=8Tuv3WP!k*D05NyWaMdFM7(XJujMik$M|gQ3 zqEDi1ikS7XT!_&DpE2K{hxsTNnDBg}B$#XaF#CY9@xY|iD3n(3%=jBH*0_Yy{UYev zK(6Kbz;(PRYqCiyhLZIJU4Sv~?*l_BmH>rO4Ni$W+no5~{Q`25_hvB7%i z#YbGV7rt}U*o#u7YgbJqRc%(uiyL+9EdRCQ_nj+nFPvRPxRjfi&l|nT9~yr4lUz)_ z><^>h+f;P`UokbdyD2PIjtWa@^NARSQBm^JC{q~?%~m%&;k5n@XhoL^crm~$|28^O zyM{i}S^3qB1FELbMtx`!ic?8Q=M2GbK*homG6x4a=0jn&khRl5%q4xSsoBi8-U$~V zcY!Y>+c$1$yCa#SHR9O3F$5Rzx%z1Fetu58aKi`VFD-&0_plJ(csf{0?{) z+n)3Cz8t-cWqbUZ)TjCmMs z^c&DJG8LcCRxMs3{I{P7cg$a|3vGSEM{+=sm@PK?DBSO|vJiu`FjFWzVB}1b3kdqU zVbVJlYAZq9)A`|GU-}3taB`usJMXQFQPih%G`RM#|HOzf-F>6p25yIa%VGU6wefXq zhxC}AC3M_sqIMaHw8CNZBa{~&s(ylV3uk186oSZRa^%_tuVo2|;;<_g;*TXpUeB~f z_dZOfLQZK(O=~>EP90DB(XoxUn~XlV*={i5^?&9g&0gt8XQ0?NqhEKXKfyxxQQD!( z(4xdAR{NRn&LJlD(dKYB^xfXY;gf;Q{y_{#h4)PKL`0=(@jii_yPCMBR3H2UNEQY`zAAt z4`F1TIUxnKcZo*92-&J!tXI-;X^wU$>&*e|&T2k~k?cL*>oqW~BsCtup_>S@u1z4-F-&?RT zI4~3kXH^|_%V?rB`dY=Fj*0PFKW3BfL`Z zS_Gw0|3vn0z+}BYKTSBd_dpu9qPD-v z3{{xYGRPKw`ND*9ed#mH)whLLYb{G3-Kz_4z6nvvUNkA59~tlV48BuQ6OdZ*5&(h> zPb4``O;Z1(9~Go}lW|Eo`02ul)wX%oVSii_F3IdKgcOJE=f$>C)7ZLwjt+y_d0&;@ zjsq3;y%UQ&UonqF+oPwNHNX4ZP#<;c$EO|tetG#J`&lA^W-jhLeS6fa20vN3PlORJ z*(ZkOm?sz4i!!^tuEzwp=9{jE{A;gH52VLWIITVzVvo~aKfN&vJu%UFZXfs-zDyKF zEtG;RQOar7_@Q~|n8CT1iRiSCS0un3%UF6b@RQml3(7L@bJWWAW^1IKjMz79_j2lY z-^m|pgw;g0<%lyNyjs5MA%lL@68&iSQ&tQ$5(xoM@*WP#j-;&wDu1+v$|sAq2x~6| z1{dJDcx$4Lr7h@nH97Q+K+{El>#S)Dh}SH}15U&jEEImshOKoUN!#CxUWc&Q$1nH0 z{RX($qS!Db7~Lb9AQ&xgX1vn-mXwxmMWeh_Y1h8oefQDPdU<$>s1F@al4lWQ7n^(Y z^?OeELc^P7eh%lYG4NK>*S88X!v=4h7*7HSE`w>>_I9Nd#xxYIys1bVK)vTtvx=e?Ypg7c69z*_Z zk^*&XPle5ZJ|8{3?e_qIuk(NJ`@sP$jCTpSxvc79|&t*jykGk)i_-5jP9$s4CN=#dscDKSa`82UIeg% z_!PQ1qMvf_AO;3;7YJY+`VcEad}Q057^MV9tcoth+5&& zsbw-XoU{YWyoj0Fy6Y7u-d5pIt`itVQCFK~C?2}X*;}>AP;?S6UViQowOP(a0=`HSYzU;`ntn z@EUYBWyMi!7U^k??7T5Xps3YoSe4vMTvp~wuP4k|43WOvjth-+;UW57MT& zo7wn{8GB-~yvJwsZvjO|WFWE8f=7`K9P9NY1oqomn2$z_73lpBEvnK;WQaj5~gl{SEA z`1X?DFBv(pFBukztGlmG^p6fVg5m31SNn&Hz7Tsz6+a4^K~~y}WH_276J9TqOzvy% zujSonGTax<9{I0D^zm&&iB-XlVmK~x3*?8`#z?5{B;0izjygAHLyI3@_%W=+F>Xa< zD|dC!AuYm=D^I8|Y!@eg15E1EjNcZ$9S6015@^DuNgX)68L9tf<;f^NCmD8L6qR)& z-&^`R28WBV-6q3oW3VO()UNG7Q=m30;$t!$@f)B~lRce^F-)}xkAXT-Gq=rEC%f}J zSSWr^sU5ZVZov{6wQkPk!W1H2Nd_ zrT1)-HODaxQSXOd+x;*Q(!egy6;`uI72ZG4AbfbIV* zvl0d30=BB8?XMZbwJov)a5v5Z=9nNkj?4c#Q^)O+`I2*2U3{Bdv+* ztwe1pnaqMGs7WOAB`iIST`=BgHvFCjX${Y7R+1+|RvpqI(mUmvArPn>+h!GsoY{AN zEpZ>lfIcM2U{ViJU&q*xydx-mLr-TRr9;aFBGFAyYyxg(8HUeG`itwt)mK1UsN9qT zoO$pYAXiy{?-w&xOZ~<3DSyD82TW!AQvc4-TQ8#APXb{d6(!!Xh^H#fc_A95I80%> zX5Ar?wO!Zg%M~7^)KZ9bRk0nDEDru4Ku*|X7kp{udaxMBrZNDyEYlmXo)_GFQn_mT z92}&$ps7H664jza*%8xsrEm5nS&^ugs@df--{|#Z0)6D(doR8mBKcQyoinl)HT8k} zGq3sWvw0#czCh_WxmiT@e*=s!a5=}o9yJ3S?$o0;!YzFQnd(kpqvYqg72hZ07n7s= z9>br10o1z(esxv+G)y@8GihRBI;7{y4?V>P-?zM@rSfjfJOUD1V@4s1Co3?&80Ybd zR3q{9*2K-{s~h_oi90}K@O%&j^jcC$udS`;dFz=~Jjfzk_-odJ2PfppTb$Btj^75_ zP(h|^pM3Te$2)ObnXEDgX|Cu=@VpP4rKeVqky7?z|&B4}(EuE#W=#$762_VfvN z)hx>!MC49*dC=9f5MxlH#Afeu_-k=h9}h8aodM3{*+OA)wyGJoaa3r>Aw+tAKCiIf zma;LD$>qHb0dg>P8>U_cdlPks@wL&{EW2xE6lI{~i^DI6`Aa4bB>ls^Ok?I_&NaL; z*wR1MdR17e*=ZWONNrR*t5aA>TrfF7LowxtsVna2y_L%XUD(UCPeykDC*IFfzkU+} znyl3REQlT(f51`ysT_~HmWbKX)adVTfo*c9B4tJ3HkqGX)tHc4zz}mU$AmX0oMYD+ z{fkDzcI>a0LegdT>J9eGd0wm}ZWT;PS;b_7hw=JW7yIj78Y|m=^xHd4_=2Ys9$+I5 ziHa9h>UR5lWlzf$rV2mhMuDw=rQkZ8zb4(}Djaw1Gz|L?T~biPX;LvWEi^9jfIekC zo7t3t6lWfUJ-^L1!W^p|%JSTP9$~AJs`R{yO*6z?wgHF9zIiA7%>uVpaLlK0U5NW5 z8sbmFrmIJ-*gGAeL#s*d)AuAl2y+K)x=8y~lPA2Tsec>_b6&0p*|uBkjGjh_6aPo%LfIqSw%faW#&?hu1br3<2&eWR(2I9;&6K z7&Idpb9a&FPlHNvhe)&BVKlq zdtX;Yn{gjxy3(9G?z~K`<)n>!FWNdMp0u!ZaO&Fef{h=`{^})rr;4DmcF!_Y*O2C# zXYa=4NxC`>8zV(_mfg*sqdawHohi)jH(=kQ7E*zNF1<#0G>^PyN^$CRva&SIedZ@S zyBZ*Jx&N%|=9PXr`1`=Qqd$}JeFe_$r>;J~eZRV?w`ENgJjM5KX2>^ol}y>M7x5pm zpXQ(1O?yxcN`DpkM5Fvg*@(xH3dKZY$B`UM+jhQYEe@}f)6wM}IJA4Q&LJr{Hz^EI z1dK0aVyn5K#>3J;h_q$fw|EQZLy6YZf9c&BOHxNI+uBN$-|QtnGOU*(HRET!w=84k zF!uA^yTOKOr<>BIOs7$=#?nDiJ39ZJjeCEP<3l>@Rlk4nYFYkn+kjSzJ`N-7Q@~w} zb5tSoi`B}8xS53ldbK&@8pvIln0w7l5*L+;*Wv!6YnA!5+eaEOGwQnUD2Qc&3ZayK z)r6M3Xt2Mvo$;c*hDct`Ix-c+l|jA2KJqy^=I3zPv2L$oUBtaC+=Qsu4X{aV5VP>U zakI*QS7oeaMrW(vRX>O9#;3ilvFk^}G2IATyqI98cKnaMuc27O&z`|3KE1KMV%5BS z2r0o8lK)&Ywj?vO?9l?FR%nM6nmO3rEB(d9^q56@opRM^zm>I-`;CvenGMp8s8ExX zXzElo(!KeBN#IN992qJN_83+%(?sxH$p?-57BZhnC6M0kL6d%Ni%G5Y&!c3!O@=ysG@4?I-NN3;!jXSIWqh6Y0w35EhP)YmZ=$;d=2 z$g#4P&T3ZV9LW4GI=AfWbzUX8)!ct|Fq^+($2+zwX^0&m;KV%FO6xs^aEit*)$qFc zUIyIwnj7DwNz)mvljnpx3O;qGUv0tAVotT+#0VFp5H71BAocB_p=mmHn?J5l@zH-_ znoK6Mu7RA!om7X6L_VeT_>3ixr3>*wBgUp-YGfxTQXR8h z1*$NG%fQ70Ns$Qj~L7Vsop+FaKsXlmcPhWGLNz9X4s$JM` zpJ7R~YibsdHHmoD)znkDn*p2V1#qp_xHL|>1XuCpO^$_iAQyJ`XWe;lRWr7 zG{?_S0j|?;NgUZt#EcBXMV<~PZh@S7H<{lZVddyGW))W?pIN6VVP+V=XIw4VpY0l$ zCC*GLrVPTx9IKB%QLj)xZMcwIm9ORBa9PAZp=(f|EnkJ}EsRpq#6~M`RA-+m3~gz> z8c15MTk|oY_7y#tYV0qyNH0*~de>D(%S8fujTRm3!NgmF#XTbH9(#w zBZ1|r`Kz8{g+h$s#VC3!@c3=4mUsXT?G^Fiu+d zYrf=)CiJHD9y>av2C(^CGw7B|`fmW?MWheOE+5CEE+~%P)lMAFFgEySb6PkRWG@(u z;1*YLNEQ`tN4p<2#ue3nFCr!Q?9$I-As0(Qrroc0ncyCADJ6Y=@yq(%aABJ}wnQ3X@$Ubwd%U zL=mD%VXOr@WN-QI*uu}vxb1AGLydNN+;>U0dL~2WDyVPjJu^3HfM(Or@wV5y*ha17 zMfk)c%`mrbF3#=`u=2$nku5y4^5d;<*9!5Iy@y>)qk4ZaMdHz2Dx|)3sZbkQRT2C) z@I?x0?#Dj1v$Rt8-A7W&hWc`U>w0>UeR-Eix<^`Y3Bt*>l%-C@~aoumVpG>Cv zP*g#f!CRalYYP$;{s|MGPj2TPR46MExgK`kH@@|It?XhXc%U~Qvco;`b#nim!!NB8 zixV>;!vEAKFv>Tfa@-d_CayKi_`tBKNY`&#(;hbCn_f9roCGah_+AcwX%7^gUzhjt zK~9n=r2{ZN)8eMlk@M9CB|8m!cQeXvZQ4TVwPHoIoxA9cttM~T(MI(uGt#%-0~q;2 zLo0{2gNb;n#1wFUI@ZHH`!+A(U%Yq;8!shYR0np_diaIxdy@ zT;dK{DK=Ee-V%)T>a^9t>G@WK1-hIH$V8Uj1Hn}Wj-vwmbLyfik}@2X3Mt0a*HeAC z>nQ3oJqqB7U%5H3@zB^(Mg8oNgJGqSe&(BZZ>n${w>q+D5n963)^=A*{oA!0z$A6d_0V4RLsWI>@9PB*3;q7~{UjY>k zUtPcFPc@s{#=bBfCjz1a1mZtR_0{cWJH(DU!u2cb2XbF#3GCIGEkww<8mt)bBt6Sb z_?#g+qkGwq^DT#0WJp*mG^_B2NUiKxd<)id%#!XAasUcY@g00QFbizs`FC3}XuRB# zLfqfhrB5_%K3Vnq9+XRW?+hqJ@&bM2v4?y2E@A%r1jjGAh1ppxD3}z8RFDSUbjm{x zH_2`48VJn~)Wdly{Rbz$;A>0&26(-VeJCAlMqKEj>>Z$Hp5xm3dkUuqm{h1asOzV%~24B9HDFVan^xyyLw=hX(`w$$-V(2;K4p|H@w+xr>+4?xnz#ijb+I+j> z;Ono0$0N70{32Fj+ucb;A!!+sRr`HV)_YwVhBsS)KALxcmSpk$`!{MXv!TF3$GbeA zn|qPRCC$~eC?{hU8g@XBJ{@OswR+>XM!uu)Ad?C*t*Z&1KGqHuy}4e?-oR;|#VV^f zYF@3%3Y%Wj&IW9yX~{Bhf~{{YQ}W5n)>aqDrstQY*mgA#pbI}TP zI>b$UXV$7>nCLa#YetTdoAZUS8i|r_5kg}jGtd{>xlBEuv4Kn@3!8VAx)3r!+E^{j zaqq9juXqj?iTmBH=xIqjN6k&jiReV{oosEyLA+3Sq(0V3!8`5VxstZ~bbqp&rcUif z`}P)ZWA^Q}mURcT7|=D_xw=4`a`=#cIxo8lsjwUHa_(rER|{4_HENBdF{M!f+#ho8 zNW4y*4;q*l?uX#vSH_^h>!ZUKYqa_=D`zpnY2t@ zyTwa8p_sx2^V+HvttIYtZ}YsD!O$CzyhQyPGP!k(J|e8`^BkUDf!Gc|M{W*i(lN>M zrZJgA3eUH*F^JyOGGR`UVa79XDduUlccK{GbkviK(UbN>?aKsFd1Tgg06(3w()M;s zwL&9;vPm0r`Lk>Pc2Wl@FpaRmrgGy8Zux2KtlLWfj@V2E8w%N>-1ew{`<}iKb@}jy zBSBr#=OOfgJEm(VU9~0>HB}cF6wJPgrR&;kZ?#n633>~BR^yD4<1;o_Bh+W<#yYE_ z4%KWpGg8c;Q{bi4bdh+X`^yMji9554;h0o zSBx~V2?w~HeuuZ_Tpny~nc(l8`>vX_Kz};W@W&kIUNxvQ1FP|qYkdbOar@2pb*?mv z^AqJ>2cMp{Vd>LX01v2WBP@Ei6_m&*ld5T3K8v*c;^Ba-0{|2_DTO~^qq8jk{v-=X zO1oZLGKaPTv$D~jqO6gb?n=?PV37S^#=|9-E;14WRJpP+I*t`W<0?<8;vpPhxcI@5?{eO{)I{ zWf|b#8R{O$m{=`RZ5)O0Uo}mUX;mmxh1tr8g8>3^)r`b;sYRL$!Gn@FVMCMwym(?M zt&->+rxIzO9SFYu2K;D3GvsMBf>NdpjAE*ny<=OhO>@x!<>YPu7v@wdP zTFtEgd(9$H5GS0(`8e|RXCcU9(U}99hxKyA>hq3pc2|LN?*8;1Tz767`PNWPEjm+d zslh8V-N%7WwtG}WAldC_L&hz0FEc4b>hW+~Oe;*aG(H$-z@k>EgOrRwnd*J@`*e3* z>Cml<0Rk@SmD#GX5x8lk2=kts*iff5m2G3~APm%6sAgXXcX(#jRu|b0Ki2^p4)GL` zq|JWw5h@EWlSLZSRU^^e=3_&n2Lk%&LymGsNpxV=j7W%Ad7h(t#kUS`>MHHd5MUyv1h(q=H3H(PM_#-jPTf5FfpQ_VUvTbTYB+zdsnoS5 zD}0A3e2gsmY3lhoMQE}tuQ*&0LWJYP!x8BVxgj6><}(srv$r2f9DGF>tB9LiwHePu zj{JMGj)}?byE008*Ii8hgmC4x{^F#1$js2gL1Sf$=l$u_k_TCo{T;QrnLyS|t3weP z>W@#48({+@^+y=o`WaR!Bqs;faK8Mwi=WxYES4BwF=g3(I-Z?zN0`nD`Du(<`=@(3 zgUJYMX81gu;c8X>;23bFsf=%39nRckHw@(cO^&F>!NB2Yvl0^Y-Bu5>P~qjStD;xE zm4I_Qo7l7c2@7}MIhuWwN+;JPginKGJAtJ%c06#x+Z1ZYu4?z^3%(^3+f1tEyE_Df?gTRa-f0zOB62Hr#)?3m;^(i}wcZ z^=YyCH=t?80z`TpP5Z2+`cBp0?8o@-`0UcPk<;6R7#IAPE*_lC8A}SP-~>mG{hv1# zDn@rR##E<}YW>>&<-IQXYNx89otE|&1!kj*rHgZW7s8#pMl)9KFJt1j=Jw;>89DuG zzRlPU1GU-mT*3}Q`Liu-NhA(%SK4)}q*?I>x%Jd4d9Ti+hf9F3?cXXmg=uPqjCoMu z7b$V4ObQSSQ0Z(N<2NG}7d;^#J-7-L=HKejo4t%?N-x2Iom!T|al_}9sJ84!yc@;ALC&BP7a9n=%KjW-`X^4`DU z#xy%g<&nk8c&>)QBu_?=UiR8V?73b3qW(Kw{TQizysCR4)rPdt5Cn&#?Yfttv$28# zdP^lq^$fW(1|cKPmHTz&E@Sc4;aos{hFXDi`i)wRak^ zFnRU0obvQtf2=slj=H_NG+G5NEp?Lh5}A{5{NU%e2>&B^O$?b&D#4ml^!W z){dhdTB9ENL@M@)UQ~899%|7c?K|~rpPu>9Oz@XuHy?A8U*$J2@7tEVARL9-suvb9 zfp4<*FhWXbi}Y$M>{3o*dP9pAZZt&<7Qrd19wFQH0>{d@9#%(Q)fyI1FUI>nE%kB&}ehm^dD))Nq$}rE_;GCo>P4UGiLseJj2F_$G$>%d(Ls{Z8nY z=&wC_5}M@R3ogYhW-lH4XdZVxFU!{U^&;(C;^#G0^*Ejcb^T4$~R9H$aJ;!_5io=>ZAI_hVrik;kX#Evij18d@kY}N!!o7C_LiEx1fgm4(0^y_)CdF7n`TVCy;&lVpG}fUcE3Jla zTRJj&!^vzK@t>jzvBPu1U`j77A#bH4>ut1#Ii64@=5sLl_XF!K>)o|hrXfBtV(8e_ zf&M8uD@TvZk}jhbxxbD}|4%OQn{Fn@m<4gt?9cw1V{TtQwCSF36C*TnH9Ugxvzzn&^$SG`b}`vkc$ZJC zA&f3AKh@sADhqH~b=f#6o}(dYCz`Q8FJ+!d<4#l#Wz!6VB7-k-%DN7t`a&0(Z1`xkoILbeRZN-6sNJonuG}bR@xn8Uu!Ib{v0j2-3oIz?k z%_b1PT_Ma}N0I=qdOYm7bn^!;g@z^3$5TG06DAbmhA2wwwGFeC=OD^%27TJkbyYB~ zPa~_ow(8CyY05sCtdDm%J`;}Nve*(=n09JSy^83;Py}kbvls*q?eE5E;j_312L|Q> z51moW$#n*i<%OS-eN-ktlCxnSIyO?-7i5v~Jnk~r>F;%r#&U*5Y$n$)hxcrJj-+;; zFJX{Zl0KGp!O3q+EDPCs@nZ*;1U)@xQHkoHC35l~V;j12I3As=-$00o+-7yO`g7!Y z!v955I&w!Vr<#!qb8t}FI23qg2^Q@I zYl+SRPE5b2VlHK0vc^ZbS5fYN zh-xa7pHjFvcPew#d&X_0ezOJsK$CP!oR5GZGJx+q%!$yogi;Ie#_NwXgGbWZheqB> z4|1m}S-Ws^brXIY+iOj2cGSSa;r*(F(Lhqx*LQs=XD06abpKOf&oT2>q*4?aN8(Op z6>XZcEN)3kWHQHUcEzs0RBO2OQT7nyT-^K+c3h72KP#6gUEuZu=*C|2=M z8VH7$#;BKFdQmBaVMfjqSmqv)NoZAklL>aM0es6wq6!MszMLWXxgv!qT7p};Q~iUm z+1+d7rSZEehU-_moQ7cFxP_XhAAnEJa}he$&_}qUTLRCHmh41q8BJu3y;Xbx5cS*= zfsRtg4CJ)WT-_yHI`(`%oRy4Eo>?=1H&HkJvCmeu+Lb})Ge)QI3?%8x1s#&5t`d0A zo06!xY4fg+wb|VTx(w8PNX4T*}uGUP7)p$|_`iKcrrS99r^&x)lgA$nv zGwnMBXq7v17i)&f%E8C)4-5icNKp?~SoqAfi~3aLv}|92&tdBTG<4-D&p4gHzlbyc za~3uYSSd&szFn7r$78V8P)&!OBs2}-Mnom=HCja4UGXg%kAtAA6y{Fg!G#$YQwKP$ zx=$Rae(d|~C8njU~k9;$VHSp{M1&4(aoq z<5yo>CMJYFYeULjO*6CrsPR{P)cY1MVXkX5)a}crC(GNS)l-sQpFf7v$KHsp|Fp#A zKX?lDE^o}78uT&gB-O)HlidlY=@m?K)679tgI?4VR5VEyI7p64*zt@22g#nmkDHsk zwDh?)3|GDP5l4$_adET~j?ccSnP)=#3s;^xzhG|iM`-FFK$0`ujSYI4i|>hd+xFhO z6+q~Pf7Nxg1Yirt=$&T_?;I^IU#7ZN>D?%loPASE-wBwt!zXslYv%xa@at512{j

    HpR4Hjx@iBeo6;3z4 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 Dn-0g( literal 0 HcmV?d00001 diff --git a/public/assets/js/app.min.js b/public/assets/js/app.min.js new file mode 100644 index 0000000..e6a27a6 --- /dev/null +++ b/public/assets/js/app.min.js @@ -0,0 +1,37 @@ + +$(function () { + // Admin Panel settings + + //**************************** + /* This is for the mini-sidebar if width is less then 1170*/ + //**************************** + var setsidebartype = function () { + var width = + window.innerWidth > 0 ? window.innerWidth : this.screen.width; + if (width < 1199) { + $("#main-wrapper").attr("data-sidebartype", "mini-sidebar"); + $("#main-wrapper").addClass("mini-sidebar"); + } else { + $("#main-wrapper").attr("data-sidebartype", "full"); + $("#main-wrapper").removeClass("mini-sidebar"); + } + }; + $(window).ready(setsidebartype); + $(window).on("resize", setsidebartype); + //**************************** + /* This is for sidebartoggler*/ + //**************************** + $(".sidebartoggler").on("click", function () { + $("#main-wrapper").toggleClass("mini-sidebar"); + if ($("#main-wrapper").hasClass("mini-sidebar")) { + $(".sidebartoggler").prop("checked", !0); + $("#main-wrapper").attr("data-sidebartype", "mini-sidebar"); + } else { + $(".sidebartoggler").prop("checked", !1); + $("#main-wrapper").attr("data-sidebartype", "full"); + } + }); + $(".sidebartoggler").on("click", function () { + $("#main-wrapper").toggleClass("show-sidebar"); + }); +}) \ No newline at end of file diff --git a/public/assets/js/dashboard.js b/public/assets/js/dashboard.js new file mode 100644 index 0000000..02965ac --- /dev/null +++ b/public/assets/js/dashboard.js @@ -0,0 +1,211 @@ +$(function () { + + + // ===================================== + // Profit + // ===================================== + var chart = { + series: [ + { name: "Earnings this month:", data: [355, 390, 300, 350, 390, 180, 355, 390] }, + { name: "Expense this month:", data: [280, 250, 325, 215, 250, 310, 280, 250] }, + ], + + chart: { + type: "bar", + height: 345, + offsetX: -15, + toolbar: { show: true }, + foreColor: "#adb0bb", + fontFamily: 'inherit', + sparkline: { enabled: false }, + }, + + + colors: ["#5D87FF", "#49BEFF"], + + + plotOptions: { + bar: { + horizontal: false, + columnWidth: "35%", + borderRadius: [6], + borderRadiusApplication: 'end', + borderRadiusWhenStacked: 'all' + }, + }, + markers: { size: 0 }, + + dataLabels: { + enabled: false, + }, + + + legend: { + show: false, + }, + + + grid: { + borderColor: "rgba(0,0,0,0.1)", + strokeDashArray: 3, + xaxis: { + lines: { + show: false, + }, + }, + }, + + xaxis: { + type: "category", + categories: ["16/08", "17/08", "18/08", "19/08", "20/08", "21/08", "22/08", "23/08"], + labels: { + style: { cssClass: "grey--text lighten-2--text fill-color" }, + }, + }, + + + yaxis: { + show: true, + min: 0, + max: 400, + tickAmount: 4, + labels: { + style: { + cssClass: "grey--text lighten-2--text fill-color", + }, + }, + }, + stroke: { + show: true, + width: 3, + lineCap: "butt", + colors: ["transparent"], + }, + + + tooltip: { theme: "light" }, + + responsive: [ + { + breakpoint: 600, + options: { + plotOptions: { + bar: { + borderRadius: 3, + } + }, + } + } + ] + + + }; + + var chart = new ApexCharts(document.querySelector("#chart"), chart); + chart.render(); + + + // ===================================== + // Breakup + // ===================================== + var breakup = { + color: "#adb5bd", + series: [38, 40, 25], + labels: ["2022", "2021", "2020"], + chart: { + width: 180, + type: "donut", + fontFamily: "Plus Jakarta Sans', sans-serif", + foreColor: "#adb0bb", + }, + plotOptions: { + pie: { + startAngle: 0, + endAngle: 360, + donut: { + size: '75%', + }, + }, + }, + stroke: { + show: false, + }, + + dataLabels: { + enabled: false, + }, + + legend: { + show: false, + }, + colors: ["#5D87FF", "#ecf2ff", "#F9F9FD"], + + responsive: [ + { + breakpoint: 991, + options: { + chart: { + width: 150, + }, + }, + }, + ], + tooltip: { + theme: "dark", + fillSeriesColor: false, + }, + }; + + var chart = new ApexCharts(document.querySelector("#breakup"), breakup); + chart.render(); + + + + // ===================================== + // Earning + // ===================================== + var earning = { + chart: { + id: "sparkline3", + type: "area", + height: 60, + sparkline: { + enabled: true, + }, + group: "sparklines", + fontFamily: "Plus Jakarta Sans', sans-serif", + foreColor: "#adb0bb", + }, + series: [ + { + name: "Earnings", + color: "#49BEFF", + data: [25, 66, 20, 40, 12, 58, 20], + }, + ], + stroke: { + curve: "smooth", + width: 2, + }, + fill: { + colors: ["#f3feff"], + type: "solid", + opacity: 0.05, + }, + + markers: { + size: 0, + }, + tooltip: { + theme: "dark", + fixed: { + enabled: true, + position: "right", + }, + x: { + show: false, + }, + }, + }; + new ApexCharts(document.querySelector("#earning"), earning).render(); +}) \ No newline at end of file diff --git a/public/assets/js/sidebarmenu.js b/public/assets/js/sidebarmenu.js new file mode 100644 index 0000000..101dd1e --- /dev/null +++ b/public/assets/js/sidebarmenu.js @@ -0,0 +1,52 @@ +/* +Template Name: Admin Template +Author: Wrappixel + +File: js +*/ +// ============================================================== +// Auto select left navbar +// ============================================================== +$(function () { + "use strict"; + var url = window.location + ""; + var path = url.replace( + window.location.protocol + "//" + window.location.host + "/", + "" + ); + var element = $("ul#sidebarnav a").filter(function () { + return this.href === url || this.href === path; // || url.href.indexOf(this.href) === 0; + }); + element.parentsUntil(".sidebar-nav").each(function (index) { + if ($(this).is("li") && $(this).children("a").length !== 0) { + $(this).children("a").addClass("active"); + $(this).parent("ul#sidebarnav").length === 0 + ? $(this).addClass("active") + : $(this).addClass("selected"); + } else if (!$(this).is("ul") && $(this).children("a").length === 0) { + $(this).addClass("selected"); + } else if ($(this).is("ul")) { + $(this).addClass("in"); + } + }); + + element.addClass("active"); + $("#sidebarnav a").on("click", function (e) { + if (!$(this).hasClass("active")) { + // hide any open menus and remove all other classes + $("ul", $(this).parents("ul:first")).removeClass("in"); + $("a", $(this).parents("ul:first")).removeClass("active"); + + // open our new menu and add the open class + $(this).next("ul").addClass("in"); + $(this).addClass("active"); + } else if ($(this).hasClass("active")) { + $(this).removeClass("active"); + $(this).parents("ul:first").removeClass("active"); + $(this).next("ul").removeClass("in"); + } + }); + $("#sidebarnav >li >a.has-arrow").on("click", function (e) { + e.preventDefault(); + }); + }); \ No newline at end of file diff --git a/public/assets/libs/apexcharts/LICENSE b/public/assets/libs/apexcharts/LICENSE new file mode 100644 index 0000000..1702793 --- /dev/null +++ b/public/assets/libs/apexcharts/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 ApexCharts + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/public/assets/libs/apexcharts/README.md b/public/assets/libs/apexcharts/README.md new file mode 100644 index 0000000..2aee7df --- /dev/null +++ b/public/assets/libs/apexcharts/README.md @@ -0,0 +1,228 @@ +

    + +

    + License + build + downloads + ver + size + + prettier + jsdelivr + + +

    + +

    + +

    + +

    A modern JavaScript charting library that allows you to build interactive data visualizations with simple API and 100+ ready-to-use samples. Packed with the features that you expect, ApexCharts includes over a dozen chart types that deliver beautiful, responsive visualizations in your apps and dashboards. ApexCharts is an MIT licensed open-source project that can be used in commercial and non-commercial projects.

    + +

    + +
    + +## Browsers support + +| [Firefox](http://godban.github.io/browsers-support-badges/)
    Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
    Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
    Safari | [Edge](http://godban.github.io/browsers-support-badges/)
    Edge | [IE](http://godban.github.io/browsers-support-badges/)
    IE11 | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| 31+ ✔ | 35+ ✔ | 6+ ✔ | Edge ✔ | [(IE11)](#using-it-with-ie11) ✔ | + +## Download and Installation + +##### Installing via npm + +```bash +npm install apexcharts --save +``` + +##### Direct <script> include + +```html + +``` + +## Wrappers for Vue/React/Angular/Stencil + +Integrate easily with 3rd party frameworks + +- [vue-apexcharts](https://github.com/apexcharts/vue-apexcharts) +- [react-apexcharts](https://github.com/apexcharts/react-apexcharts) +- [ng-apexcharts](https://github.com/apexcharts/ng-apexcharts) - Plugin by [Morris Janatzek](https://morrisj.net/) +- [stencil-apexcharts](https://github.com/apexcharts/stencil-apexcharts) + +### Unofficial Wrappers + +Useful links to wrappers other than the popular frameworks mentioned above + +- [apexcharter](https://github.com/dreamRs/apexcharter) - Htmlwidget for ApexCharts +- [apexcharts.rb](https://github.com/styd/apexcharts.rb) - Ruby wrapper for ApexCharts +- [larapex-charts](https://github.com/ArielMejiaDev/larapex-charts) - Laravel wrapper for ApexCharts +- [blazor-apexcharts](https://github.com/apexcharts/Blazor-ApexCharts) - Blazor wrapper for ApexCharts [demo](https://apexcharts.github.io/Blazor-ApexCharts/) +- [svelte-apexcharts](https://github.com/galkatz373/svelte-apexcharts) - Svelte wrapper for ApexCharts + + +## Usage + +```js +import ApexCharts from 'apexcharts' +``` + +To create a basic bar chart with minimal configuration, write as follows: + +```js +var options = { + chart: { + type: 'bar' + }, + series: [ + { + name: 'sales', + data: [30, 40, 35, 50, 49, 60, 70, 91, 125] + } + ], + xaxis: { + categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999] + } +} + +var chart = new ApexCharts(document.querySelector('#chart'), options) +chart.render() +``` + +This will render the following chart + +

    + +### A little more than the basic + +You can create a combination of different charts, sync them and give your desired look with unlimited possibilities. +Below is an example of synchronized charts with github style. + +

    + +## Interactivity + +Zoom, Pan, Scroll through data. Make selections and load other charts using those selections. +An example showing some interactivity + +

    interactive chart

    + +## Dynamic Series Update + +Another approach to Drill down charts where one selection updates the data of other charts. +An example of loading dynamic series into charts is shown below + +

    dynamic-loading-chart

    + +## Annotations + +Annotations allows you to write custom text on specific values or on axes values. Valuable to expand the visual appeal of your chart and make it more informative. + +

    annotations

    + +## Mixed Charts + +You can combine more than one chart type to create a combo/mixed chart. Possible combinations can be line/area/column together in a single chart. Each chart-type can have it's own y-axis. + +

    annotations

    + +## Candlestick + +Use a candlestick chart (a common financial chart) to describe price changes of a security, derivative, or currency. Below image show how you can use another chart as a brush/preview-pane which acts as a handle to browse the main candlestick chart. + +

    candlestick

    + +## Heatmaps + +Use Heatmaps to represent data through colors and shades. Frequently used with bigger data collections, they are valuable for recognizing patterns and area of focus. + +

    heatmap

    + +## Gauges + +The tiny gauges are an important part of a dashboard and are useful in displaying single series data. A demo of these gauges: + +

    radialbar-chart

    + +## Sparklines + +Utilize sparklines to indicate trends in data, for example, occasional increments or declines, monetary cycles, or to feature most extreme and least values: + +

    sparkline-chart

    + + +## Need Advanced Data Grid for your next project? +We partnered with Infragistics, creators of the fastest data grids on the planet! Ignite UI Grids can handle unlimited rows and columns of data, while providing access to custom templates and real-time data updates. + +

    + +Featuring an intuitive API for easy theming and branding, you can quickly bind to data with minimal hand-on coding. The grid is available in most of your favorite frameworks: + +Angular Data Grid | React Data Grid | Blazor Data Grid | Web Components DataGrid | jQuery Data Grid + +## What's included + +The download bundle includes the following files and directories providing a minified single file in the dist folder. Every asset including icon/css is bundled in the js itself to avoid loading multiple files. + +``` +apexcharts/ +├── dist/ +│ └── apexcharts.min.js +├── src/ +│ ├── assets/ +│ ├── charts/ +│ ├── modules/ +│ ├── utils/ +│ └── apexcharts.js +└── samples/ +``` + +## Using it with IE11 + +If you need to make it work with IE11, you need to include these polyfills before including ApexCharts + +- [promise-polyfill](https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js) +- [classlist.js](https://cdn.jsdelivr.net/npm/eligrey-classlist-js-polyfill) +- [ResizeObserver polyfill](https://cdn.jsdelivr.net/npm/@juggle/resize-observer) +- [findIndex](https://cdn.jsdelivr.net/npm/findindex_polyfill_mdn) - You will need this only if you require timeline/rangebar charts +- [canvg](https://unpkg.com/canvg@3.0.4/lib/umd.js) - You will need this only if you require PNG download of your charts + +## Development + +#### Install dependencies and run project + +```bash +npm install +npm run dev +``` + +This will start the webpack watch and any changes you make to `src` folder will auto-compile and output will be produced in the `dist` folder. + +#### Minifying the src + +```bash +npm run build +``` + +## Where do I go next? + +Head over to the documentation section to read more about how to use different kinds of charts and explore all options. + +## Contacts + +Email: info@apexcharts.com + +Twitter: @apexcharts + +Facebook: fb.com/apexcharts + +## Dependency + +ApexCharts uses SVG.js for drawing shapes, animations, applying svg filters and a lot more under the hood. The library is bundled in the final build file, so you don't need to include it. + +## License + +ApexCharts is released under MIT license. You are free to use, modify and distribute this software, as long as the copyright header is left intact. diff --git a/public/assets/libs/apexcharts/dist/apexcharts.amd.js b/public/assets/libs/apexcharts/dist/apexcharts.amd.js new file mode 100644 index 0000000..37cc1c5 --- /dev/null +++ b/public/assets/libs/apexcharts/dist/apexcharts.amd.js @@ -0,0 +1,2 @@ +/*! For license information please see apexcharts.amd.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ApexCharts=e():t.ApexCharts=e()}(self,(function(){return(()=>{var t={922:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=function(t,e){var i,a,s,r=t[1]||"",n=t[3];if(!n)return r;if(e&&"function"==typeof btoa){var o=(i=n,a=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),s="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(a),"/*# ".concat(s," */")),l=n.sources.map((function(t){return"/*# sourceURL=".concat(n.sourceRoot||"").concat(t," */")}));return[r].concat(l).concat([o]).join("\n")}return[r].join("\n")}(e,t);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i){"string"==typeof t&&(t=[[null,t,""]]);for(var a=0;an.maxX-i.width&&(o=(s=n.maxX-i.width)-this.startPoints.box.x),null!=n.minY&&rn.maxY-i.height&&(l=(r=n.maxY-i.height)-this.startPoints.box.y),null!=n.snapToGrid&&(s-=s%n.snapToGrid,r-=r%n.snapToGrid,o-=o%n.snapToGrid,l-=l%n.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:l},!0):this.el.move(s,r));return a},e.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(i,a){"function"!=typeof i&&"object"!=t(i)||(a=i,i=!0);var s=this.remember("_draggable")||new e(this);return(i=void 0===i||i)?s.init(a||{},i):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}).call(this)},872:function(){(function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",r(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i{!function(){"use strict";function t(t,s,r,n,o,l,c){for(var h=t.slice(s,r||c),d=n.slice(o,l||c),u=0,g={pos:[0,0],start:[0,0]},f={pos:[0,0],start:[0,0]};h[u]=e.call(g,h[u]),d[u]=e.call(f,d[u]),h[u][0]!=d[u][0]||"M"==h[u][0]||"A"==h[u][0]&&(h[u][4]!=d[u][4]||h[u][5]!=d[u][5])?(Array.prototype.splice.apply(h,[u,1].concat(a.call(g,h[u]))),Array.prototype.splice.apply(d,[u,1].concat(a.call(f,d[u])))):(h[u]=i.call(g,h[u]),d[u]=i.call(f,d[u])),++u!=h.length||u!=d.length;)u==h.length&&h.push(["C",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push(["C",f.pos[0],f.pos[1],f.pos[0],f.pos[1],f.pos[0],f.pos[1]]);return{start:h,dest:d}}function e(t){switch(t[0]){case"z":case"Z":t[0]="L",t[1]=this.start[0],t[2]=this.start[1];break;case"H":t[0]="L",t[2]=this.pos[1];break;case"V":t[0]="L",t[2]=t[1],t[1]=this.pos[0];break;case"T":t[0]="Q",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case"S":t[0]="C",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!="SCQT".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function a(t){var e=[t];switch(t[0]){case"M":return this.pos=this.start=[t[1],t[2]],e;case"L":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case"Q":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case"A":e=function(t,e){var i,a,s,r,n,o,l,c,h,d,u,g,f,p,x,b,v,m,y,w,k,A,S,C,P,L,O=Math.abs(e[1]),T=Math.abs(e[2]),E=e[3]%360,I=e[4],M=e[5],z=e[6],X=e[7],Y=new SVG.Point(t),D=new SVG.Point(z,X),R=[];if(0===O||0===T||Y.x===D.x&&Y.y===D.y)return[["C",Y.x,Y.y,D.x,D.y,D.x,D.y]];for((a=(i=new SVG.Point((Y.x-D.x)/2,(Y.y-D.y)/2).transform((new SVG.Matrix).rotate(E))).x*i.x/(O*O)+i.y*i.y/(T*T))>1&&(O*=a=Math.sqrt(a),T*=a),s=(new SVG.Matrix).rotate(E).scale(1/O,1/T).rotate(-E),Y=Y.transform(s),o=(r=[(D=D.transform(s)).x-Y.x,D.y-Y.y])[0]*r[0]+r[1]*r[1],n=Math.sqrt(o),r[0]/=n,r[1]/=n,l=o<4?Math.sqrt(1-o/4):0,I===M&&(l*=-1),c=new SVG.Point((D.x+Y.x)/2+l*-r[1],(D.y+Y.y)/2+l*r[0]),h=new SVG.Point(Y.x-c.x,Y.y-c.y),d=new SVG.Point(D.x-c.x,D.y-c.y),u=Math.acos(h.x/Math.sqrt(h.x*h.x+h.y*h.y)),h.y<0&&(u*=-1),g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1),M&&u>g&&(g+=2*Math.PI),!M&&u{!function(){"use strict";(function(){function t(t){t.remember("_resizeHandler",this),this.el=t,this.parameters={},this.lastUpdateCall=null,this.p=t.doc().node.createSVGPoint()}t.prototype.transformPoint=function(t,e,i){return this.p.x=t-(this.offset.x-window.pageXOffset),this.p.y=e-(this.offset.y-window.pageYOffset),this.p.matrixTransform(i||this.m)},t.prototype._extractPosition=function(t){return{x:null!=t.clientX?t.clientX:t.touches[0].clientX,y:null!=t.clientY?t.clientY:t.touches[0].clientY}},t.prototype.init=function(t){var e=this;if(this.stop(),"stop"!==t){for(var i in this.options={},this.el.resize.defaults)this.options[i]=this.el.resize.defaults[i],void 0!==t[i]&&(this.options[i]=t[i]);this.el.on("lt.resize",(function(t){e.resize(t||window.event)})),this.el.on("rt.resize",(function(t){e.resize(t||window.event)})),this.el.on("rb.resize",(function(t){e.resize(t||window.event)})),this.el.on("lb.resize",(function(t){e.resize(t||window.event)})),this.el.on("t.resize",(function(t){e.resize(t||window.event)})),this.el.on("r.resize",(function(t){e.resize(t||window.event)})),this.el.on("b.resize",(function(t){e.resize(t||window.event)})),this.el.on("l.resize",(function(t){e.resize(t||window.event)})),this.el.on("rot.resize",(function(t){e.resize(t||window.event)})),this.el.on("point.resize",(function(t){e.resize(t||window.event)})),this.update()}},t.prototype.stop=function(){return this.el.off("lt.resize"),this.el.off("rt.resize"),this.el.off("rb.resize"),this.el.off("lb.resize"),this.el.off("t.resize"),this.el.off("r.resize"),this.el.off("b.resize"),this.el.off("l.resize"),this.el.off("rot.resize"),this.el.off("point.resize"),this},t.prototype.resize=function(t){var e=this;this.m=this.el.node.getScreenCTM().inverse(),this.offset={x:window.pageXOffset,y:window.pageYOffset};var i=this._extractPosition(t.detail.event);if(this.parameters={type:this.el.type,p:this.transformPoint(i.x,i.y),x:t.detail.x,y:t.detail.y,box:this.el.bbox(),rotation:this.el.transform().rotation},"text"===this.el.type&&(this.parameters.fontSize=this.el.attr()["font-size"]),void 0!==t.detail.i){var a=this.el.array().valueOf();this.parameters.i=t.detail.i,this.parameters.pointCoords=[a[t.detail.i][0],a[t.detail.i][1]]}switch(t.type){case"lt":this.calc=function(t,e){var i=this.snapToGrid(t,e);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),n=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(n-n%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])n.maxX&&(t=n.maxX-s),void 0!==n.minY&&r+en.maxY&&(e=n.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],n=s/r;return na&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}()},769:()=>{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t(e)}!function(){"use strict";function e(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}e.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var n=this.options[r[s]];"string"==typeof n?n=n.length>0?n.split(/\s*,\s*/i):[]:"boolean"==typeof n&&"points"===r[s]&&(n=n?a:[]),this.options[r[s]]=n}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},e.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},e.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},e.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i{"use strict";function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function s(t,e){for(var i=0;iVa});var r=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,i,r;return e=t,r=[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===a(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;ee.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}],(i=[{key:"shadeRGBColor",value:function(t,e){var i=e.split(","),a=t<0?0:255,s=t<0?-1*t:t,r=parseInt(i[0].slice(4),10),n=parseInt(i[1],10),o=parseInt(i[2],10);return"rgb("+(Math.round((a-r)*s)+r)+","+(Math.round((a-n)*s)+n)+","+(Math.round((a-o)*s)+o)+")"}},{key:"shadeHexColor",value:function(t,e){var i=parseInt(e.slice(1),16),a=t<0?0:255,s=t<0?-1*t:t,r=i>>16,n=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-n)*s)+n)+(Math.round((a-o)*s)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}])&&s(e.prototype,i),r&&s(e,r),t}();const n=r;function o(t,e){for(var i=0;i-1||s.indexOf("NaN")>-1)&&(s=d()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=d()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,l).plot(s).animate(o,h.globals.easing,l).plot(r).afterAll((function(){n.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&c.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&c.animationCompleted(t),c.showDelayedElements()}))}}])&&o(e.prototype,i),t}();function c(t,e){for(var i=0;i3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,n=i.color,o=i.opacity,l=t.flood(Array.isArray(n)?n[e]:n,o).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,o=e.color,l=e.opacity,c=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),n.isIE()&&"radialBar"===h.config.chart.type||(o=Array.isArray(o)?o[i]:o,t.filter((function(t){var e;e=n.isSafari()||n.isFirefox()||n.isIE()?t.flood(o,l).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(o,l).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),c||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}],i&&c(e.prototype,i),t}();const d=h;function u(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function g(t){for(var e=1;e2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}var n=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),o=[];if(n.length>1){var l=r(n[0]),c=null;"Z"==n[n.length-1][0]&&n[0].length>2&&(c=["L",l.x,l.y],n[n.length-1]=c),o.push(n[0]);for(var h=1;h2&&"L"==u[0]&&g.length>2&&"L"==g[0]){var f,p,x=r(d),b=r(u),v=r(g);f=i(b,x,e),p=i(b,v,e),s(u,f),u.origPoint=b,o.push(u);var m=a(f,b,.5),y=a(b,p,.5),w=["C",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,o.push(w)}else o.push(u)}if(c){var k=r(o[o.length-1]);o.push(["Z"]),s(o[0],k)}}else o=n;return o.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt",l=this.w,c=l.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":n,"stroke-linecap":o});return c}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,c=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,h=this.w,d=h.globals.dom.Paper.rect();return d.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:n,"stroke-width":null!==o?o:0,stroke:null!==l?l:"none","stroke-dasharray":c}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",s=this.w,r=s.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i});return r}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;t<0&&(t=0);var a=i.globals.dom.Paper.circle(2*t);return null!==e&&a.attr(e),a}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,n=void 0===r?1:r,o=t.fill,l=t.fillOpacity,c=void 0===l?1:l,h=t.strokeOpacity,d=void 0===h?1:h,u=t.classes,g=t.strokeLinecap,f=void 0===g?null:g,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":c,stroke:s,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":n,"stroke-dasharray":x,class:u})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=e.globals.dom.Paper.group();return null!==t&&i.attr(t),i}},{key:"move",value:function(t,e){return["M",t,e].join(" ")}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){return["C",t,e,i,a,s,r].join(" ")}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,n){var o=arguments.length>7&&void 0!==arguments[7]&&arguments[7],l="A";o&&(l="a");var c=[l,t,e,i,a,s,r,n].join(" ");return c}},{key:"renderPaths",value:function(t){var e,i=t.j,a=t.realIndex,s=t.pathFrom,r=t.pathTo,n=t.stroke,o=t.strokeWidth,c=t.strokeLinecap,h=t.fill,u=t.animationDelay,f=t.initialSpeed,p=t.dataChangeSpeed,x=t.className,b=t.shouldClipToGrid,v=void 0===b||b,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new d(this.ctx),C=new l(this.ctx),P=this.w.config.chart.animations.enabled,L=P&&this.w.config.chart.animations.dynamicAnimation.enabled,O=!!(P&&!A.globals.resized||L&&A.globals.dataChanged&&A.globals.shouldAnimate);O?e=s:(e=r,A.globals.animationEnded=!0);var T,E=A.config.stroke.dashArray;T=Array.isArray(E)?E[a]:A.config.stroke.dashArray;var I=this.drawPath({d:e,stroke:n,strokeWidth:o,fill:h,fillOpacity:1,classes:x,strokeLinecap:c,strokeDashArray:T});if(I.attr("index",a),v&&I.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(I,a);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(a))){var M=A.config.chart.dropShadow;S.dropShadow(I,M,a)}y&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:r,pathFrom:s});var z={el:I,j:i,realIndex:a,pathFrom:s,pathTo:r,fill:h,strokeWidth:o,delay:u};return!P||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(g(g({},z),{},{speed:f})),A.globals.dataChanged&&L&&O&&C.animatePathsGradually(g(g({},z),{},{speed:p})),I}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=this.w,n=r.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}));return n}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,c=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,d=this.w;e.length<9&&0===e.indexOf("#")&&(e=n.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=n.hexToRgba(i,s));var u=0,g=1,f=1,p=null;null!==l&&(u=void 0!==l[0]?l[0]/100:0,g=void 0!==l[1]?l[1]/100:1,f=void 0!==l[2]?l[2]/100:1,p=void 0!==l[3]?l[3]/100:null);var x=!("donut"!==d.config.chart.type&&"pie"!==d.config.chart.type&&"polarArea"!==d.config.chart.type&&"bubble"!==d.config.chart.type);if(r=null===c||0===c.length?d.globals.dom.Paper.gradient(x?"radial":"linear",(function(t){t.at(u,e,a),t.at(g,i,s),t.at(f,i,s),null!==p&&t.at(p,e,a)})):d.globals.dom.Paper.gradient(x?"radial":"linear",(function(t){(Array.isArray(c[h])?c[h]:c).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),x){var b=d.globals.gridWidth/2,v=d.globals.gridHeight/2;"bubble"!==d.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),n=r.width/e.length,o=Math.floor(i/n);return i-1){var o=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,c=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,h=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};h(l),h(c)}t.node.setAttribute("selected","true"),n="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===n){var u=i.config.states.active.filter;if("none"!==u)a.applyFilter(t,s,u.type,u.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else"none"!==i.config.states.active.filter.type&&("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice?a.getDefaultFilter(t,s):(g=i.config.states.hover.filter,a.applyFilter(t,s,g.type,g.value)));"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,n=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&n.attr("transform",a),r.globals.dom.Paper.add(n);var o=n.bbox();return s||(o=n.node.getBoundingClientRect()),n.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],a=[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}],i&&p(e.prototype,i),a&&p(e,a),t}();const b=x;function v(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][n]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}],i&&v(e.prototype,i),a&&v(e,a),t}();const y=m;function w(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var n=this.annoCtx.graphics.rotateAroundCenter(s),o=n.x,l=n.y;s.setAttribute("transform","rotate(-90 ".concat(o," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,n=e.label.style.padding.right,o=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(o=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,n=e.label.style.padding.bottom);var c=s.left-a.left-r,h=s.top-a.top-o,d=this.annoCtx.graphics.drawRect(c-i.globals.barPadForNumericAxis,h,s.width+r+n,s.height+o+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var n=r.parentNode,o=t.addBackgroundToAnno(r,i);o&&(n.insertBefore(o.node,r),i.label.mouseEnter&&o.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&o.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&o.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var n=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");n&&(i=parseFloat(n.getAttribute("y")))}else{var o;o=s.config.yaxis[e.yAxisIndex].logarithmic?(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex]:(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight),i=s.globals.gridHeight-o,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=o)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,n=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(n=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x));var o=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(o=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(n=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(n=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(o=parseFloat(e.x2)),"x1"===t?n:o}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}],i&&w(e.prototype,i),t}();function A(t,e){for(var i=0;in){var c=n;n=a,a=c}var h=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),n-a,0,t.fillColor,t.opacity,1,t.borderColor,r);h.node.classList.add("apexcharts-annotation-rect"),h.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(h.node),t.id&&h.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,u=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:n)+t.label.offsetY-3,text:o,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});u.attr({rel:i}),e.appendChild(u.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;return e.globals.gridWidth,(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}])&&C(e.prototype,i),t}();function L(t,e){for(var i=0;i1&&n[o].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:n[o],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,n=t.foreColor,o=t.fontSize,l=t.fontFamily,c=t.fontWeight,h=t.cssClass,d=t.backgroundColor,u=t.borderWidth,g=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-annotations":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,P=this.w,L=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:o||"12px",fontWeight:c||"regular",fontFamily:l||P.config.chart.fontFamily,foreColor:n||P.config.chart.foreColor,cssClass:h}),O=P.globals.dom.baseEl.querySelector(b);O&&O.appendChild(L.node);var T=L.bbox();if(s){var E=this.graphics.drawRect(T.x-m,T.y-C,T.width+m+w,T.height+A+C,f,d||"transparent",1,u,p,g);O.insertBefore(E.node,L.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,n=t.y,o=void 0===n?0:n,l=t.width,c=void 0===l?20:l,h=t.height,d=void 0===h?20:h,u=t.appendTo,g=void 0===u?".apexcharts-annotations":u,f=i.globals.dom.Paper.image(a);f.size(c,d).move(r,o);var p=i.globals.dom.baseEl.querySelector(g);return p&&p.appendChild(f.node),f}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,l=o.w,c=l.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=c.childNodes.length+1,d=new I,u=Object.assign({},"xaxis"===s?d.xAxisAnnotation:"yaxis"===s?d.yAxisAnnotation:d.pointAnnotation),g=n.extend(u,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,c,h);break;case"yaxis":this.addYaxisAnnotation(g,c,h);break;case"point":this.addPointAnnotation(g,c,h)}var f=l.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),p=this.helpers.addBackgroundToAnno(f,g);return p&&c.insertBefore(p.node,f),i&&l.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:n.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=n.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}])&&M(e.prototype,i),t}();function X(t){return function(t){if(Array.isArray(t))return Y(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Y(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Y(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Y(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i12?u-12:0===u?12:u;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(u))).replace(/(^|[^\\])H/g,"$1"+u)).replace(/(^|[^\\])hh+/g,"$1"+l(g))).replace(/(^|[^\\])h/g,"$1"+g);var f=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(f))).replace(/(^|[^\\])m/g,"$1"+f);var p=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(p))).replace(/(^|[^\\])s/g,"$1"+p);var x=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(x,3)),x=Math.round(x/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(x)),x=Math.round(x/10);var b=u<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+x)).replace(/(^|[^\\])TT+/g,"$1"+b)).replace(/(^|[^\\])T/g,"$1"+b.charAt(0));var v=b.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+v)).replace(/(^|[^\\])t/g,"$1"+v.charAt(0));var m=-t.getTimezoneOffset(),y=a||!m?"Z":m>0?"+":"-";if(!a){var w=(m=Math.abs(m))%60;y+=l(Math.floor(m/60))+":"+l(w)}e=e.replace(/(^|[^\\])K/g,"$1"+y);var k=(a?t.getUTCDay():t.getDay())+1;return(e=(e=(e=(e=e.replace(new RegExp(n[0],"g"),n[k])).replace(new RegExp(o[0],"g"),o[k])).replace(new RegExp(s[0],"g"),s[h])).replace(new RegExp(r[0],"g"),r[h])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),n=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),o=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(n[6],10),maxMillisecond:parseInt(o[6],10),minSecond:parseInt(n[5],10),maxSecond:parseInt(o[5],10),minMinute:parseInt(n[4],10),maxMinute:parseInt(o[4],10),minHour:parseInt(n[3],10),maxHour:parseInt(o[3],10),minDate:parseInt(n[2],10),maxDate:parseInt(o[2],10),minMonth:parseInt(n[1],10)-1,maxMonth:parseInt(o[1],10)-1,minYear:parseInt(n[0],10),maxYear:parseInt(o[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=n.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}])&&D(e.prototype,i),t}();function F(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function H(t){for(var e=1;e\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
    '+(i||"")+'
    '+a+" "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[n].type||"rangeBar"===t.w.config.series[n].type?h:"".concat(c,""):h)+"
    "},G=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.opts=e}var e,i;return e=t,(i=[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){return this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0,n.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var e=j(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.startVal,n=e.endVal;return B(H(H({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t):function(t){var e=j(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return B(H(H({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var e=j(t),i=e.color,a=e.seriesName,s=e.ylabel,r=e.start,n=e.end;return B(H(H({},t),{},{color:i,seriesName:a,ylabel:s,start:r,end:n}))}(t)}}}}},{key:"brush",value:function(t){return n.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return n.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return n.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],n=t.globals.seriesCandleH[e][i],o=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],c=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
    \n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
    "):'
    ')+"
    ".concat(a[0],': ')+r+"
    "+"
    ".concat(a[1],': ')+n+"
    "+(o?"
    ".concat(a[2],': ')+o+"
    ":"")+"
    ".concat(a[3],': ')+l+"
    "+"
    ".concat(a[4],': ')+c+"
    "}}])&&W(e.prototype,i),t}();function V(t){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},V(t)}function _(t,e){for(var i=0;i1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new I;return t.annotations.yaxis=n.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new I;return t.annotations.xaxis=n.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new I;return t.annotations.points=n.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}])&&_(e.prototype,i),t}();function q(t,e){for(var i=0;is?a:s,n=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=r+1,l=r):(o=t.width,l=t.height);var c=document.createElementNS(e.globals.SVGNS,"pattern");b.setAttrs(c,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:o+"px",height:l+"px"});var h=document.createElementNS(e.globals.SVGNS,"image");c.appendChild(h),h.setAttributeNS(window.SVG.xlink,"href",n),b.setAttrs(h,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:l+"px"}),h.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(c)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type||"treemap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var l=t.fillType?t.fillType:this.getFillType(this.seriesIndex),c=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color);var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=n.hexToRgba(o,c)):o.indexOf("rgba")>-1&&(c=n.getOpacityFromRGBA(o)),t.opacity&&(c=t.opacity),"pattern"===l&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:c,defaultColor:h})),"gradient"===l&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:c,i:this.seriesIndex})),"image"===l){var d=r.fill.image.src,u=t.patternID?t.patternID:"";this.clippedImgArea({opacity:c,image:Array.isArray(d)?t.seriesNumber-1&&(g=n.getOpacityFromRGBA(u));var f=void 0===r.gradient.opacityTo?i:Array.isArray(r.gradient.opacityTo)?r.gradient.opacityTo[s]:r.gradient.opacityTo;if(void 0===r.gradient.gradientToColors||0===r.gradient.gradientToColors.length)o="dark"===r.gradient.shade?h.shadeColor(-1*parseFloat(r.gradient.shadeIntensity),e.indexOf("rgb")>-1?n.rgb2hex(e):e):h.shadeColor(parseFloat(r.gradient.shadeIntensity),e.indexOf("rgb")>-1?n.rgb2hex(e):e);else if(r.gradient.gradientToColors[l.seriesNumber]){var p=r.gradient.gradientToColors[l.seriesNumber];o=p,p.indexOf("rgba")>-1&&(f=n.getOpacityFromRGBA(p))}else o=e;if(r.gradient.gradientFrom&&(u=r.gradient.gradientFrom),r.gradient.gradientTo&&(o=r.gradient.gradientTo),r.gradient.inverseColors){var x=u;u=o,o=x}return u.indexOf("rgb")>-1&&(u=n.rgb2hex(u)),o.indexOf("rgb")>-1&&(o=n.rgb2hex(o)),c.drawGradient(d,u,o,g,f,l.size,r.gradient.stops,r.gradient.colorStops,s)}}])&&et(e.prototype,i),t}();function at(t,e){for(var i=0;i0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,l=e,c=t,h=null,u=new b(this.ctx),g=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||g)&&(h=u.group({class:r||g?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(c.x))for(var f=0;f0:o.config.markers.size>0;if(v||r||g){n.isNumber(c.y[f])?x+=" w".concat(n.randomId()):x="apexcharts-nullpoint";var m=this.getMarkerConfig({cssClass:x,seriesIndex:e,dataPointIndex:p});o.config.series[l].data[p]&&(o.config.series[l].data[p].fillColor&&(m.pointFillColor=o.config.series[l].data[p].fillColor),o.config.series[l].data[p].strokeColor&&(m.pointStrokeColor=o.config.series[l].data[p].strokeColor)),a&&(m.pSize=a),(s=u.drawMarker(c.x[f],c.y[f],m)).attr("rel",p),s.attr("j",p),s.attr("index",e),s.node.setAttribute("default-marker-size",m.pSize);var y=new d(this.ctx);y.setSelectionFilter(s,e,p),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([c.x[f],c.y[f]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,n=void 0===r?null:r,o=this.w,l=this.getMarkerStyle(i),c=o.globals.markers.size[i],h=o.config.markers;return null!==s&&h.discrete.length&&h.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,c=t.size,l.pointShape=t.shape)})),{pSize:null===n?c:n,pRadius:h.radius,width:Array.isArray(h.width)?h.width[i]:h.width,height:Array.isArray(h.height)?h.height[i]:h.height,pointStrokeWidth:Array.isArray(h.strokeWidth)?h.strokeWidth[i]:h.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(h.shape)?h.shape[i]:h.shape),class:e,pointStrokeOpacity:Array.isArray(h.strokeOpacity)?h.strokeOpacity[i]:h.strokeOpacity,pointStrokeDashArray:Array.isArray(h.strokeDashArray)?h.strokeDashArray[i]:h.strokeDashArray,pointFillOpacity:Array.isArray(h.fillOpacity)?h.fillOpacity[i]:h.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new b(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}],i&&at(e.prototype,i),t}();function rt(t,e){for(var i=0;ip.maxBubbleRadius&&(f=p.maxBubbleRadius)}a.config.chart.animations.enabled||(g=f);var x=n.x[h],v=n.y[h];if(g=g||0,null!==v&&void 0!==a.globals.series[r][d]||(u=!1),u){var m=this.drawPoint(x,v,g,f,r,d,e);c.add(m)}l.add(c)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,n){var o=this.w,c=s,h=new l(this.ctx),u=new d(this.ctx),g=new it(this.ctx),f=new st(this.ctx),p=new b(this.ctx),x=f.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:c,dataPointIndex:r,finishRadius:"bubble"===o.config.chart.type||o.globals.comboCharts&&o.config.series[s]&&"bubble"===o.config.series[s].type?a:null});a=x.pSize;var v,m=g.fillPath({seriesNumber:s,dataPointIndex:r,color:x.pointFillColor,patternUnits:"objectBoundingBox",value:o.globals.series[s][n]});if("circle"===x.shape?v=p.drawCircle(i):"square"!==x.shape&&"rect"!==x.shape||(v=p.drawRect(0,0,x.width-x.pointStrokeWidth/2,x.height-x.pointStrokeWidth/2,x.pRadius)),o.config.series[c].data[r]&&o.config.series[c].data[r].fillColor&&(m=o.config.series[c].data[r].fillColor),v.attr({x:t-x.width/2-x.pointStrokeWidth/2,y:e-x.height/2-x.pointStrokeWidth/2,cx:t,cy:e,fill:m,"fill-opacity":x.pointFillOpacity,stroke:x.pointStrokeColor,r:a,"stroke-width":x.pointStrokeWidth,"stroke-dasharray":x.pointStrokeDashArray,"stroke-opacity":x.pointStrokeOpacity}),o.config.chart.dropShadow.enabled){var y=o.config.chart.dropShadow;u.dropShadow(v,y,s)}if(!this.initialAnim||o.globals.dataChanged||o.globals.resized)o.globals.animationEnded=!0;else{var w=o.config.chart.animations.speed;h.animateMarker(v,0,"circle"===x.shape?a:{width:x.width,height:x.height},w,o.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(v)}),100)}))}if(o.globals.dataChanged&&"circle"===x.shape)if(this.dynamicAnim){var k,A,S,C,P=o.config.chart.animations.dynamicAnimation.speed;null!=(C=o.globals.previousPaths[s]&&o.globals.previousPaths[s][n])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var L=0;Lo.globals.gridHeight+d&&(e=o.globals.gridHeight+d/2),void 0===o.globals.dataLabelsRects[a]&&(o.globals.dataLabelsRects[a]=[]),o.globals.dataLabelsRects[a].push({x:t,y:e,width:h,height:d});var u=o.globals.dataLabelsRects[a].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[a]?o.globals.lastDrawnDataLabelsIndexes[a][o.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==o.globals.dataLabelsRects[a][u]){var f=o.globals.dataLabelsRects[a][g];(t>f.x+f.width+2||e>f.y+f.height+2||t+he.globals.gridWidth+x.textRects.width+10)&&(o="");var v=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(v=e.globals.dataLabels.style.colors[n]),"function"==typeof v&&(v=v({series:e.globals.series,seriesIndex:r,dataPointIndex:n,w:e})),g&&(v=g);var m=u.offsetX,y=u.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(m=0,y=0),x.drawnextLabel){var w=i.drawText({width:100,height:parseInt(u.style.fontSize,10),x:a+m,y:s+y,foreColor:v,textAnchor:l||u.textAnchor,text:o,fontSize:c||u.style.fontSize,fontFamily:u.style.fontFamily,fontWeight:u.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),u.dropShadow.enabled){var k=u.dropShadow;new d(this.ctx).dropShadow(w,k)}h.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(n)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,n=e.width,o=e.height,l=new b(this.ctx).drawRect(e.x-s,e.y-r/2,n+2*s,o+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);return a.dropShadow.enabled&&new d(this.ctx).dropShadow(l,a.dropShadow),l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=n.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,n=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var o=0;o=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[n])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},n=0;n0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}))}}],i&&ct(e.prototype,i),t}();function dt(t,e){for(var i=0;i0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new ht(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(n.parseNumber(t[e].data[r][4])):this.twoDSeries.push(n.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var l=0;l-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new R(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar="rangeBar"===a.chart.type&&s.isBarHorizontal,s.hasGroups="category"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasGroups&&(s.groups=a.xaxis.group.groups);for(var l=function(){for(var t=0;t0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var h=t[c].data.map((function(t){return n.parseNumber(t)}));s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[c].name?s.seriesNames.push(t[c].name):s.seriesNames.push("series-"+parseInt(c+1,10)),void 0!==t[c].color?s.seriesColors.push(t[c].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0?i.labels=e.xaxis.categories:e.labels.length>0?i.labels=e.labels.slice():this.fallbackToCategory?(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=i.labels.filter((function(t,e,i){return i.indexOf(t)===e}))),e.xaxis.convertedCatToNumeric&&(new G(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t))):this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),n=0;n0&&i<100?t.toFixed(1):t.toFixed(0)}return e.globals.isBarHorizontal&&e.globals.maxY-e.globals.minYArr<4?t.toFixed(1):t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}])&>(e.prototype,i),t}();function pt(t,e){for(var i=0;i4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",n=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],o=this.w,l=void 0===t[a]?"":t[a],c=l,h=o.globals.xLabelFormatter,d=o.config.xaxis.labels.formatter,u=!1,g=new ft(this.ctx),f=l;n&&(c=g.xLabelFormat(h,l,f,{i:a,dateFormatter:new R(this.ctx).formatDate,w:o}),void 0!==d&&(c=d(l,t[a],{i:a,dateFormatter:new R(this.ctx).formatDate,w:o})));var p=function(t){var i=null;return e.forEach((function(t){"month"===t.unit?i="year":"day"===t.unit?i="month":"hour"===t.unit?i="day":"minute"===t.unit&&(i="hour")})),i===t};e.length>0?(u=p(e[a].unit),i=e[a].position,c=e[a].value):"datetime"===o.config.xaxis.type&&void 0===d&&(c=""),void 0===c&&(c=""),c=Array.isArray(c)?c:c.toString();var x=new b(this.ctx),v={};v=o.globals.rotateXLabels&&n?x.getTextRects(c,parseInt(r,10),null,"rotate(".concat(o.config.xaxis.labels.rotate," 0 0)"),!1):x.getTextRects(c,parseInt(r,10));var m=!o.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(c)&&(0===c.indexOf("NaN")||0===c.toLowerCase().indexOf("invalid")||c.toLowerCase().indexOf("infinity")>=0||s.indexOf(c)>=0&&m)&&(c=""),{x:i,text:c,textRect:v,isBold:u}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var n=s[s.length-1];e.x0){!0===o.config.yaxis[s].opposite&&(t+=a.width);for(var h=e;h>=0;h--){var d=c+e/10+o.config.yaxis[s].labels.offsetY-1;o.globals.isBarHorizontal&&(d=r*h),"heatmap"===o.config.chart.type&&(d+=r/2);var u=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);n.add(u),c+=r}}}}],i&&pt(e.prototype,i),t}();function bt(t){return function(t){if(Array.isArray(t))return vt(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return vt(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?vt(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function vt(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i=10?c.config.chart.toolbar.export.csv.dateFormatter(s):n.isNumber(s)?s:s.split(r).join("")));for(var o=0;o0&&!a.globals.isBarHorizontal&&(this.xaxisLabels=a.globals.timescaleLabels.slice()),a.config.xaxis.overwriteCategories&&(this.xaxisLabels=a.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===a.config.xaxis.position?this.offY=0:this.offY=a.globals.gridHeight+1,this.offY=this.offY+a.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===a.config.chart.type&&a.config.plotOptions.bar.horizontal,this.xaxisFontSize=a.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=a.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=a.config.xaxis.labels.style.colors,this.xaxisBorderWidth=a.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=a.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=a.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=a.config.xaxis.axisBorder.height,this.yaxis=a.config.yaxis[0]}var e,i;return e=t,i=[{key:"drawXaxis",value:function(){var t=this.w,e=new b(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},c=[],h=[],d=this.w,u=l.xaxisFontSize||this.xaxisFontSize,g=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;n=d.globals.gridWidth/y,b=b+r(0,n)/2+d.config.xaxis.labels.offsetX}else n=d.globals.gridWidth/m,b=b+r(0,n)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,n)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&n/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=o.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,c,u,t),w=28;if(d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(u)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?o.axesUtils.checkLabelBasedOnTickamount(s,y,v):o.axesUtils.checkForOverflowingLabels(s,y,v,c,h),t&&y.text&&d.globals.xaxisLabelsCount++,d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:o.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:p,fontSize:u,fontFamily:g,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,o.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(c.push(y.text),h.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var n=new b(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(n),n.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var c=s[s.length-1].getBBox(),h=s[0].getBBox();c.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),h.x+h.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}var e,i;return e=t,i=[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new b(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new b(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,n=0,o=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(n=t.config.grid.padding.left,o=t.config.grid.padding.right,e.barPadForNumericAxis>n&&(n=e.barPadForNumericAxis,o=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-n-2,-a/2,e.gridWidth+a+o+n+4,e.gridHeight+a,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var c=e.dom.baseEl.querySelector("defs");c.appendChild(e.dom.elGridRectMask),c.appendChild(e.dom.elForecastMask),c.appendChild(e.dom.elNonForecastMask),c.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,n=t.xCount,o=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===n-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:n,parent:o});var c=0;if(l.globals.hasGroups&&"between"===l.config.xaxis.tickPlacement){var h=l.globals.groups;if(h){for(var d=0,u=0;d2));s++);return!t.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,n=0,o=0;n=i.config.grid.row.colors.length&&(o=0),this._drawGridBandRect({c:o,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,c=i.globals.padHorizontal,h=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,u=0,g=0;u=i.config.grid.column.colors.length&&(g=0),this._drawGridBandRect({c:g,x1:c,y1:0,x2:h,y2:d,type:"column"}),c+=i.globals.gridWidth/l}}],i&&At(e.prototype,i),t}();const Ct=St;function Pt(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,o=Math.abs(e-t);if("dataPoints"===(i=this._adjustTicksForSmallRange(i,a,o))&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!n.isNumber(t)&&!n.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE){t=0,e=i;var l=this.linearScale(t,e,i);return l}t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var c=[];o<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||"boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var d=o/h,u=Math.floor(n.log10(d)),g=Math.pow(10,u),f=Math.round(d/g);f<1&&(f=1);var p=f*g,x=p*Math.floor(t/p),b=p*Math.ceil(e/p),v=x;if(s&&o>2){for(;c.push(v),!((v+=p)>b););return{result:c,niceMin:c[0],niceMax:c[c.length-1]}}var m=t;(c=[]).push(m);for(var y=Math.abs(e-t)/i,w=0;w<=i;w++)m+=y,c.push(m);return c[c.length-2]>=e&&c.pop(),{result:c,niceMin:c[0],niceMax:c[c.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,s))&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var n=[],o=t;i>=0;)n.push(o),o+=r,i-=1;return{result:n,niceMin:n[0],niceMax:n[n.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(e,i,r.logBase),a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase);else if(i!==-Number.MAX_VALUE&&n.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var l=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:o<5&&o>1?o+1:5,t,l)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount,t);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&n.isNumber(e)?a.xAxisScale=this.linearScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,n){var o=n;i.series.forEach((function(t,i){t.name===e.seriesName&&(o=i,n!==i?r.push({index:i,similarIndex:n,alreadyExists:!0}):r.push({index:i}))}));var l=a[o],c=s[o];t.setYScaleForIndex(n,l,c)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,n=[];i.forEach((function(t){t.alreadyExists&&(void 0===n[t.index]&&(n[t.index]=[]),n[t.index].push(t.index),n[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=n,n.forEach((function(t,e){n.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(n[e]=n[e].concat(n[a]))}))}));var o=n.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));n=n.filter((function(t){return!!t}));var l=o.slice(),c=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return c.indexOf(JSON.stringify(t))===e}));var h=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===h[s]&&(h[s]=[],d[s]=[]),h[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);h.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.min(t.value,u[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.max(t.value,g[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var n=u[i],o=g[i];s.chart.stacked&&(o=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(o+=t.value),n!==Number.MIN_VALUE&&(n+=h[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(n="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(o="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,n,o))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,n){for(var o=0,l=0;l=i.xaxis.min){o=l;break}var c,h,d=a.globals.minYArr[n],u=a.globals.maxYArr[n],g=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(n,l){var f=n[o];r?(f=g[o],c=h=f,g.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>h&&null!==t&&(h=t),n[e]=i.xaxis.min){var r=t,n=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),n=Math.max(i[e],n))})),n>h&&null!==n&&(h=n),rd&&(c=d),e.length>1?(e[l].min=void 0===t.min?c:t.min,e[l].max=void 0===t.max?h:t.max):(e[0].min=void 0===t.min?c:t.min,e[0].max=void 0===t.max?h:t.max)}))})),e}}],i&&Pt(e.prototype,i),t}();function Ot(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,l=Number.MIN_VALUE;null===a&&(a=t+1);var c=r.series,h=c,d=c;"candlestick"===s.chart.type?(h=r.seriesCandleL,d=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,d=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,d=r.seriesRangeEnd);for(var u=t;uh[u][g]&&h[u][g]<0&&(l=h[u][g])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(l=e),"bar"===s.chart.type&&(l<0&&o<0&&(o=0),l===Number.MIN_VALUE&&(l=0)),{minY:l,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10||void 0!==e.yaxis[0].min||void 0!==e.yaxis[0].max)&&(n=0),t.minY=i-5*n/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*n/100}return e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal&&["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])})),t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this.w.globals,e=[],i=[];if(t.series.length)for(var a=0;a0?s=s+parseFloat(t.series[o][a])+1e-4:r+=parseFloat(t.series[o][a])),o===t.series.length-1&&(e.push(s),i.push(r));for(var l=0;l=0;v--)x(v);if(void 0!==i.config.yaxis[t].title.text){var m=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});m.add(w),l.add(m)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,h,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new b(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,n=e.globals.gridWidth/r+.1,o=n+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,c=e.globals.yAxisScale[t].result.slice(),h=e.globals.timescaleLabels;h.length>0&&(this.xaxisLabels=h.slice(),r=(c=h.slice()).length),c=this.axesUtils.checkForReversedLabels(t,c);var d=h.length;if(e.config.xaxis.labels.show)for(var u=d?0:r;d?u=0;d?u++:u--){var g=c[u];g=l(g,u,e);var f=e.globals.gridWidth+e.globals.padHorizontal-(o-n+e.config.xaxis.labels.offsetX);if(h.length){var p=this.axesUtils.getLabel(c,h,f,u,this.drawnLabels,this.xaxisFontSize);f=p.x,g=p.text,this.drawnLabels.push(p.text),0===u&&e.globals.skipFirstTimelinelabel&&(g=""),u===c.length-1&&e.globals.skipLastTimelinelabel&&(g="")}var x=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:g,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(g);var v=document.createElementNS(e.globals.SVGNS,"title");v.textContent=g,x.node.appendChild(v),o+=n}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new b(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new b(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new b(this.ctx),s={width:0,height:0},r={width:0,height:0},n=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==n&&(s=n.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==o&&(r=o.getBoundingClientRect()),null!==o){var l=this.xPaddingForYAxisTitle(t,s,r,e);o.setAttribute("x",l.xPos-(e?10:0))}if(null!==o){var c=a.rotateAroundCenter(o);o.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(c.x," ").concat(c.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,n=0,o=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:n,padd:0}:(a?(n=e.width+s.config.yaxis[t].title.offsetX+i.width/2+o/2,0===(r+=1)&&(n-=o/2)):(n=-1*e.width+s.config.yaxis[t].title.offsetX+o/2+i.width/2,s.globals.isBarHorizontal&&(o=25,n=-1*e.width-s.config.yaxis[t].title.offsetX-o)),{xPos:n,padd:o})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,n=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(o,l){var c=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!o.show||o.floating||0===t[l].width,h=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-o.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+n,c||(n=n+h+20),i.globals.translateYAxisX[l]=s-o.labels.offsetX+20):(a=i.globals.translateX-r,c||(r=r+h+20),i.globals.translateYAxisX[l]=a+o.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=n.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=n.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}])&&It(e.prototype,i),t}();function zt(t,e){for(var i=0;i0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=n.extend(T,i);this.w.globals.locale=a.options}}])&&Yt(e.prototype,i),t}();function Rt(t,e){for(var i=0;ie.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new U({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var l=y.extendArrayProps(r,i.globals.initialConfig,i);t=n.extend(l,t),t=n.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var c=0;c0&&"function"==typeof e.config.colors[0]&&(e.globals.colors=e.config.series.map((function(i,a){var s=e.config.colors[a];return s||(s=e.config.colors[0]),"function"==typeof s?(t.isColorFn=!0,s({value:e.globals.axisCharts?e.globals.series[a][0]?e.globals.series[a][0]:0:e.globals.series[a],seriesIndex:a,dataPointIndex:a,w:e})):s})))),e.globals.seriesColors.map((function(t,i){t&&(e.globals.colors[i]=t)})),e.config.theme.monochrome.enabled){var a=[],s=e.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(s=e.globals.series[0].length*e.globals.series.length);for(var r=e.config.theme.monochrome.color,o=1/(s/e.config.theme.monochrome.shadeIntensity),l=e.config.theme.monochrome.shadeTo,c=0,h=0;h2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.length)&&(e=t.length);for(var i=0,a=new Array(e);it.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,function(t){return function(t){if(Array.isArray(t))return Ut(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Ut(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Ut(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(a));i=e[a.indexOf(s)]}return i}}])&&qt(e.prototype,i),t}();function $t(t,e){for(var i=0;i0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=n.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var l=new ft(this.dCtx.ctx),c=r;r=l.xLabelFormat(s,r,c,{i:void 0,dateFormatter:new R(this.dCtx.ctx).formatDate,w:e}),o=l.xLabelFormat(s,o,c,{i:void 0,dateFormatter:new R(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new b(this.dCtx.ctx),d=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),u=d;if(r!==o&&(u=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:d.width>=u.width?d.width:u.width,height:d.height>=u.height?d.height:u.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};d=g(r),r!==o&&(u=g(o)),t.height=(d.height>u.height?d.height:u.height)/1.5,t.width=d.width>u.width?d.width:u.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=n.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),l=new b(this.dCtx.ctx),c=l.getTextRects(r,a),h=c;return r!==o&&(h=l.getTextRects(o,a)),i={width:c.width>=h.width?c.width:h.width,height:c.height>=h.height?c.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new b(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new b(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,n=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var o=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal;s.yaxis.forEach((function(t,l){o?(e.dCtx.gridPad.left0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-h&&(a.skipLastTimelinelabel=!0),c<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:n/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.rightString(l.niceMax).length?d:l.niceMax,g=h(u,{seriesIndex:o,dataPointIndex:-1,w:e}),f=g;if(void 0!==g&&0!==g.length||(g=u),e.globals.isBarHorizontal){a=0;var p=e.globals.labels.slice();g=h(g=n.getLargestStringFromArr(p),{seriesIndex:o,dataPointIndex:-1,w:e}),f=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,p)}var x=new b(t.dCtx.ctx),v="rotate(".concat(r.labels.rotate," 0 0)"),m=x.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,v,!1),y=m;g!==f&&(y=x.getTextRects(f,r.labels.style.fontSize,r.labels.style.fontFamily,v,!1)),i.push({width:(c>y.width||c>m.width?c:y.width>m.width?y.width:m.width)+a,height:y.height>m.height?y.height:m.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new b(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),n=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:n.width,height:n.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new xt(this.dCtx.ctx),n=function(n,o){var l=t.config.yaxis[o].floating,c=0;n.width>0&&!l?(c=n.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(o)&&(c=c-n.width-s)):c=l||r.isYAxisHidden(o)?0:5,t.config.yaxis[o].opposite?a+=c:i+=c,e+=c};return t.globals.yLabelsCoords.map((function(t,e){n(t,e)})),t.globals.yTitleCoords.map((function(t,e){n(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}])&&Qt(e.prototype,i),t}();function te(t,e){for(var i=0;i0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var n,o,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),n=l/t,e.globals.minXDiff&&e.globals.minXDiff/n>0&&(o=e.globals.minXDiff/n),o>t/2&&(o/=2),(s=o/r*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new xt(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}])&&te(e.prototype,i),t}();function ie(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i,a,s=(a=2,function(t){if(Array.isArray(t))return t}(i=e)||function(t,e){var i=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=i){var a,s,r=[],n=!0,o=!1;try{for(i=i.call(t);!(n=(a=i.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){o=!0,s=t}finally{try{n||null==i.return||i.return()}finally{if(o)throw s}}return r}}(i,a)||function(t,e){if(t){if("string"==typeof t)return ie(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?ie(t,e):void 0}}(i,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=s[0],n=s[1];t.gridPad[r]=Math.max(n,t.w.globals.markers.largestSize/1.5)})),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),n=this.dimXAxis.getxAxisGroupLabelsCoords(),o=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,o,n),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,c=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-o.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var h=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,c=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,c=0,h=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-c-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(h=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=h,d();break;case"top":i.translateY=this.lgRect.height+h,d();break;case"left":i.translateY=h,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=h,i.translateX=l,i.gridHeight=i.svgHeight-c-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new Mt(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,n=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=n+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=n+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasGroups?2:1,r=i.height+t.height+e.height,n=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,o=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*n+s*o+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeighth&&(this.yAxisWidth=h)}}])&&ae(e.prototype,i),t}();function re(t,e){for(var i=0;i0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}])&&re(e.prototype,i),t}();function oe(t,e){for(var i=0;i1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),n.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,l=e.config.legend.inverseOrder,c=l?a.length-1:0;l?c>=0:c<=a.length-1;l?c--:c++){var h=o(a[c],{seriesIndex:c,w:e}),d=!1,u=!1;if(e.globals.collapsedSeries.length>0)for(var g=0;g0)for(var f=0;f0?l-10:0)+(c>0?c-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,n=n+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=n+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px"),["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new se(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new ht(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new ht(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}])&&oe(e.prototype,i),t}();var ce=i(798),he=i.n(ce),de=i(688),ue=i.n(de),ge=i(149),fe=i.n(ge),pe=i(323),xe=i.n(pe),be=i(686),ve=i.n(be),me=i(618),ye=i.n(me),we=i(355),ke=i.n(we);function Ae(t,e){for(var i=0;i0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,n=void 0===r?0:r,o=t.translateY,l=void 0===o?0:o,c=this.w,h=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==c.globals.selection){var u={transform:"translate("+n+", "+l+")"};c.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),h.attr({x:e,y:i,width:a,height:s,fill:c.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":c.config.chart.zoom.zoomedArea.fill.opacity,stroke:c.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":c.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":c.config.chart.zoom.zoomedArea.stroke.opacity}),b.setAttrs(h.node,u)),c.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:c.config.chart.selection.fill.color,"fill-opacity":c.config.chart.selection.fill.opacity,stroke:c.config.chart.selection.stroke.color,"stroke-width":c.config.chart.selection.stroke.width,"stroke-dasharray":c.config.chart.selection.stroke.dashArray,"stroke-opacity":c.config.chart.selection.stroke.opacity}),b.setAttrs(d.node,u))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e,i=t.context,a=t.zoomtype,s=this.w,r=i,n=this.gridRect.getBoundingClientRect(),o=r.startX-1,l=r.startY,c=!1,h=!1,d=r.clientX-n.left-o,u=r.clientY-n.top-l;return Math.abs(d+o)>s.globals.gridWidth?d=s.globals.gridWidth-o:r.clientX-n.left<0&&(d=o),o>r.clientX-n.left&&(c=!0,d=Math.abs(d)),l>r.clientY-n.top&&(h=!0,u=Math.abs(u)),e="x"===a?{x:c?o-d:o,y:0,width:d,height:s.globals.gridHeight}:"y"===a?{x:0,y:h?l-u:l,width:s.globals.gridWidth,height:u}:{x:c?o-d:o,y:h?l-u:l,width:d,height:u},r.drawSelectionRect(e),r.selectionDragging("resizing"),e}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,n=0;"resizing"===t&&(n=30);var o=function(t){return parseFloat(r.node.getAttribute(t))},l={x:o("x"),y:o("y"),width:o("width"),height:o("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),n={xaxis:{min:a.globals.xAxisScale.niceMin+(e.left-t.left)*s.xRatio,max:a.globals.xAxisScale.niceMin+(e.right-t.left)*s.xRatio},yaxis:{min:a.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*s.yRatio[0],max:a.globals.yAxisScale[0].niceMax-(e.top-t.top)*s.yRatio[0]}};a.config.chart.events.selection(i.ctx,n),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,n)}),n))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var l=s.startX;s.startX=s.endX,s.endX=l}if(s.startY>s.endY){var c=s.startY;s.startY=s.endY,s.endY=c}var h=void 0,d=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,d=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,d=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var u=[],g=[];if(a.config.yaxis.forEach((function(t,e){u.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==d)if(a.globals.zoomEnabled){var f=n.clone(a.globals.initialConfig.yaxis),p=n.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),d=Math.floor(d),h<1&&(h=1,d=a.globals.dataPoints),d-h<2&&(d=h+1)),"xy"!==i&&"x"!==i||(p={min:h,max:d}),"xy"!==i&&"y"!==i||f.forEach((function(t,e){f[e].min=g[e],f[e].max=u[e]})),a.config.chart.zoom.autoScaleYaxis){var x=new Lt(s.ctx);f=x.autoScaleY(s.ctx,f,{xaxis:p})}if(o){var b=o.getBeforeZoomRange(p,f);b&&(p=b.xaxis?b.xaxis:p,f=b.yaxis?b.yaxis:f)}var v={xaxis:p};a.config.chart.group||(v.yaxis=f),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(p,f)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:d},"xy"!==i&&"y"!==i||(y=n.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=u[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var n=i.globals.isRangeBar?i.globals.minY:i.globals.minX,o=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(n,o)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=n.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,l=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,l=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=l+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=l-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=l);var c={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new Lt(this.ctx).autoScaleY(this.ctx,s,{xaxis:c}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}])&&Pe(e.prototype,i),o}(Se);function Ie(t){return function(t){if(Array.isArray(t))return Me(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return Me(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Me(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Me(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);il||f>c?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var p=Math.round(g/h),x=Math.floor(f/d);u&&!r.config.xaxis.convertedCatToNumeric&&(p=Math.ceil(g/h),p-=1);var b=null,v=null,m=[],y=[];if(r.globals.seriesXvalues.forEach((function(t){m.push([t[0]+1e-6].concat(t))})),r.globals.seriesYvalues.forEach((function(t){y.push([t[0]+1e-6].concat(t))})),m=m.map((function(t){return t.filter((function(t){return n.isNumber(t)}))})),y=y.map((function(t){return t.filter((function(t){return n.isNumber(t)}))})),r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/l),A=f*(w.height/c);b=(v=this.closestInMultiArray(k,A,m,y)).index,p=v.j,null!==b&&(m=r.globals.seriesXvalues[b],p=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!p||p<1)&&(p=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=x:r.globals.capturedDataPointIndex=p,{capturedSeries:b,j:r.globals.isBarHorizontal?x:p,hoverX:g,hoverY:f}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,n=null,o=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):n=0;var l=i[r][0],c=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a0?e:-1})),s=0;s0)for(var a=0;ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
    ".concat(i.val,"
    ")})),v.innerHTML=t+"",m.innerHTML=e+""};n?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==f&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==f?f:""),n&&p[0]&&(null==h||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?p[0].parentNode.style.display="none":p[0].parentNode.style.display=l.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",n="",o=null,l=null,c={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},h=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;return r=a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?new ft(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new R(this.ctx).formatDate,w:this.w}):a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,c):a.globals.xLabelFormatter(d,c),void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,c)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(o=h(a.globals.seriesZ[e][i],a)),n="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,c):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(n)?n.join(" "):n,zVal:o}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,n=this.ttCtx.getElTooltip(),o=r.config.tooltip.custom;Array.isArray(o)&&o[e]&&(o=o[e]),n.innerHTML=o({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}])&&Fe(e.prototype,i),t}();function Ne(t,e){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,n=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/n*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var o=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(o=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&b.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&b.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a,s=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;t-=i.xaxisTooltip.getBoundingClientRect().width/2,isNaN(t)||(t+=e.globals.translateX,a=new b(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=a.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=s+"px")}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,n=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(n-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=n+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),n=s.tooltipRect,o=null!==i?parseFloat(i):1,l=parseFloat(t)+o+5,c=parseFloat(e)+o/2;if(l>a.globals.gridWidth/2&&(l=l-n.ttWidth-o-10),l>a.globals.gridWidth-n.ttWidth-10&&(l=a.globals.gridWidth-n.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var h=s.getElGrid(),d=h.getBoundingClientRect();c=s.e.clientY+a.globals.translateY-d.top-n.ttHeight/2}else a.globals.isBarHorizontal||(n.ttHeight/2+c>a.globals.gridHeight&&(c=a.globals.gridHeight-n.ttHeight+a.globals.translateY),c<0&&(c=0));isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=c+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(c.setAttribute("r",o),c.setAttribute("cx",i),c.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,o)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,n=a.globals.pointsArray;e=new ht(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var o=i.tooltipUtil.getHoverMarkerSize(e);n[e]&&(s=n[e][t][0],r=n[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var c=0;c0?(l[c]&&l[c].setAttribute("r",o),l[c]&&l[c].setAttribute("cy",d)):l[c]&&l[c].setAttribute("r",0)}}if(this.moveXCrosshairs(s),!i.fixedTooltip){var f=r||a.globals.gridHeight;this.moveTooltip(s,f,o)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e=this.w,i=this.ttCtx,a=e.globals.columnSeries?e.globals.columnSeries.length:e.globals.series.length,s=a>=2&&a%2==0?Math.floor(a/2):Math.floor(a/2)+1;e.globals.isBarHorizontal&&(s=new ht(this.ctx).getActiveConfigSeriesIndex("desc")+1);var r=e.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(s,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"']")),n=r?parseFloat(r.getAttribute("cx")):0,o=r?parseFloat(r.getAttribute("cy")):0,l=r?parseFloat(r.getAttribute("barWidth")):0,c=r?parseFloat(r.getAttribute("barHeight")):0,h=i.getElGrid().getBoundingClientRect(),d=r.classList.contains("apexcharts-candlestick-area")||r.classList.contains("apexcharts-boxPlot-area");if(e.globals.isXNumeric?(r&&!d&&(n-=a%2!=0?l/2:0),r&&d&&e.globals.comboCharts&&(n-=l/2)):e.globals.isBarHorizontal||(n=i.xAxisTicksPositions[t-1]+i.dataPointsDividedWidth/2,isNaN(n)&&(n=i.xAxisTicksPositions[t]-i.dataPointsDividedWidth/2)),e.globals.isBarHorizontal?(o>e.globals.gridHeight/2&&(o-=i.tooltipRect.ttHeight),(o=o+e.config.grid.padding.top+c/3)+c>e.globals.gridHeight&&(o=e.globals.gridHeight-c)):e.config.tooltip.followCursor?o=i.e.clientY-h.top-i.tooltipRect.ttHeight/2:o+i.tooltipRect.ttHeight+15>e.globals.gridHeight&&(o=e.globals.gridHeight),o<-10&&(o=-10),e.globals.isBarHorizontal||this.moveXCrosshairs(n),!i.fixedTooltip){var u=o||e.globals.gridHeight;this.moveTooltip(n,u)}}}],i&&Ne(e.prototype,i),t}();function je(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),n=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,n=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var o=this.ttCtx.getElGrid(),l=o.getBoundingClientRect();r=this.ttCtx.e.clientX-l.left}this.tooltipPosition.moveTooltip(r,n,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=e.config.markers.hover.size,o=0;o=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}],i&&Be(e.prototype,i),t}();function Ve(t,e){for(var i=0;io.globals.gridWidth/2&&(a=h-n.tooltipRect.ttWidth/2+u),n.w.config.tooltip.followCursor){var f=o.globals.dom.elWrap.getBoundingClientRect();a=o.globals.clientX-f.left-(a>o.globals.gridWidth/2?n.tooltipRect.ttWidth:0),s=o.globals.clientY-f.top-(s>o.globals.gridHeight/2?n.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,l=this.w,c=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),d=parseInt(s.paths.getAttribute("cy"),10),u=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,c.intersect){var g=n.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(c.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!c.showOnIntersect&&l.config.tooltip.shared,e:a}),"mouseup"===a.type&&c.markerClick(a,e,i),l.globals.capturedSeriesIndex=e,l.globals.capturedDataPointIndex=i,r=h,o=d+l.globals.translateY-1.4*c.tooltipRect.ttHeight,c.w.config.tooltip.followCursor){var f=c.getElGrid().getBoundingClientRect();o=c.e.clientY+l.globals.translateY-f.top}u<0&&(o=d),c.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=this.ttCtx,o=n.getElTooltip(),l=0,c=0,h=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var u=d.barHeight,g=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=g,r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||!r.config.tooltip.shared?(c=d.x,h=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=c):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(h)?h=r.globals.svgHeight-n.tooltipRect.ttHeight:h<0&&(h=0);var f=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),p=r.globals.isMultipleYAxis?r.config.yaxis[f]&&r.config.yaxis[f].reversed:r.config.yaxis[0].reversed;if(c+n.tooltipRect.ttWidth>r.globals.gridWidth&&!p?c-=n.tooltipRect.ttWidth:c<0&&(c=0),n.w.config.tooltip.followCursor){var x=n.getElGrid().getBoundingClientRect();h=n.e.clientY-x.top}null===n.tooltip&&(n.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?n.tooltipPosition.moveXCrosshairs(l+i/2):n.tooltipPosition.moveXCrosshairs(l)),!n.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars())&&(p&&(c-=n.tooltipRect.ttWidth)<0&&(c=0),!p||r.globals.isBarHorizontal&&n.tooltipUtil.hasBars()||(h=h+u-2*(r.globals.series[e][g]<0?u:0)),n.tooltipRect.ttHeight+h>r.globals.gridHeight?h=r.globals.gridHeight-n.tooltipRect.ttHeight+r.globals.translateY:(h=h+r.globals.translateY-n.tooltipRect.ttHeight/2)<0&&(h=0),o.style.left=c+r.globals.translateX+"px",o.style.top=h+"px")}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,a=this.w,s=null,r=this.ttCtx,n=0,o=0,l=0,c=0,h=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-boxPlot-area")||d.contains("apexcharts-rangebar-area")){var u=e.target,g=u.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=g.height;h=g.height;var x=g.width,b=parseInt(u.getAttribute("cx"),10),v=parseInt(u.getAttribute("cy"),10);c=parseFloat(u.getAttribute("barWidth"));var m="touchmove"===e.type?e.touches[0].clientX:e.clientX;s=parseInt(u.getAttribute("j"),10),n=parseInt(u.parentNode.getAttribute("rel"),10)-1;var y=u.getAttribute("data-range-y1"),w=u.getAttribute("data-range-y2");a.globals.comboCharts&&(n=parseInt(u.parentNode.getAttribute("data:realIndex"),10)),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:n,j:s,y1:y?parseInt(y,10):null,y2:w?parseInt(w,10):null,shared:!r.showOnIntersect&&a.config.tooltip.shared,e}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(o=m-f.left+15,l=v-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(o=a.globals.isXNumeric?b-x/2:b-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((o=b)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var n=a.getElGrid().getBoundingClientRect(),o=(e-n.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],c=s.globals.minYArr[t]+(l-o);a.tooltipPosition.moveYCrosshairs(e-n.top),a.yaxisTooltipText[t].innerHTML=r(c),a.tooltipPosition.moveYAxisTooltip(t)}}}])&&Ue(e.prototype,i),t}();function Ze(t,e){for(var i=0;i0&&this.addPathsEventListeners(g,h),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(h)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,n=this.tConfig.fixed.offsetY,o=this.tConfig.fixed.position.toLowerCase();return o.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),o.indexOf("bottom")>-1&&(n=n+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=n+"px",{x:r,y:n,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,n=this.getElTooltip();n&&(i.tooltipRect={x:0,y:0,ttWidth:n.getBoundingClientRect().width,ttHeight:n.getBoundingClientRect().height},i.e=s,!i.tooltipUtil.hasBars()||r.globals.comboCharts||i.isBarShared||this.tConfig.onDatasetHover.highlightDataSeries&&new ht(e).toggleSeriesOnHover(s,s.target.parentNode),i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}))}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,n=s.elGrid.getBoundingClientRect(),o="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=o,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,ln.top+n.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var c=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(c)<0)return void this.handleMouseOut(s)}var h=this.getElTooltip(),d=this.getElXCrosshairs(),u=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var g=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&g.length&&this.ycrosshairs.classList.add("apexcharts-active"),u&&!this.showOnIntersect)this.handleStickyTooltip(a,o,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,h.style.left=e+"px",h.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var p=0;pl.width?this.handleMouseOut(a):null!==o?this.handleStickyCapturedSeries(t,o,a,n):(this.tooltipUtil.isXoverlap(n)||s.globals.isBarHorizontal)&&this.create(t,this,0,n,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;this.tConfig.shared||null!==s.globals.series[e][a]?void 0!==s.globals.series[e][a]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(t,this,0,a,i.ttItems):this.handleMouseOut(i)}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new b(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,n=this.w,o=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===r&&(r=this.tConfig.shared);var l=this.tooltipUtil.hasMarkers(),c=this.tooltipUtil.getElBars();if(n.config.legend.tooltipHoverFormatter){var h=n.config.legend.tooltipHoverFormatter,d=Array.from(this.legendLabels);d.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var u=0;u0?o.marker.enlargePoints(a):o.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(c),this.barSeriesHeight>0)){var v=new b(this.ctx),m=n.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var y=0;ys.globals.gridHeight&&(g=s.globals.gridHeight-v)),{bcx:c,bcy:l,dataLabelsX:e,dataLabelsY:g,totalDataLabelsX:a,totalDataLabelsY:i,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,n=t.bcy,o=t.barHeight,l=t.barWidth,c=t.textRects,h=t.dataLabelsX,d=t.strokeWidth,u=t.dataLabelsConfig,g=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,v=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var m,y,w=n-(this.barCtx.isRangeBar?0:v)+o/2+c.height/2+x-3,k="start",A=this.barCtx.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+l-(A?2*l:0),i=e.globals.gridWidth-l),g.position){case"center":h=A?S+l/2-p:Math.max(c.width/2,S-l/2)+p;break;case"bottom":h=A?S+l-d-Math.round(c.width/2)-p:S-l+d+Math.round(c.width/2)+p;break;case"top":h=A?S-d+Math.round(c.width/2)-p:S-d-Math.round(c.width/2)+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new b(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),u.fontSize);A?(m=S-d+Math.round(C.width/2)-p-f.offsetX-15,k="end"):m=S-d-Math.round(C.width/2)+p+f.offsetX+15,y=w+f.offsetY}return e.config.chart.stacked||(h<0?h=h+c.width+d:h+c.width/2>e.globals.gridWidth&&(h=e.globals.gridWidth-c.width-d)),{bcx:i,bcy:n,dataLabelsX:h,dataLabelsY:w,totalDataLabelsX:m,totalDataLabelsY:y,totalDataLabelsAnchor:k}}},{key:"drawCalculatedDataLabels",value:function(t){var e=t.x,i=t.y,a=t.val,s=t.i,r=t.j,n=t.textRects,o=t.barHeight,l=t.barWidth,c=t.dataLabelsConfig,h=this.w,d="rotate(0)";"vertical"===h.config.plotOptions.bar.dataLabels.orientation&&(d="rotate(-90, ".concat(e,", ").concat(i,")"));var u=new lt(this.barCtx.ctx),g=new b(this.barCtx.ctx),f=c.formatter,p=null,x=h.globals.collapsedSeriesIndices.indexOf(s)>-1;if(c.enabled&&!x){p=g.group({class:"apexcharts-data-labels",transform:d});var v="";void 0!==a&&(v=f(a,Qe(Qe({},h),{},{seriesIndex:s,dataPointIndex:r,w:h})));var m=h.globals.series[s][r]<0,y=h.config.plotOptions.bar.dataLabels.position;"vertical"===h.config.plotOptions.bar.dataLabels.orientation&&("top"===y&&(c.textAnchor=m?"end":"start"),"center"===y&&(c.textAnchor="middle"),"bottom"===y&&(c.textAnchor=m?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels&&lMath.abs(l)&&(v=""):n.height/1.6>Math.abs(o)&&(v=""));var w=Qe({},c);this.barCtx.isHorizontal&&a<0&&("start"===c.textAnchor?w.textAnchor="end":"end"===c.textAnchor&&(w.textAnchor="start")),u.plotDataLabelsText({x:e,y:i,text:v,i:s,j:r,parent:p,dataLabelsConfig:w,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return p}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.realIndex,n=t.textAnchor,o=t.barTotalDataLabelsConfig,l=new b(this.barCtx.ctx);return o.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===r&&(e=l.drawText({x:i,y:a,foreColor:o.style.color,text:s,textAnchor:n,fontFamily:o.style.fontFamily,fontSize:o.style.fontSize,fontWeight:o.style.fontWeight})),e}}])&&ti(e.prototype,i),t}();function ii(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function ai(t,e){for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}n=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:n,zeroW:o}}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,n,o,l=this.w,c=new it(this.barCtx.ctx),h=null,d=this.barCtx.barOptions.distributed?i:e;return this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(h=a.color)})),l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(h=l.config.series[e].data[i].fillColor),c.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:h,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(n=r.fill)&&void 0!==n&&n.type?null===(o=l.config.series[e].data[i])||void 0===o?void 0:o.fill.type:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,n=t.y2,o=t.elSeries,l=this.w,c=new b(this.barCtx.ctx),h=new ht(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&h===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],u=c.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==n?n:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);o.add(u),u.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,n=t.strokeWidth,o=t.realIndex,l=t.i,c=t.j,h=t.w,d=new b(this.barCtx.ctx);(n=Array.isArray(n)?n[o]:n)||(n=0);var u=i,g=a;null!==(e=h.config.series[o].data[c])&&void 0!==e&&e.columnWidthOffset&&(g=a-h.config.series[o].data[c].columnWidthOffset/2,u=i+h.config.series[o].data[c].columnWidthOffset);var f=g,p=g+u;s+=.001,r+=.001;var x=d.move(f,s),v=d.move(f,s),m=d.line(p-n,s);return h.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(o,c,!1)),x=x+d.line(f,r)+d.line(p-n,r)+d.line(p-n,s)+("around"===h.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+d.line(f,s)+m+m+m+m+m+d.line(f,s)+("around"===h.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(o)&&(x=d.roundPathCorners(x,h.config.plotOptions.bar.borderRadius)),h.config.chart.stacked&&(this.barCtx.yArrj.push(r),this.barCtx.yArrjF.push(Math.abs(s-r)),this.barCtx.yArrjVal.push(this.barCtx.series[l][c])),{pathTo:x,pathFrom:v}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,n=t.strokeWidth,o=t.realIndex,l=t.i,c=t.j,h=t.w,d=new b(this.barCtx.ctx);(n=Array.isArray(n)?n[o]:n)||(n=0);var u=i,g=a;null!==(e=h.config.series[o].data[c])&&void 0!==e&&e.barHeightOffset&&(u=i-h.config.series[o].data[c].barHeightOffset/2,g=a+h.config.series[o].data[c].barHeightOffset);var f=u,p=u+g;s+=.001,r+=.001;var x=d.move(s,f),v=d.move(s,f);h.globals.previousPaths.length>0&&(v=this.barCtx.getPreviousPath(o,c,!1));var m=d.line(s,p-n);return x=x+d.line(r,f)+d.line(r,p-n)+m+("around"===h.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),v=v+d.line(s,f)+m+m+m+m+m+d.line(s,f)+("around"===h.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(o)&&(x=d.roundPathCorners(x,h.config.plotOptions.bar.borderRadius)),h.config.chart.stacked&&(this.barCtx.xArrj.push(r),this.barCtx.xArrjF.push(Math.abs(s-r)),this.barCtx.xArrjVal.push(this.barCtx.series[l][c])),{pathTo:x,pathFrom:v}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a=0;n--)this.barCtx.zeroSerieses.indexOf(n)>-1&&n===this.radiusOnSeriesNumber&&(this.barCtx.radiusOnSeriesNumber-=1);for(var o=e.length-1;o>=0;o--)i.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber)>-1&&(this.barCtx.radiusOnSeriesNumber-=1)}},{key:"getXForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),a}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),a}},{key:"getGoalValues",value:function(t,e,i,a,s){var r=this,n=this.w,o=[];return n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach((function(a){var s;o.push((ii(s={},t,"x"===t?r.getXForValue(a.value,e,!1):r.getYForValue(a.value,i,!1)),ii(s,"attrs",a),s))})),o}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,n=t.barHeight,o=new b(this.barCtx.ctx),l=o.group({className:"apexcharts-bar-goals-groups"}),c=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:n/2,a=i+e+n/2;c=o.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(c)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;c=o.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(c)})),l}}],i&&ai(e.prototype,i),t}();function ri(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function ni(t){for(var e=1;ethis.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var o=0,l=0;o0&&(this.visibleI=this.visibleI+1);var w=0,k=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var A=this.barHelpers.initialPositions();f=A.y,w=A.barHeight,h=A.yDivision,u=A.zeroW,g=A.x,k=A.barWidth,c=A.xDivision,d=A.zeroH,this.horizontal||x.push(g+k/2);for(var S=a.group({class:"apexcharts-datalabels","data:realIndex":v}),C=a.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),P=0;P0&&x.push(g+k/2),p.push(f);var I=this.barHelpers.getPathFillColor(t,o,P,v);this.renderSeries({realIndex:v,pathFill:I,j:P,i:o,pathFrom:O.pathFrom,pathTo:O.pathTo,strokeWidth:L,elSeries:m,x:g,y:f,series:t,barHeight:w,barWidth:k,elDataLabelsWrap:S,elGoalsMarkers:C,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[v]=x,i.globals.seriesYvalues[v]=p,r.add(m)}return r}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,n=t.pathFrom,o=t.pathTo,l=t.strokeWidth,c=t.elSeries,h=t.x,u=t.y,g=t.y1,f=t.y2,p=t.series,x=t.barHeight,v=t.barWidth,m=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.visibleSeries,A=t.type,S=this.w,C=new b(this.ctx);a||(a=this.barOptions.distributed?S.globals.stroke.colors[s]:S.globals.stroke.colors[e]),S.config.series[r].data[s]&&S.config.series[r].data[s].strokeColor&&(a=S.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var P=s/S.config.chart.animations.animateGradually.delay*(S.config.chart.animations.speed/S.globals.dataPoints)/2.4,L=C.renderPaths({i:r,j:s,realIndex:e,pathFrom:n,pathTo:o,stroke:a,strokeWidth:l,strokeLineCap:S.config.stroke.lineCap,fill:i,animationDelay:P,initialSpeed:S.config.chart.animations.speed,dataChangeSpeed:S.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(A,"-area")});L.attr("clip-path","url(#gridRectMask".concat(S.globals.cuid,")"));var O=S.config.forecastDataPoints;O.count>0&&s>=S.globals.dataPoints-O.count&&(L.node.setAttribute("stroke-dasharray",O.dashArray),L.node.setAttribute("stroke-width",O.strokeWidth),L.node.setAttribute("fill-opacity",O.fillOpacity)),void 0!==g&&void 0!==f&&(L.attr("data-range-y1",g),L.attr("data-range-y2",f)),new d(this.ctx).setSelectionFilter(L,e,s),c.add(L);var T=new ei(this).handleBarDataLabels({x:h,y:u,y1:g,y2:f,i:r,j:s,series:p,realIndex:e,barHeight:x,barWidth:v,barYPosition:m,renderedPath:L,visibleSeries:k});return null!==T.dataLabels&&y.add(T.dataLabels),T.totalDataLabels&&y.add(T.totalDataLabels),c.add(y),w&&c.add(w),c}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,a=t.strokeWidth,s=t.zeroW,r=t.x,n=t.y,o=t.yDivision,l=t.elSeries,c=this.w,h=e.i,d=e.j;c.globals.isXNumeric&&(n=(c.globals.seriesX[h][d]-c.globals.minX)/this.invertedXRatio-i);var u=n+i*this.visibleI;r=this.barHelpers.getXForValue(this.series[h][d],s);var g=this.barHelpers.getBarpaths({barYPosition:u,barHeight:i,x1:s,x2:r,strokeWidth:a,series:this.series,realIndex:e.realIndex,i:h,j:d,w:c});return c.globals.isXNumeric||(n+=o),this.barHelpers.barBackground({j:d,i:h,y1:u-i*this.visibleI,y2:i*this.seriesLen,elSeries:l}),{pathTo:g.pathTo,pathFrom:g.pathFrom,x:r,y:n,goalX:this.barHelpers.getGoalValues("x",s,null,h,d),barYPosition:u}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=t.strokeWidth,l=t.elSeries,c=this.w,h=e.realIndex,d=e.i,u=e.j,g=e.bc;if(c.globals.isXNumeric){var f=h;c.globals.seriesX[h].length||(f=c.globals.maxValsInArrayIndex),i=(c.globals.seriesX[f][u]-c.globals.minX)/this.xRatio-r*this.seriesLen/2}var p=i+r*this.visibleI;a=this.barHelpers.getYForValue(this.series[d][u],n);var x=this.barHelpers.getColumnPaths({barXPosition:p,barWidth:r,y1:n,y2:a,strokeWidth:o,series:this.series,realIndex:e.realIndex,i:d,j:u,w:c});return c.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:g,j:u,i:d,x1:p-o/2-r*this.visibleI,x2:r*this.seriesLen+o/2,elSeries:l}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:i,y:a,goalY:this.barHelpers.getGoalValues("y",null,n,d,u),barXPosition:p}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}])&&li(e.prototype,i),t}();function hi(t){return hi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},hi(t)}function di(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function ui(t){for(var e=1;e0&&(this.totalItems+=t[r].length);for(var o=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),l=0,c=0,h=function(s,r){var h=void 0,d=void 0,u=void 0,g=void 0,f=[],p=[],x=a.globals.comboCharts?e[s]:s;i.yRatio.length>1&&(i.yaxisIndex=x),i.isReversed=a.config.yaxis[i.yaxisIndex]&&a.config.yaxis[i.yaxisIndex].reversed;var b=i.graphics.group({class:"apexcharts-series",seriesName:n.escapeString(a.globals.seriesNames[x]),rel:s+1,"data:realIndex":x});i.ctx.series.addCollapsedClassToSeries(b,x);var v=i.graphics.group({class:"apexcharts-datalabels","data:realIndex":x}),m=i.graphics.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),y=0,w=0,k=i.initialPositions(l,c,h,d,u,g);c=k.y,y=k.barHeight,d=k.yDivision,g=k.zeroW,l=k.x,w=k.barWidth,h=k.xDivision,u=k.zeroH,i.yArrj=[],i.yArrjF=[],i.yArrjVal=[],i.xArrj=[],i.xArrjF=[],i.xArrjVal=[],1===i.prevY.length&&i.prevY[0].every((function(t){return isNaN(t)}))&&(i.prevY[0]=i.prevY[0].map((function(t){return u})),i.prevYF[0]=i.prevYF[0].map((function(t){return 0})));for(var A=0;A1?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:o*parseInt(l.config.plotOptions.bar.columnWidth,10)/100,s=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-o)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:n,barWidth:o,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,n=t.x,o=t.y,l=t.yDivision,c=t.elSeries,h=this.w,d=o,u=i.i,g=i.j,f=0,p=0;p0){var x=r;this.prevXVal[u-1][g]<0?x=this.series[u][g]>=0?this.prevX[u-1][g]+f-2*(this.isReversed?f:0):this.prevX[u-1][g]:this.prevXVal[u-1][g]>=0&&(x=this.series[u][g]>=0?this.prevX[u-1][g]:this.prevX[u-1][g]-f+2*(this.isReversed?f:0)),e=x}else e=r;n=null===this.series[u][g]?e:e+this.series[u][g]/this.invertedYRatio-2*(this.isReversed?this.series[u][g]/this.invertedYRatio:0);var b=this.barHelpers.getBarpaths({barYPosition:d,barHeight:a,x1:e,x2:n,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:u,j:g,w:h});return this.barHelpers.barBackground({j:g,i:u,y1:d,y2:a,elSeries:c}),o+=l,{pathTo:b.pathTo,pathFrom:b.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,u,g),barYPosition:d,x:n,y:o}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,n=t.zeroH,o=(t.strokeWidth,t.elSeries),l=this.w,c=e.i,h=e.j,d=e.bc;if(l.globals.isXNumeric){var u=l.globals.seriesX[c][h];u||(u=0),i=(u-l.globals.minX)/this.xRatio-r/2}for(var g,f=i,p=0,x=0;x0&&!l.globals.isXNumeric||c>0&&l.globals.isXNumeric&&l.globals.seriesX[c-1][h]===l.globals.seriesX[c][h]){var b,v,m=Math.min(this.yRatio.length+1,c+1);if(void 0!==this.prevY[c-1])for(var y=1;y=0?v-p+2*(this.isReversed?p:0):v;break}if(this.prevYVal[c-w][h]>=0){b=this.series[c][h]>=0?v:v+p-2*(this.isReversed?p:0);break}}void 0===b&&(b=l.globals.gridHeight),g=this.prevYF[0].every((function(t){return 0===t}))&&this.prevYF.slice(1,c).every((function(t){return t.every((function(t){return isNaN(t)}))}))?n:b}else g=n;a=g-this.series[c][h]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[c][h]/this.yRatio[this.yaxisIndex]:0);var k=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:g,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:e.realIndex,i:c,j:h,w:l});return this.barHelpers.barBackground({bc:d,j:h,i:c,x1:f,x2:r,elSeries:o}),i+=s,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,n,c,h),barXPosition:f,x:l.globals.isXNumeric?i-s:i,y:a}}}])&&pi(e.prototype,i),o}(ci);const yi=mi;function wi(t){return wi="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},wi(t)}function ki(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function Ai(t){for(var e=1;e0&&(i.visibleI=i.visibleI+1),i.yRatio.length>1&&(i.yaxisIndex=m);var w=i.barHelpers.initialPositions();x=w.y,g=w.barHeight,h=w.yDivision,u=w.zeroW,p=w.x,f=w.barWidth,c=w.xDivision,d=w.zeroH,v.push(p+f/2);for(var k=s.group({class:"apexcharts-datalabels","data:realIndex":m}),A=function(e){var s=i.barHelpers.getStrokeWidth(o,e,m),n=null,l={indexes:{i:o,j:e,realIndex:m},x:p,y:x,strokeWidth:s,elSeries:y};n=i.isHorizontal?i.drawHorizontalBoxPaths(Ai(Ai({},l),{},{yDivision:h,barHeight:g,zeroW:u})):i.drawVerticalBoxPaths(Ai(Ai({},l),{},{xDivision:c,barWidth:f,zeroH:d})),x=n.y,p=n.x,e>0&&v.push(p+f/2),b.push(x),n.pathTo.forEach((function(l,c){var h=!i.isBoxPlot&&i.candlestickOptions.wick.useFillColor?n.color[c]:a.globals.stroke.colors[o],d=r.fillPath({seriesNumber:m,dataPointIndex:e,color:n.color[c],value:t[o][e]});i.renderSeries({realIndex:m,pathFill:d,lineFill:h,j:e,i:o,pathFrom:n.pathFrom,pathTo:l,strokeWidth:s,elSeries:y,x:p,y:x,series:t,barHeight:g,barWidth:f,elDataLabelsWrap:k,visibleSeries:i.visibleI,type:a.config.chart.type})}))},S=0;Sv.c&&(d=!1);var w=Math.min(v.o,v.c),k=Math.max(v.o,v.c),A=v.m;o.globals.isXNumeric&&(i=(o.globals.seriesX[x][h]-o.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[c][h]||null===this.series[c][h]?(w=r,k=r):(w=r-w/p,k=r-k/p,m=r-v.h/p,y=r-v.l/p,A=r-v.m/p);var C=l.move(S,r),P=l.move(S+s/2,w);return o.globals.previousPaths.length>0&&(P=this.getPreviousPath(x,h,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,m)+l.line(S+s/4,m)+l.line(S+s-s/4,m)+l.line(S+s/2,m)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+n/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,m)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-n/2)],P+=l.move(S,w),o.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:P,x:i,y:k,barXPosition:S,color:this.isBoxPlot?f:d?[u]:[g]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes,i=(t.x,t.y),a=t.yDivision,s=t.barHeight,r=t.zeroW,n=t.strokeWidth,o=this.w,l=new b(this.ctx),c=e.i,h=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var u=this.invertedYRatio,g=e.realIndex,f=this.getOHLCValue(g,h),p=r,x=r,v=Math.min(f.o,f.c),m=Math.max(f.o,f.c),y=f.m;o.globals.isXNumeric&&(i=(o.globals.seriesX[g][h]-o.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[c][h]||null===this.series[c][h]?(v=r,m=r):(v=r+v/u,m=r+m/u,p=r+f.h/u,x=r+f.l/u,y=r+f.m/u);var k=l.move(r,w),A=l.move(v,w+s/2);return o.globals.previousPaths.length>0&&(A=this.getPreviousPath(g,h,!0)),k=[l.move(v,w)+l.line(v,w+s/2)+l.line(p,w+s/2)+l.line(p,w+s/2-s/4)+l.line(p,w+s/2+s/4)+l.line(p,w+s/2)+l.line(v,w+s/2)+l.line(v,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(v+n/2,w),l.move(y,w)+l.line(y,w+s)+l.line(m,w+s)+l.line(m,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(m,w+s/2)+l.line(m,w)+l.line(y,w)+"z"],A+=l.move(v,w),o.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:m,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}])&&Pi(e.prototype,i),o}(ci);const Ii=Ei;function Mi(t){return function(t){if(Array.isArray(t))return zi(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return zi(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?zi(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function zi(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,l=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?l.percent<0?l.percent/100*(1.25*o):(1-l.percent/100)*(1.25*o):l.percent<=0?1-(1+l.percent/100)*o:(1-l.percent/100)*o:(r=1-l.percent/100,"treemap"===t&&(r=(1-l.percent/100)*(1.25*o)));var c=l.color,h=new n;return s.config.plotOptions[t].enableShades&&(c="dark"===this.w.config.theme.mode?n.hexToRgba(h.shadeColor(-1*r,l.color),s.config.fill.opacity):n.hexToRgba(h.shadeColor(r,l.color),s.config.fill.opacity)),{color:c,colorProps:l}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],n=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(n=i);var o=a.globals.colors[n],l=null,c=Math.min.apply(Math,Mi(a.globals.series[e])),h=Math.max.apply(Math,Mi(a.globals.series[e]));r.distributed||"heatmap"!==t||(c=a.globals.minY,h=a.globals.maxY),void 0!==r.colorScale.min&&(c=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(h)+Math.abs(c),u=100*s/(0===d?d-1e-6:d);return r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){o=t.color,l=t.foreColor?t.foreColor:null,c=t.from,h=t.to;var i=Math.abs(h)+Math.abs(c);u=100*s/(0===i?i-1e-6:i)}})),{color:o,foreColor:l,percent:u}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,n=t.colorProps,o=t.fontSize,l=this.w.config.dataLabels,c=new b(this.ctx),h=new lt(this.ctx),d=null;if(l.enabled){d=c.group({class:"apexcharts-data-labels"});var u=l.offsetX,g=l.offsetY,f=i+u,p=a+parseFloat(l.style.fontSize)/3+g;h.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:n.foreColor,parent:d,fontSize:o,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new b(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}])&&Xi(e.prototype,i),t}();function Di(t,e){for(var i=0;i=0;l?h++:h--){var u=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:n.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(u,h),e.config.chart.dropShadow.enabled){var g=e.config.chart.dropShadow;new d(this.ctx).dropShadow(u,g,h)}for(var f=0,p=e.config.plotOptions.heatmap.shadeIntensity,x=0;x-1&&this.pieClicked(g),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*p/this.fullAngle+"%";if(0!==p&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+n):a+n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(l=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(l)>this.fullAngle&&(l-=this.fullAngle);var c=Math.PI*(l-90)/180,h=e.centerX+s*Math.cos(o),d=e.centerY+s*Math.sin(o),u=e.centerX+s*Math.cos(c),g=e.centerY+s*Math.sin(c),f=n.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),p=n.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),x=a>180?1:0,b=["M",h,d,"A",s,s,0,x,1,u,g];return"donut"===e.chartType?[].concat(b,["L",f.x,f.y,"A",e.donutSize,e.donutSize,0,x,0,p.x,p.y,"L",h,d,"z"]).join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[].concat(b,["L",e.centerX,e.centerY,"L",h,d]).join(" "):[].concat(b).join(" ")}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new Lt(this.ctx),a=new b(this.ctx),s=new Hi(this.ctx),r=a.group(),n=a.group(),o=i.niceScale(0,Math.ceil(this.maxY),e.config.yaxis[0].tickAmount,0,!0),l=o.result.reverse(),c=o.result.length;this.maxY=o.niceMax;for(var h=e.globals.radialSize,d=h/(c-1),u=0;u1&&t.total.show&&(s=t.total.color);var n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==n&&(n.textContent=e),null!==o&&(o.textContent=i),null!==n&&(n.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new b(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,l=0;l1)n&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!n)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var c=s.globals.selectedDataPoints[0],h=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(c));this.printDataLabelsInner(h,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}])&&Ni(e.prototype,i),t}();function ji(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function Bi(t){for(var e=1;e0&&(x=e.getPreviousPath(o));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var f=i.drawPath({d:"",stroke:h,strokeWidth:n*parseInt(c.strokeWidth,10)/100,fill:"none",strokeOpacity:c.opacity,classes:"apexcharts-radialbar-area"});if(c.dropShadow.enabled){var p=c.dropShadow;s.dropShadow(f,p)}l.add(f),f.attr("id","apexcharts-radialbarTrack-"+o),this.animatePaths(f,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:u,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new b(this.ctx),a=new it(this.ctx),s=new d(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var l=e.config.plotOptions.radialBar.hollow.background,c=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=c-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(l=this.drawHollowImage(t,r,c,l));var u=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:l||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var g=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(u,g)}var f=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(f=0);var p=null;this.radialDataLabels.show&&(p=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:c,centerX:t.centerX,centerY:t.centerY,opacity:f})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(u),p&&r.add(p));var x=!1;e.config.plotOptions.radialBar.inverseOrder&&(x=!0);for(var v=x?t.series.length-1:0;x?v>=0:v100?100:t.series[v])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*n.negToZero(e.globals.previousPaths[v])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var P=S-w,L=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[v]:e.config.stroke.dashArray,O=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+v,strokeDashArray:L});if(b.setAttrs(O.node,{"data:angle":P,"data:value":t.series[v]}),e.config.chart.dropShadow.enabled){var T=e.config.chart.dropShadow;s.dropShadow(O,T,v)}s.setSelectionFilter(O,0,v),this.addListeners(O,this.radialDataLabels),m.add(O),O.attr({index:0,j:v});var E=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(E=e.config.chart.animations.speed),e.globals.dataChanged&&(E=e.config.chart.animations.dynamicAnimation.speed),this.animDur=E/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(O,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:v,totalItems:2,animBeginArr:this.animBeginArr,dur:E,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:u,dataLabels:p}}},{key:"drawHollow",value:function(t){var e=new b(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new it(this.ctx),o=n.randomId(),l=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:l,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var c=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===c&&void 0===h){var d=s.globals.dom.Paper.image(l).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(d)}else{var u=s.globals.dom.Paper.image(l).loaded((function(e){this.move(t.centerX-c/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(c,h)}));e.add(u)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}}])&&Zi(e.prototype,i),o}(Wi);function ta(t){return ta="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ta(t)}function ea(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function ia(t){for(var e=1;e0&&(this.visibleI=this.visibleI+1);var p=0,x=0;this.yRatio.length>1&&(this.yaxisIndex=g);var v=this.barHelpers.initialPositions();d=v.y,c=v.zeroW,h=v.x,x=v.barWidth,o=v.xDivision,l=v.zeroH;for(var m=a.group({class:"apexcharts-datalabels","data:realIndex":g}),y=a.group({class:"apexcharts-rangebar-goals-markers",style:"pointer-events: none"}),w=0;w0}));return a=l.config.plotOptions.bar.rangeBarGroupRows?s+n*u:s+r*this.visibleI+n*u,g>-1&&!l.config.plotOptions.bar.rangeBarOverlap&&(c=l.globals.seriesRange[e][g].overlaps).indexOf(h)>-1&&(a=(r=o.barHeight/c.length)*this.visibleI+n*(100-parseInt(this.barOptions.barHeight,10))/100/2+r*(this.visibleI+c.indexOf(h))+n*u),{barYPosition:a,barHeight:r}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=(t.strokeWidth,t.xDivision),s=t.barWidth,r=t.zeroH,n=this.w,o=e.i,l=e.j,c=this.yRatio[this.yaxisIndex],h=e.realIndex,d=this.getRangeValue(h,l),u=Math.min(d.start,d.end),g=Math.max(d.start,d.end);n.globals.isXNumeric&&(i=(n.globals.seriesX[o][l]-n.globals.minX)/this.xRatio-s/2);var f=i+s*this.visibleI;void 0===this.series[o][l]||null===this.series[o][l]?u=r:(u=r-u/c,g=r-g/c);var p=Math.abs(g-u),x=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:s,y1:u,y2:g,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:h,j:l,w:n});return n.globals.isXNumeric||(i+=a),{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:p,x:i,y:g,goalY:this.barHelpers.getGoalValues("y",null,r,o,l),barXPosition:f}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,n=t.barHeight,o=t.barYPosition,l=t.zeroW,c=this.w,h=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,u=Math.abs(d-h),g=this.barHelpers.getBarpaths({barYPosition:o,barHeight:n,x1:h,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:c});return c.globals.isXNumeric||(i+=r),{pathTo:g.pathTo,pathFrom:g.pathFrom,barWidth:u,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}])&&ra(e.prototype,i),o}(ci);const ha=ca;function da(t,e){for(var i=0;i0&&parseInt(n.realIndex,10)===parseInt(a,10)&&("line"===n.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===n.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i=t.i,a=t.series,s=t.prevY,r=t.lineYPosition,n=this.w;if(void 0!==(null===(e=a[i])||void 0===e?void 0:e[0]))s=(r=n.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(n.config.chart.stacked&&i>0&&void 0===a[i][0])for(var o=i-1;o>=0;o--)if(null!==a[o][0]&&void 0!==a[o][0]){s=r=this.lineCtx.prevSeriesY[o][0];break}return{prevY:s,lineYPosition:r}}}])&&da(e.prototype,i),t}();function ga(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function fa(t){for(var e=1;e0&&(f=(s.globals.seriesX[d][0]-s.globals.minX)/this.xRatio),g.push(f);var p,x=f,v=void 0,m=x,w=this.zeroY,k=this.zeroY;w=this.lineHelpers.determineFirstPrevY({i:h,series:t,prevY:w,lineYPosition:0}).prevY,u.push(w),p=w,"rangeArea"===n&&(v=k=this.lineHelpers.determineFirstPrevY({i:h,series:a,prevY:k,lineYPosition:0}).prevY);var A={type:n,series:t,realIndex:d,i:h,x:f,y:1,pX:x,pY:p,pathsFrom:this._calculatePathsFrom({type:n,series:t,i:h,realIndex:d,prevX:m,prevY:w,prevY2:k}),linePaths:[],areaPaths:[],seriesIndex:i,lineYPosition:0,xArrj:g,yArrj:u,seriesRangeEnd:a},S=this._iterateOverDataPoints(fa(fa({},A),{},{iterations:"rangeArea"===n?t[h].length-1:void 0,isRangeStart:!0}));if("rangeArea"===n){var C=this._calculatePathsFrom({series:a,i:h,realIndex:d,prevX:m,prevY:k}),P=this._iterateOverDataPoints(fa(fa({},A),{},{series:a,pY:v,pathsFrom:C,iterations:a[h].length-1,isRangeStart:!1}));S.linePaths[0]=P.linePath+S.linePath,S.pathFromLine=P.pathFromLine+S.pathFromLine}this._handlePaths({type:n,realIndex:d,i:h,paths:S}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(s.config.chart.stacked)for(var L=c.length;L>0;L--)o.add(c[L-1]);else for(var O=0;O1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:n.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,n=t.series,o=t.i,l=t.realIndex,c=t.prevX,h=t.prevY,d=t.prevY2,u=this.w,g=new b(this.ctx);if(null===n[o][0]){for(var f=0;f0){var p=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=p.pathFromLine,s=p.pathFromArea}return{prevX:c,prevY:h,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var e=t.type,i=t.realIndex,a=t.i,s=t.paths,r=this.w,n=new b(this.ctx),o=new it(this.ctx);this.prevSeriesY.push(s.yArrj),r.globals.seriesXvalues[i]=s.xArrj,r.globals.seriesYvalues[i]=s.yArrj;var l=r.config.forecastDataPoints;if(l.count>0&&"rangeArea"!==e){var c=r.globals.seriesXvalues[i][r.globals.seriesXvalues[i].length-l.count-1],h=n.drawRect(c,0,r.globals.gridWidth,r.globals.gridHeight,0);r.globals.dom.elForecastMask.appendChild(h.node);var d=n.drawRect(0,0,c,r.globals.gridHeight,0);r.globals.dom.elNonForecastMask.appendChild(d.node)}this.pointsChart||r.globals.delayedElements.push({el:this.elPointsMain.node,index:i});var u={i:a,realIndex:i,animationDelay:a,initialSpeed:r.config.chart.animations.speed,dataChangeSpeed:r.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(e)};if("area"===e)for(var g=o.fillPath({seriesNumber:i}),f=0;f0&&"rangeArea"!==e){var A=n.renderPaths(w);A.node.setAttribute("stroke-dasharray",l.dashArray),l.strokeWidth&&A.node.setAttribute("stroke-width",l.strokeWidth),this.elSeries.add(A),A.attr("clip-path","url(#forecastMask".concat(r.globals.cuid,")")),k.attr("clip-path","url(#nonForecastMask".concat(r.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e=t.type,i=t.series,a=t.iterations,s=t.realIndex,r=t.i,o=t.x,l=t.y,c=t.pX,h=t.pY,d=t.pathsFrom,u=t.linePaths,g=t.areaPaths,f=t.seriesIndex,p=t.lineYPosition,x=t.xArrj,v=t.yArrj,m=t.isRangeStart,y=t.seriesRangeEnd,w=this.w,k=new b(this.ctx),A=this.yRatio,S=d.prevY,C=d.linePath,P=d.areaPath,L=d.pathFromLine,O=d.pathFromArea,T=n.isNumber(w.globals.minYArr[s])?w.globals.minYArr[s]:w.globals.minY;a||(a=w.globals.dataPoints>1?w.globals.dataPoints-1:w.globals.dataPoints);for(var E=l,I=0;I0&&w.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(r-1)][I+1]:this.zeroY,M?l=p-T/A[this.yaxisIndex]+2*(this.isReversed?T/A[this.yaxisIndex]:0):(l=p-i[r][I+1]/A[this.yaxisIndex]+2*(this.isReversed?i[r][I+1]/A[this.yaxisIndex]:0),"rangeArea"===e&&(E=p-y[r][I+1]/A[this.yaxisIndex]+2*(this.isReversed?y[r][I+1]/A[this.yaxisIndex]:0))),x.push(o),v.push(l);var X=this.lineHelpers.calculatePoints({series:i,x:o,y:l,realIndex:s,i:r,j:I,prevY:S}),Y=this._createPaths({type:e,series:i,i:r,realIndex:s,j:I,x:o,y:l,y2:E,pX:c,pY:h,linePath:C,areaPath:P,linePaths:u,areaPaths:g,seriesIndex:f,isRangeStart:m});g=Y.areaPaths,u=Y.linePaths,c=Y.pX,h=Y.pY,P=Y.areaPath,C=Y.linePath,this.appendPathFrom&&(L+=k.line(o,this.zeroY),O+=k.line(o,this.zeroY)),this.handleNullDataPoints(i,X,r,I,s),this._handleMarkersAndLabels({type:e,pointsPos:X,i:r,j:I,realIndex:s,isRangeStart:m})}return{yArrj:v,xArrj:x,pathFromArea:O,areaPaths:g,pathFromLine:L,linePaths:u,linePath:C,areaPath:P}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,n=t.realIndex,o=this.w,l=new lt(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:n,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{o.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var c=this.markers.plotChartMarkers(i,n,r+1);null!==c&&this.elPointsMain.add(c)}var h=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:n,j:r+1});null!==h&&this.elDataLabelsWrap.add(h)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,n=t.x,o=t.y,l=t.y2,c=t.pX,h=t.pY,d=t.linePath,u=t.areaPath,g=t.linePaths,f=t.areaPaths,p=t.seriesIndex,x=t.isRangeStart,v=this.w,m=new b(this.ctx),y=v.config.stroke.curve,w=this.areaBottomY;if(Array.isArray(v.config.stroke.curve)&&(y=Array.isArray(p)?v.config.stroke.curve[p[a]]:v.config.stroke.curve[a]),"smooth"===y){var k=.35*(n-c);v.globals.hasNullValues?(null!==i[a][r]&&(null!==i[a][r+1]?(d=m.move(c,h)+m.curve(c+k,h,n-k,o,n+1,o),u=m.move(c+1,h)+m.curve(c+k,h,n-k,o,n+1,o)+m.line(n,w)+m.line(c,w)+"z"):(d=m.move(c,h),u=m.move(c,h)+"z")),g.push(d),f.push(u)):(d+=m.curve(c+k,h,n-k,o,n,o),u+=m.curve(c+k,h,n-k,o,n,o)),c=n,h=o,r===i[a].length-2&&(u=u+m.curve(c,h,n,o,n,w)+m.move(n,o)+"z","rangeArea"===e&&x?d=d+m.curve(c,h,n,o,n,l)+m.move(n,l)+"z":v.globals.hasNullValues||(g.push(d),f.push(u)))}else{if(null===i[a][r+1]){d+=m.move(n,o);var A=v.globals.isXNumeric?(v.globals.seriesX[s][r]-v.globals.minX)/this.xRatio:n-this.xDivision;u=u+m.line(A,w)+m.move(n,o)+"z"}null===i[a][r]&&(d+=m.move(n,o),u+=m.move(n,w)),"stepline"===y?(d=d+m.line(n,null,"H")+m.line(null,o,"V"),u=u+m.line(n,null,"H")+m.line(null,o,"V")):"straight"===y&&(d+=m.line(n,o),u+=m.line(n,o)),r===i[a].length-2&&(u=u+m.line(n,w)+m.move(n,o)+"z","rangeArea"===e&&x?d=d+m.line(n,l)+m.move(n,l)+"z":(g.push(d),f.push(u)))}return{linePaths:g,areaPaths:f,pX:c,pY:h,linePath:d,areaPath:u}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var n=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==n&&this.elPointsMain.add(n)}}}])&&xa(e.prototype,i),t}();function va(t,e){for(var i=0;ir-a&&l.width<=n-s){var c=o.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(c.x," ").concat(c.y,")"))}}},{key:"animateTreemap",value:function(t,e,i,a){var s=new l(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}])&&va(e.prototype,i),t}();function ya(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function wa(t){for(var e=1;e5e4&&(a.globals.disableZoomOut=!0);var n=s.getTimeUnitsfromTimestamp(t,e,this.utc),o=a.globals.gridWidth/r,l=o/24,c=l/60,h=c/60,d=Math.floor(24*r),u=Math.floor(1440*r),g=Math.floor(86400*r),f=Math.floor(r),p=Math.floor(r/30),x=Math.floor(r/365),b={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},v={firstVal:b,currentMillisecond:b.minMillisecond,currentSecond:b.minSecond,currentMinute:b.minMinute,currentHour:b.minHour,currentMonthDate:b.minDate,currentDate:b.minDate,currentMonth:b.minMonth,currentYear:b.minYear,daysWidthOnXAxis:o,hoursWidthOnXAxis:l,minutesWidthOnXAxis:c,secondsWidthOnXAxis:h,numberOfSeconds:g,numberOfMinutes:u,numberOfHours:d,numberOfDays:f,numberOfMonths:p,numberOfYears:x};switch(this.tickInterval){case"years":this.generateYearScale(v);break;case"months":case"half_year":this.generateMonthScale(v);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(v);break;case"hours":this.generateHourScale(v);break;case"minutes_fives":case"minutes":this.generateMinuteScale(v);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(v)}var m=this.timeScaleArray.map((function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?wa(wa({},e),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?wa(wa({},e),{},{value:t.value}):"minute"===t.unit?wa(wa({},e),{},{value:t.value,minute:t.value}):"second"===t.unit?wa(wa({},e),{},{value:t.value,minute:t.minute,second:t.second}):t}));return m.filter((function(t){var e=1,s=Math.ceil(a.globals.gridWidth/120),r=t.value;void 0!==a.config.xaxis.tickAmount&&(s=a.config.xaxis.tickAmount),m.length>s&&(e=Math.floor(m.length/s));var n=!1,o=!1;switch(i.tickInterval){case"years":"year"===t.unit&&(n=!0);break;case"half_year":e=7,"year"===t.unit&&(n=!0);break;case"months":e=1,"year"===t.unit&&(n=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(n=!0),30===r&&(o=!0);break;case"months_days":e=10,"month"===t.unit&&(n=!0),30===r&&(o=!0);break;case"week_days":e=8,"month"===t.unit&&(n=!0);break;case"days":e=1,"month"===t.unit&&(n=!0);break;case"hours":"day"===t.unit&&(n=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(o=!0);break;case"seconds_tens":r%10!=0&&(o=!0)}if("hours"===i.tickInterval||"minutes_fives"===i.tickInterval||"seconds_tens"===i.tickInterval||"seconds_fives"===i.tickInterval){if(!o)return!0}else if((r%e==0||n)&&!o)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new se(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,l=0,c=new R(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var d=c.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);l=(c.determineDaysOfYear(e.minYear)-d+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:l,value:o,unit:h,year:o,month:n.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:l,value:o,unit:h,year:a,month:n.monthMod(i+1)});for(var u=o,g=l,f=0;f1){c=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,l=n.monthMod(a+1);var g=s+u,f=n.monthMod(l),p=l;0===l&&(d="year",p=g,f=1,g+=u+=1),this.timeScaleArray.push({position:c,value:p,unit:d,year:g,month:f})}else this.timeScaleArray.push({position:c,value:l,unit:d,year:s,month:n.monthMod(a)});for(var x=l+1,b=c,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,l="month",g=e+=1,e):e},u=(24-e.minHour)*s,g=c,f=d(h,i,a);0===e.minHour&&1===e.minDate?(u=0,g=n.monthMod(e.minMonth),l="month",h=e.minDate,r++):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(u=0,c=e.minDate,g=c,f=d(h=c,i,a)),this.timeScaleArray.push({position:u,value:g,unit:l,year:this._getYear(a,f,0),month:n.monthMod(f),day:h});for(var p=u,x=0;xl.determineDaysOfMonths(e+1,s)&&(x=1,e+=1),{month:e,date:x}},d=function(t,e){return t>l.determineDaysOfMonths(e+1,s)?e+=1:e},u=60-(e.minMinute+e.minSecond/60),g=u*r,f=e.minHour+1,p=f+1;60===u&&(g=0,p=(f=e.minHour)+1);var x=i,b=d(x,a);this.timeScaleArray.push({position:g,value:f,unit:c,day:x,hour:p,year:s,month:n.monthMod(b)});for(var v=g,m=0;m=24&&(p=0,c="day",b=h(x+=1,b).month,b=d(x,b));var y=this._getYear(s,b,0);v=0===p&&0===m?u*r:60*r+v;var w=0===p?x:p;this.timeScaleArray.push({position:v,value:w,unit:c,hour:p,day:x,year:y,month:n.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,l=t.currentYear,c=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,d=t.numberOfMinutes,u=a+1,g=r,f=o,p=l,x=s,b=(60-i-e/1e3)*h,v=0;v=60&&(u=0,24===(x+=1)&&(x=0)),this.timeScaleArray.push({position:b,value:u,unit:"minute",hour:x,minute:u,day:g,year:this._getYear(p,f,0),month:n.monthMod(f)}),b+=c,u++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,l=t.currentYear,c=t.secondsWidthOnXAxis,h=t.numberOfSeconds,d=i+1,u=a,g=r,f=o,p=l,x=s,b=(1e3-e)/1e3*c,v=0;v=60&&(d=0,++u>=60&&(u=0,24==++x&&(x=0))),this.timeScaleArray.push({position:b,value:d,unit:"second",hour:x,minute:u,second:d,day:g,year:this._getYear(p,f,0),month:n.monthMod(f)}),b+=c,d++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new R(e.ctx),r=e.createRawDateString(t,a),n=s.getDate(s.parseDate(r));if(e.utc||(n=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var o="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(o=l.year),"month"===t.unit&&(o=l.month),"day"===t.unit&&(o=l.day),"hour"===t.unit&&(o=l.hour),"minute"===t.unit&&(o=l.minute),"second"===t.unit&&(o=l.second),a=s.formatDate(n,o)}else a=s.formatDate(n,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new b(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,n=t.map((function(n,o){if(o>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,c=t[r].position;return n.position>c+l+10?(r=o,n):null}return n}));return n.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}])&&Aa(e.prototype,i),t}();function Ca(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function Pa(t){for(var e=1;et.length)&&(e=t.length);for(var i=0,a=new Array(e);i-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),b.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elAnnotations=t.dom.Paper.group().attr({class:"apexcharts-annotations"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},n={series:[],i:[]},o={series:[],i:[]},l={series:[],i:[]},c={series:[],i:[]},h={series:[],i:[]},d={series:[],i:[]},u={series:[],i:[]},g={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,f){var p=0;void 0!==t[f].type?("column"===t[f].type||"bar"===t[f].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),c.series.push(e),c.i.push(f),p++,i.globals.columnSeries=c.series):"area"===t[f].type?(n.series.push(e),n.i.push(f),p++):"line"===t[f].type?(r.series.push(e),r.i.push(f),p++):"scatter"===t[f].type?(o.series.push(e),o.i.push(f)):"bubble"===t[f].type?(l.series.push(e),l.i.push(f),p++):"candlestick"===t[f].type?(h.series.push(e),h.i.push(f),p++):"boxPlot"===t[f].type?(d.series.push(e),d.i.push(f),p++):"rangeBar"===t[f].type?(u.series.push(e),u.i.push(f),p++):"rangeArea"===t[f].type?(g.series.push(s.seriesRangeStart[f]),g.seriesRangeEnd.push(s.seriesRangeEnd[f]),g.i.push(f),p++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble"),p>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(f))}));var f=new ba(this.ctx,e),p=new Ii(this.ctx,e);this.ctx.pie=new Wi(this.ctx);var x=new Ki(this.ctx);this.ctx.rangeBar=new ha(this.ctx,e);var b=new Ui(this.ctx),v=[];if(s.comboCharts){if(n.series.length>0&&v.push(f.draw(n.series,"area",n.i)),c.series.length>0)if(i.config.chart.stacked){var m=new yi(this.ctx,e);v.push(m.draw(c.series,c.i))}else this.ctx.bar=new ci(this.ctx,e),v.push(this.ctx.bar.draw(c.series,c.i));if(g.series.length>0&&v.push(f.draw(g.series,"rangeArea",g.i,g.seriesRangeEnd)),r.series.length>0&&v.push(f.draw(r.series,"line",r.i)),h.series.length>0&&v.push(p.draw(h.series,h.i)),d.series.length>0&&v.push(p.draw(d.series,d.i)),u.series.length>0&&v.push(this.ctx.rangeBar.draw(u.series,u.i)),o.series.length>0){var y=new ba(this.ctx,e,!0);v.push(y.draw(o.series,"scatter",o.i))}if(l.series.length>0){var w=new ba(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=f.draw(s.series,"line");break;case"area":v=f.draw(s.series,"area");break;case"bar":a.chart.stacked?v=new yi(this.ctx,e).draw(s.series):(this.ctx.bar=new ci(this.ctx,e),v=this.ctx.bar.draw(s.series));break;case"candlestick":case"boxPlot":v=new Ii(this.ctx,e).draw(s.series);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=f.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new Ri(this.ctx,e).draw(s.series);break;case"treemap":v=new ma(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=f.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=n.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?n.isNumber(i[0])&&(0===i[0].width&&(i=n.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=n.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),b.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};b.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new le(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=n.getBoundingClientRect(s);r=o.bottom;var l=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,l)}var c=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",c),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=c+"px",b.setAttrs(e.dom.Paper.node,{height:c}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=c+"px")}},{key:"coreCalculations",value:function(){new Et(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new Z,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position&&new Nt(this.ctx).drawXCrosshairs(),"back"===e.config.yaxis[0].crosshairs.position&&new Nt(this.ctx).drawYCrosshairs(),"datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Sa(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,e=this.w;if(e.config.chart.brush.enabled&&"function"!=typeof e.config.chart.events.selection){var i=e.config.chart.brush.targets||[e.config.chart.brush.target];i.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),e.config.chart.events.selection=function(t,a){i.forEach((function(t){var i=ApexCharts.getChartByID(t),s=n.clone(e.config.yaxis);if(e.config.chart.brush.autoScaleYaxis&&1===i.w.globals.series.length){var r=new Lt(i);s=r.autoScaleY(i,s,a)}var o=i.w.config.yaxis.reduce((function(t,e,a){return[].concat(function(t){if(Array.isArray(t))return Oa(t)}(r=t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(r)||function(t,e){if(t){if("string"==typeof t)return Oa(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);return"Object"===i&&t.constructor&&(i=t.constructor.name),"Map"===i||"Set"===i?Array.from(t):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?Oa(t,e):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),[Pa(Pa({},i.w.config.yaxis[a]),{},{min:s[0].min,max:s[0].max})]);var r}),[]);i.ctx.updateHelpers._updateOptions({xaxis:{min:a.xaxis.min,max:a.xaxis.max},yaxis:o},!1,!1,!1,!1)}))}}}}])&&Ta(e.prototype,i),t}();function Ia(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function Ma(t){for(var e=1;e1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(o){var l=[e.ctx];s&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(s,c){var h=s.w;if(h.globals.shouldAnimate=a,i||(h.globals.resized=!0,h.globals.dataChanged=!0,a&&s.series.getPreviousPaths()),t&&"object"===Xa(t)&&(s.config=new U(t),t=y.extendArrayProps(s.config,t,h),s.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,h.config=n.extend(h.config,t),r&&(h.globals.lastXAxis=t.xaxis?n.clone(t.xaxis):[],h.globals.lastYAxis=t.yaxis?n.clone(t.yaxis):[],h.globals.initialConfig=n.extend({},h.config),h.globals.initialSeries=n.clone(h.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=n.clone(o.config.series),o.globals.initialSeries=n.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,e){var i=this.w,a=i.config.series[e];return Ma(Ma({},i.config.series[e]),{},{name:t.name?t.name:a&&a.name,color:t.color?t.color:a&&a.color,type:t.type?t.type:a&&a.type,data:t.data?t.data:a&&a.data})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new b(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new G(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)}(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}],i&&Ya(e.prototype,i),t}();function Ra(t,e){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new Ct(i);var n=i.grid.drawGrid();"treemap"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,n),i.annotations=new z(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position&&n&&a.globals.dom.elGraphical.add(n.el);var o=new kt(t.ctx,n),l=new Mt(t.ctx,n);if(null!==n&&(o.xAxisLabelCorrections(n.xAxisTickWidth),l.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&l.yAxisTitleRotate(e,t.opposite)}))),"back"===a.config.annotations.position&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),Array.isArray(e.elGraph))for(var c=0;c0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=Wa.get(t))&&(e.disconnect(),Wa.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===n.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Na(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w;return n.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),n.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new Et(this.ctx);return e.getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new Et(this.ctx);return e.getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new yt(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=new yt(this.ctx);return e.exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],a=[{key:"getChartByID",value:function(t){var e=n.escapeString(t),i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),n=2;n{window.TreemapSquared={},function(){"use strict";window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,n=r(t)/this.height,o=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,n=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,n)}return i}}function e(e,a,s,n,o){n=void 0===n?0:n,o=void 0===o?0:o;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=a(s,i))}(e,l=t[0],o)?(e.push(l),i(t.slice(1),e,s,n)):(c=s.cutArea(r(e),n),n.push(s.getCoordinates(e)),i(t,[],c,n)),n;n.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;e=0;a--)if(t[a])for(var s in e)t[a].prototype[s]=e[s];i.Set&&i.Set.inherit&&i.Set.inherit()},i.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,i.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&i.extend(e,t.extend),t.construct&&i.extend(t.parent||i.Container,t.construct),e},i.adopt=function(e){return e?e.instance?e.instance:((a="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new i.Nested:new i.Doc:"linearGradient"==e.nodeName?new i.Gradient("linear"):"radialGradient"==e.nodeName?new i.Gradient("radial"):i[d(e.nodeName)]?new(i[d(e.nodeName)]):new i.Element(e)).type=e.nodeName,a.node=e,e.instance=a,a instanceof i.Doc&&a.namespace().defs(),a.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),a):null;var a},i.prepare=function(){var t=e.getElementsByTagName("body")[0],a=(t?new i.Doc(t):i.adopt(e.documentElement).nested()).size(2,0);i.parser={body:t||e.documentElement,draw:a.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:a.polyline().node,path:a.path().node,native:i.create("svg")}},i.parser={native:i.create("svg")},e.addEventListener("DOMContentLoaded",(function(){i.parser.draw||i.prepare()}),!1),i.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},i.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new i.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),i.Color.test=function(t){return t+="",i.regex.isHex.test(t)||i.regex.isRgb.test(t)},i.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},i.Color.isColor=function(t){return i.Color.isRgb(t)||i.Color.test(t)},i.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},i.extend(i.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),i.PointArray=function(t,e){i.Array.call(this,t,e||[[0,0]])},i.PointArray.prototype=new i.Array,i.PointArray.prototype.constructor=i.PointArray;for(var a={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},s="mlhvqtcsaz".split(""),n=0,o=s.length;nl);return r},bbox:function(){return i.parser.draw||i.prepare(),i.parser.path.setAttribute("d",this.toString()),i.parser.path.getBBox()}}),i.Number=i.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(i.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof i.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new i.Number(t),new i.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new i.Number(t),new i.Number(this-t,this.unit||t.unit)},times:function(t){return t=new i.Number(t),new i.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new i.Number(t),new i.Number(this/t,this.unit||t.unit)},to:function(t){var e=new i.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new i.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new i.Number(this.destination).minus(this).times(t).plus(this):this}}}),i.Element=i.invent({create:function(t){this._stroke=i.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var a=g(this,t,e);return this.width(new i.Number(a.width)).height(new i.Number(a.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(i.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return i.get(this.attr(t))},parent:function(e){var a=this;if(!a.node.parentNode)return null;if(a=i.adopt(a.node.parentNode),!e)return a;for(;a&&a.node instanceof t.SVGElement;){if("string"==typeof e?a.matches(e):a instanceof e)return a;if(!a.node.parentNode||"#document"==a.node.parentNode.nodeName)return null;a=i.adopt(a.node.parentNode)}},doc:function(){return this instanceof i.Doc?this:this.parent(i.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var a=e.createElement("svg");if(!(t&&this instanceof i.Parent))return a.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),a.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");a.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=a.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},i.morph=function(t){return function(e,a){return new i.MorphObj(e,a).at(t)}},i.Situation=i.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new i.Number(t.duration).valueOf(),this.delay=new i.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),i.FX=i.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,a){"object"===r(t)&&(e=t.ease,a=t.delay,t=t.duration);var s=new i.Situation({duration:t||1e3,delay:a||0,ease:i.easing[e||"-"]||e});return this.queue(s),this},target:function(t){return t&&t instanceof i.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof i.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof i.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var a in e.animations){t=this.target()[a](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[a])||(e.animations[a]=[e.animations[a]]);for(var s=t.length;s--;)e.animations[a][s]instanceof i.Number&&(t[s]=new i.Number(t[s])),e.animations[a][s]=t[s].morph(e.animations[a][s])}for(var a in e.attrs)e.attrs[a]=new i.MorphObj(this.target().attr(a),e.attrs[a]);for(var a in e.styles)e.styles[a]=new i.MorphObj(this.target().style(a),e.styles[a]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),a=function(a){a.detail.situation==e&&t.call(this,a.detail.pos,i.morph(a.detail.pos),a.detail.eased,e)};return this.target().off("during.fx",a).on("during.fx",a),this.after((function(){this.off("during.fx",a)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,a=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a[r].apply(a,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.attr.apply(a,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),a.style.apply(a,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var n=s.transforms.length;r=0;--a)this[m[a]]=null!=t[m[a]]?t[m[a]]:e[m[a]]},extend:{extract:function(){var t=f(this,0,1),e=(f(this,1,0),180/Math.PI*Math.atan2(t.y,t.x)-90);return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new i.Matrix(this)}},clone:function(){return new i.Matrix(this)},morph:function(t){return this.destination=new i.Matrix(t),this},multiply:function(t){return new i.Matrix(this.native().multiply(function(t){return t instanceof i.Matrix||(t=new i.Matrix(t)),t}(t).native()))},inverse:function(){return new i.Matrix(this.native().inverse())},translate:function(t,e){return new i.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=i.parser.native.createSVGMatrix(),e=m.length-1;e>=0;e--)t[m[e]]=this[m[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:i.Element,construct:{ctm:function(){return new i.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof i.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new i.Matrix(e)}return new i.Matrix(this.node.getScreenCTM())}}}),i.Point=i.invent({create:function(t,e){var i;i=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===r(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=i.x,this.y=i.y},extend:{clone:function(){return new i.Point(this)},morph:function(t,e){return this.destination=new i.Point(t,e),this}}}),i.extend(i.Element,{point:function(t,e){return new i.Point(t,e).transform(this.screenCTM().inverse())}}),i.extend(i.Element,{attr:function(t,e,a){if(null==t){for(t={},a=(e=this.node.attributes).length-1;a>=0;a--)t[e[a].nodeName]=i.regex.isNumber.test(e[a].nodeValue)?parseFloat(e[a].nodeValue):e[a].nodeValue;return t}if("object"===r(t))for(var s in t)this.attr(s,t[s]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?i.defaults.attrs[t]:i.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(i.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof i.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new i.Number(e):i.Color.isColor(e)?e=new i.Color(e):Array.isArray(e)&&(e=new i.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof a?this.node.setAttributeNS(a,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),i.extend(i.Element,{transform:function(t,e){var a;return"object"!==r(t)?(a=new i.Matrix(this).extract(),"string"==typeof t?a[t]:a):(a=new i.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(a=e?a.multiply(new i.Matrix(t)):new i.Matrix(t)),this.attr("transform",a))}}),i.extend(i.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(i.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(i.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])}),new i.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),i.Transformation=i.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var i=0,a=this.arguments.length;i=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return i.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var a=this.children(),s=0,r=a.length;s=0;a--)e.childNodes[a]instanceof t.SVGElement&&x(e.childNodes[a]);return i.adopt(e).id(i.eid(e.nodeName))}function b(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||i.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var a=l[t].length-1;a>=0;a--)null!=e[l[t][a]]&&this.attr(l.prefix(t,l[t][a]),e[l[t][a]]);return this},i.extend(i.Element,i.FX,e)})),i.extend(i.Element,i.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new i.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new i.Number(t).plus(this instanceof i.FX?0:this.x()),!0)},dy:function(t){return this.y(new i.Number(t).plus(this instanceof i.FX?0:this.y()),!0)}}),i.extend(i.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),i.Set=i.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new i.Set(t)}}}),i.FX.Set=i.invent({create:function(t){this.set=t}}),i.Set.inherit=function(){var t=[];for(var e in i.Shape.prototype)"function"==typeof i.Shape.prototype[e]&&"function"!=typeof i.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){i.Set.prototype[t]=function(){for(var e=0,a=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),i.get=function(t){var a=e.getElementById(function(t){var e=(t||"").toString().match(i.regex.reference);if(e)return e[1]}(t)||t);return i.adopt(a)},i.select=function(t,a){return new i.Set(i.utils.map((a||e).querySelectorAll(t),(function(t){return i.adopt(t)})))},i.extend(i.Parent,{select:function(t){return i.select(t,this.node)}});var m="abcdef".split("");if("function"!=typeof t.CustomEvent){var y=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};y.prototype=t.Event.prototype,i.CustomEvent=y}else i.CustomEvent=t.CustomEvent;return i}(s,s.document)}.call(e,i,e,t),void 0===a||(t.exports=a)},539:(t,e,i)=>{(e=i(922)(!1)).push([t.id,'@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n',""]),t.exports=e},274:(t,e,i)=>{var a=i(379),s=i(539);"string"==typeof(s=s.__esModule?s.default:s)&&(s=[[t.id,s,""]]);var r=(a(t.id,s,{insert:"head",singleton:!1}),s.locals?s.locals:{});t.exports=r},379:(t,e,i)=>{"use strict";var a,s=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),r={};function n(t,e,i){for(var a=0;a{t.exports=''},355:t=>{t.exports=''},686:t=>{t.exports=''},798:t=>{t.exports=''},323:t=>{t.exports=''},618:t=>{t.exports=''},688:t=>{t.exports=''}},e={};function i(a){if(e[a])return e[a].exports;var s=e[a]={id:a,exports:{}};return t[a].call(s.exports,s,s.exports,i),s.exports}return i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i(978)})()})); \ No newline at end of file diff --git a/public/assets/libs/apexcharts/dist/apexcharts.common.js b/public/assets/libs/apexcharts/dist/apexcharts.common.js new file mode 100644 index 0000000..a46a6e9 --- /dev/null +++ b/public/assets/libs/apexcharts/dist/apexcharts.common.js @@ -0,0 +1,14 @@ +/*! + * ApexCharts v3.36.2 + * (c) 2018-2022 ApexCharts + * Released under the MIT License. + */ +"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;it.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===i(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;ee.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":default:t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,o,n,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){t.el.classList.remove("apexcharts-element-hidden")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(o=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,o=i.color,n=i.opacity,l=t.flood(Array.isArray(o)?o[e]:o,n).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,o=e.color,n=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),x.isIE()&&"radialBar"===h.config.chart.type||(o=Array.isArray(o)?o[i]:o,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}var o=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;"Z"==o[o.length-1][0]&&o[0].length>2&&(h=["L",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&"L"==g[0]&&u.length>2&&"L"==u[0]){var f,p,x=r(d),b=r(g),v=r(u);f=i(b,x,e),p=i(b,v,e),s(g,f),g.origPoint=b,n.push(g);var m=a(f,b,.5),y=a(b,p,.5),w=["C",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push(["Z"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt",l=this.w,h=l.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":o,"stroke-linecap":n});return h}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w,d=c.globals.dom.Paper.rect();return d.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,"stroke-width":null!==n?n:0,stroke:null!==l?l:"none","stroke-dasharray":h}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",s=this.w,r=s.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i});return r}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;t<0&&(t=0);var a=i.globals.dom.Paper.circle(2*t);return null!==e&&a.attr(e),a}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":o,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=e.globals.dom.Paper.group();return null!==t&&i.attr(t),i}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var o=["C",t,e,i,a,s,r].join(" ");return o}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,o){var n=arguments.length>7&&void 0!==arguments[7]&&arguments[7],l="A";n&&(l="a");var h=[l,t,e,i,a,s,r,o].join(" ");return h}},{key:"renderPaths",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,f=t.className,p=t.shouldClipToGrid,x=void 0===p||p,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,T=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);T?i=r:(i=o,A.globals.animationEnded=!0);var M=A.config.stroke.dashArray,I=0;I=Array.isArray(M)?M[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:f,strokeLinecap:h,strokeDashArray:I});if(z.attr("index",s),x&&z.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(s))){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,z)),z.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,z)),z.node.addEventListener("mousedown",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&T&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=this.w,o=r.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}));return o}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,f=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,f=void 0!==n[3]?n[3]/100:null);var p=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==f&&t.at(f,e,a)})):c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),p){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),o="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===o){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type,d.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&o.attr("transform",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute("transform","rotate(-90 ".concat(n," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var o=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");o&&(i=parseFloat(o.getAttribute("y")))}else{var n;if(s.config.yaxis[e.yAxisIndex].logarithmic)n=(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else n=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-n,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=n)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x));var n=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(n=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(o=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(o=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(n=parseFloat(e.x2)),"x1"===t?o:n}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),o=t.label.text,n=t.strokeDashArray;if(x.isNumber(r)){if(null===t.x2||void 0===t.x2){var l=this.annoCtx.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,n,t.borderWidth);e.appendChild(l.node),t.id&&l.node.classList.add(t.id)}else{if((a=this.helpers.getX1X2("x2",t))o){var h=o;o=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),S=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addPointAnnotation",value:function(t,e,i){this.w;var a=this.helpers.getX1X2("x1",t),s=this.helpers.getY1Y2("y1",t);if(x.isNumber(a)){var r={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},o=this.annoCtx.graphics.drawMarker(a+t.marker.offsetX,s+t.marker.offsetY,r);e.appendChild(o.node);var n=t.label.text?t.label.text:"",l=this.annoCtx.graphics.drawText({x:a+t.label.offsetX,y:s+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(l.attr({rel:i}),e.appendChild(l.node),t.customSVG.SVG){var h=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});h.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(s+t.customSVG.offsetY,")")}),h.node.innerHTML=t.customSVG.SVG,e.appendChild(h.node)}if(t.image.path){var c=t.image.width?t.image.width:20,d=t.image.height?t.image.height:20;o=this.annoCtx.addImage({x:a+t.image.offsetX-c/2,y:s+t.image.offsetY-d/2,width:c,height:d,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&o.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&o.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&o.node.addEventListener("click",t.click.bind(this,t))}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var C={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},L=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[C],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),P=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new A(this),this.pointsAnnotations=new S(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-annotations":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:n||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),T=L.globals.dom.baseEl.querySelector(b);T&&T.appendChild(P.node);var M=P.bbox();if(s){var I=this.graphics.drawRect(M.x-m,M.y-C,M.width+m+w,M.height+A+C,f,d||"transparent",1,g,p,u);T.insertBefore(I.node,P.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-annotations":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,n);var p=i.globals.dom.baseEl.querySelector(u);return p&&p.appendChild(f.node),f}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new L,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),f=this.helpers.addBackgroundToAnno(u,g);return f&&l.insertBefore(f.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),T=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return r(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(t){return Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(u(i.months)),r=["\x01"].concat(u(i.shortMonths)),o=["\x02"].concat(u(i.days)),n=["\x03"].concat(u(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(g))).replace(/(^|[^\\])H/g,"$1"+g)).replace(/(^|[^\\])hh+/g,"$1"+l(f))).replace(/(^|[^\\])h/g,"$1"+f);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(p))).replace(/(^|[^\\])m/g,"$1"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var v=g<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+m)).replace(/(^|[^\\])t/g,"$1"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),n=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),M=function(t){var e,i=t.ctx,a=t.seriesIndex,s=t.dataPointIndex,r=t.y1,o=t.y2,n=t.w,l=n.globals.seriesRangeStart[a][s],h=n.globals.seriesRangeEnd[a][s],c=n.globals.labels[s],d=n.config.series[a].name?n.config.series[a].name:"",g=n.config.tooltip.y.formatter,u=n.config.tooltip.y.title.formatter,f={w:n,seriesIndex:a,dataPointIndex:s,start:l,end:h};"function"==typeof u&&(d=u(d,f)),null!==(e=n.config.series[a].data[s])&&void 0!==e&&e.x&&(c=n.config.series[a].data[s].x+":"),"function"==typeof g&&(c=g(c,f)),Number.isFinite(r)&&Number.isFinite(o)&&(l=r,h=o);var p="",x="",b=n.globals.colors[a];if(void 0===n.config.tooltip.x.formatter)if("datetime"===n.config.xaxis.type){var v=new T(i);p=v.formatDate(v.getDate(l),n.config.tooltip.x.format),x=v.formatDate(v.getDate(h),n.config.tooltip.x.format)}else p=l,x=h;else p=n.config.tooltip.x.formatter(l),x=n.config.tooltip.x.formatter(h);return{start:l,end:h,startVal:p,endVal:x,ylabel:c,color:b,seriesName:d}},I=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
    '+(i||"")+'
    '+a+" "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[o].type||"rangeBar"===t.w.config.series[o].type?c:"".concat(h,""):c)+"
    "},z=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0;return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:"brush",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
    \n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
    "):'
    ')+"
    ".concat(a[0],': ')+r+"
    "+"
    ".concat(a[1],': ')+o+"
    "+(n?"
    ".concat(a[2],': ')+n+"
    ":"")+"
    ".concat(a[3],': ')+l+"
    "+"
    ".concat(a[4],': ')+h+"
    "}}]),t}(),X=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new L,r=new z(a);this.chartType=a.chart.type,"histogram"===this.chartType&&(a.chart.type="bar",a=x.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},a)),a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&"object"===i(a)){var l={};l=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","histogram","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),a.chart.brush&&a.chart.brush.enabled&&(l=r.brush(l)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),((a=this.checkForCatToNumericXAxis(this.chartType,l,a)).chart.sparkline&&a.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(l=r.sparkline(l)),n=x.extend(o,l)}var h=x.extend(n,window.Apex);return o=x.extend(h,a),o=this.handleUserInputErrors(o)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a=new z(i),s=("bar"===t||"boxPlot"===t)&&i.plotOptions&&i.plotOptions.bar&&i.plotOptions.bar.horizontal,r="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,o="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,n=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return s||r||!o||"between"===n||(i=a.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new L;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new L;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new L;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new L;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),E=function(){function t(){a(this,t)}return r(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasGroups=!1,t.groups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.xaxisLabelsCount=0,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),Y=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(){var t=new X(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new E).init(t)}}}]),t}(),F=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:n+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:n+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type||"treemap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color);var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf("rgba")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),"pattern"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),"gradient"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),"image"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var f=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var p=o.gradient.gradientToColors[l.seriesNumber];n=p,p.indexOf("rgba")>-1&&(f=x.getOpacityFromRGBA(p))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf("rgb")>-1&&(g=x.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,f,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),R=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0;if(p||r||d){x.isNumber(l.y[g])?f+=" w".concat(x.randomId()):f="apexcharts-nullpoint";var b=this.getMarkerConfig({cssClass:f,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(b.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(b.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(b.pSize=a),(s=c.drawMarker(l.x[g],l.y[g],b)).attr("rel",u),s.attr("j",u),s.attr("index",e),s.node.setAttribute("default-marker-size",b.pSize);var y=new v(this.ctx);y.setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),D=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(o.x))for(var c=0;cp.maxBubbleRadius&&(f=p.maxBubbleRadius)}a.config.chart.animations.enabled||(u=f);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,f,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new F(this.ctx),g=new R(this.ctx),u=new m(this.ctx),f=g.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:r,finishRadius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&"bubble"===n.config.series[s].type?a:null});a=f.pSize;var p,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:f.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[s][o]});if("circle"===f.shape?p=u.drawCircle(i):"square"!==f.shape&&"rect"!==f.shape||(p=u.drawRect(0,0,f.width-f.pointStrokeWidth/2,f.height-f.pointStrokeWidth/2,f.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),p.attr({x:t-f.width/2-f.pointStrokeWidth/2,y:e-f.height/2-f.pointStrokeWidth/2,cx:t,cy:e,fill:x,"fill-opacity":f.pointFillOpacity,stroke:f.pointStrokeColor,r:a,"stroke-width":f.pointStrokeWidth,"stroke-dasharray":f.pointStrokeDashArray,"stroke-opacity":f.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(p,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(p,0,"circle"===f.shape?a:{width:f.width,height:f.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(p)}),100)}))}if(n.globals.dataChanged&&"circle"===f.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var f=n.globals.dataLabelsRects[a][u];(t>f.x+f.width+2||e>f.y+f.height+2||t+ce.globals.gridWidth+p.textRects.width+10)&&(n="");var x=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),"function"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(b=0,y=0),p.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,o=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),o=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var n=0;n=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),N=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new T(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar="rangeBar"===a.chart.type&&s.isBarHorizontal,s.hasGroups="category"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasGroups&&(s.groups=a.xaxis.group.groups);for(var n=function(){for(var t=0;t0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var h=t[l].data.map((function(t){return x.parseNumber(t)}));s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[l].name?s.seriesNames.push(t[l].name):s.seriesNames.push("series-"+parseInt(l+1,10)),void 0!==t[l].color?s.seriesColors.push(t[l].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=i.labels.filter((function(t,e,i){return i.indexOf(t)===e}))),e.xaxis.convertedCatToNumeric)new z(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),B=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getLabel",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?"":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new W(this.ctx),f=l;o&&(h=u.xLabelFormat(c,l,f,{i:a,dateFormatter:new T(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new T(this.ctx).formatDate,w:n})));var p=function(t){var i=null;return e.forEach((function(t){"month"===t.unit?i="year":"day"===t.unit?i="month":"hour"===t.unit?i="day":"minute"===t.unit&&(i="hour")})),i===t};e.length>0?(g=p(e[a].unit),i=e[a].position,h=e[a].value):"datetime"===n.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var x=new m(this.ctx),b={};b=n.globals.rotateXLabels&&o?x.getTextRects(h,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):x.getTextRects(h,parseInt(r,10));var v=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(0===h.indexOf("NaN")||0===h.toLowerCase().indexOf("invalid")||h.toLowerCase().indexOf("infinity")>=0||s.indexOf(h)>=0&&v)&&(h=""),{x:i,text:h,textRect:b,isBold:g}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),"heatmap"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(t){if(!x.isIE11())return t.replace(/ /g," ");var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o="transparent"===a.config.chart.background?"#fff":a.config.chart.background,n=r.getContext("2d");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d="data:image/svg+xml,"+encodeURIComponent(l),g=new Image;g.crossOrigin="anonymous",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},g.src=d}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,o=t.lineDelimiter,n=void 0===o?"\n":o,l=this.w;i||(i=l.config.series);var h=[],c=[],d="",g=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),f=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),p=new N(this.ctx),b=new B(this.ctx),v=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new O(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=b.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(" ")),x.isNumber(i)?i:i.split(r).join("")},m=function(t,e){if(h.length&&0===e&&c.push(h.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(f)).map((function(){return""}));for(var a=0;a=10?l.config.chart.toolbar.export.csv.dateFormatter(s):x.isNumber(s)?s:s.split(r).join("")));for(var o=0;o0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/y,b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(t&&y.text&&d.globals.xaxisLabelsCount++,d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:p,fontSize:g,fontFamily:u,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-o-2,-a/2,e.gridWidth+a+n+o+4,e.gridHeight+a,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d2));s++);return!t.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,o=Math.abs(e-t);if("dataPoints"===(i=this._adjustTicksForSmallRange(i,a,o))&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE){t=0,e=i;var n=this.linearScale(t,e,i);return n}t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var l=[];o<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||"boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=o/h,d=Math.floor(x.log10(c)),g=Math.pow(10,d),u=Math.round(c/g);u<1&&(u=1);var f=u*g,p=f*Math.floor(t/f),b=f*Math.ceil(e/f),v=p;if(s&&o>2){for(;l.push(v),!((v+=f)>b););return{result:l,niceMin:l[0],niceMax:l[l.length-1]}}var m=t;(l=[]).push(m);for(var y=Math.abs(e-t)/i,w=0;w<=i;w++)m+=y,l.push(m);return l[l.length-2]>=e&&l.pop(),{result:l,niceMin:l[0],niceMax:l[l.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,s))&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var o=[],n=t;i>=0;)o.push(n),n+=r,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(e,i,r.logBase),a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase);else if(i!==-Number.MAX_VALUE&&x.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var n=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:o<5&&o>1?o+1:5,t,n)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount,t);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,o){var n=o;i.series.forEach((function(t,i){t.name===e.seriesName&&(n=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))}));var l=a[n],h=s[n];t.setYScaleForIndex(o,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,o=[];i.forEach((function(t){t.alreadyExists&&(void 0===o[t.index]&&(o[t.index]=[]),o[t.index].push(t.index),o[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=o,o.forEach((function(t,e){o.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(o[e]=o[e].concat(o[a]))}))}));var n=o.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));o=o.filter((function(t){return!!t}));var l=n.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var o=g[i],n=u[i];s.chart.stacked&&(n=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(n+=t.value),o!==Number.MIN_VALUE&&(o+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(o="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(n="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,o,n))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,o){for(var n=0,l=0;l=i.xaxis.min){n=l;break}var h,c,d=a.globals.minYArr[o],g=a.globals.maxYArr[o],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(o,l){var f=o[n];r?(f=u[n],h=c=f,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),o[e]=i.xaxis.min){var r=t,o=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),o=Math.max(i[e],o))})),o>c&&null!==o&&(c=o),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.scales=new _(e)}return r(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);for(var d=t;dh[d][g]&&h[d][g]<0&&(n=h[d][g])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),"bar"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10||void 0!==e.yaxis[0].min||void 0!==e.yaxis[0].max)&&(o=0),t.minY=i-5*o/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*o/100}if(e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this.w.globals,e=[],i=[];if(t.series.length)for(var a=0;a0?s=s+parseFloat(t.series[o][a])+1e-4:r+=parseFloat(t.series[o][a])),o===t.series.length-1&&(e.push(s),i.push(r));for(var n=0;n=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var f=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,f,g,this.drawnLabels,this.xaxisFontSize);f=p.x,u=p.text,this.drawnLabels.push(p.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var x=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,"title");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute("x",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=x.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=x.extend(C,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this.w.globals,r=this.w.config,o=new V(this.ctx,e),n=new q(this.ctx,e);s.axisCharts&&"radar"!==t&&(s.isBarHorizontal?(a=n.drawYaxisInversed(0),i=o.drawXaxisInversed(0),s.dom.elGraphical.add(i),s.dom.elGraphical.add(a)):(i=o.drawXaxis(),s.dom.elGraphical.add(i),r.yaxis.map((function(t,e){-1===s.ignoreYAxisIndexes.indexOf(e)&&(a=n.drawYaxis(e),s.dom.Paper.add(a))}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,f=s.blur,p=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:f,color:p,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new X({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof e.config.colors[0]&&(e.globals.colors=e.config.series.map((function(i,a){var s=e.config.colors[a];return s||(s=e.config.colors[0]),"function"==typeof s?(t.isColorFn=!0,s({value:e.globals.axisCharts?e.globals.series[a][0]?e.globals.series[a][0]:0:e.globals.series[a],seriesIndex:a,dataPointIndex:a,w:e})):s})))),e.globals.seriesColors.map((function(t,i){t&&(e.globals.colors[i]=t)})),e.config.theme.monochrome.enabled){var a=[],s=e.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(s=e.globals.series[0].length*e.globals.series.length);for(var r=e.config.theme.monochrome.color,o=1/(s/e.config.theme.monochrome.shadeIntensity),n=e.config.theme.monochrome.shadeTo,l=0,h=0;h2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new W(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){(function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)})(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.rightString(n.niceMax).length?c:n.niceMax,g=h(d,{seriesIndex:o,dataPointIndex:-1,w:e}),u=g;if(void 0!==g&&0!==g.length||(g=d),e.globals.isBarHorizontal){a=0;var f=e.globals.labels.slice();g=h(g=x.getLargestStringFromArr(f),{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,f)}var p=new m(t.dCtx.ctx),b="rotate(".concat(r.labels.rotate," 0 0)"),v=p.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=p.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(l>y.width||l>v.width?l:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=function(t){return"bar"===t||"rangeBar"===t||"candlestick"===t||"boxPlot"===t},a=e.config.chart.type,s=0,r=i(a)?e.config.series.length:1;if(e.globals.comboBarCount>0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var o,n,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),o=l/t,e.globals.minXDiff&&e.globals.minXDiff/o>0&&(n=e.globals.minXDiff/o),n>t/2&&(n/=2),(s=n/r*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&(e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }");return t.appendChild(e),t}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals;t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject");var e=t.dom.elLegendForeign;e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),n=a.config.chart.type;if("pie"===n||"polarArea"===n||"donut"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=x.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var o=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(o,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var n=e.childNodes,l=0;l0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}]),t}(),lt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed="bar"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new nt(this)}return r(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h=o(a[l],{seriesIndex:l,w:e}),c=!1,d=!1;if(e.globals.collapsedSeries.length>0)for(var g=0;g0)for(var u=0;u0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=o+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new O(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new O(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),o("zoomOut",this.elZoomOut,'\n \n \n\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};n("zoom"),n("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),o("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+o+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g="x"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;"resizing"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n("x"),y:n("y"),width:n("width"),height:n("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),o={xaxis:{min:a.globals.xAxisScale.niceMin+(e.left-t.left)*s.xRatio,max:a.globals.xAxisScale.niceMin+(e.right-t.left)*s.xRatio},yaxis:{min:a.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*s.yRatio[0],max:a.globals.yAxisScale[0].niceMax-(e.top-t.top)*s.yRatio[0]}};a.config.chart.events.selection(i.ctx,o),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,o)}),o))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),f=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(f={min:h,max:c}),"xy"!==i&&"y"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var p=new _(s.ctx);u=p.autoScaleY(s.ctx,u,{xaxis:f})}if(o){var b=o.getBeforeZoomRange(f,u);b&&(f=b.xaxis?b.xaxis:f,u=b.yaxis?b.yaxis:u)}var v={xaxis:f};a.config.chart.group||(v.yaxis=u),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(f,u)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(y=x.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new _(this.ctx).autoScaleY(this.ctx,s,{xaxis:l}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var f=Math.round(g/h),p=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(g/h),f-=1);var b=null,v=null,m=[],y=[];if(r.globals.seriesXvalues.forEach((function(t){m.push([t[0]+1e-6].concat(t))})),r.globals.seriesYvalues.forEach((function(t){y.push([t[0]+1e-6].concat(t))})),m=m.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=y.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,f=v.j,null!==b&&(m=r.globals.seriesXvalues[b],f=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!f||f<1)&&(f=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=p:r.globals.capturedDataPointIndex=f,{capturedSeries:b,j:r.globals.isBarHorizontal?p:f,hoverX:g,hoverY:u}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a0?e:-1})),s=0;s0)for(var a=0;ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
    ".concat(i.val,"
    ")})),v.innerHTML=t+"",m.innerHTML=e+""};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==f&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==f?f:"");o&&p[0]&&(null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?p[0].parentNode.style.display="none":p[0].parentNode.style.display=l.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",o="",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new W(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new T(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:n}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid(),d=c.getBoundingClientRect();h=s.e.clientY+a.globals.translateY-d.top-o.ttHeight/2}else a.globals.isBarHorizontal||(o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY),h<0&&(h=0));isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(h.setAttribute("r",n),h.setAttribute("cx",i),h.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new O(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute("r",n),l[h]&&l[h].setAttribute("cy",d)):l[h]&&l[h].setAttribute("r",0)}}if(this.moveXCrosshairs(s),!i.fixedTooltip){var f=r||a.globals.gridHeight;this.moveTooltip(s,f,n)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e=this.w,i=this.ttCtx,a=e.globals.columnSeries?e.globals.columnSeries.length:e.globals.series.length,s=a>=2&&a%2==0?Math.floor(a/2):Math.floor(a/2)+1;e.globals.isBarHorizontal&&(s=new O(this.ctx).getActiveConfigSeriesIndex("desc")+1);var r=e.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(s,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"']")),o=r?parseFloat(r.getAttribute("cx")):0,n=r?parseFloat(r.getAttribute("cy")):0,l=r?parseFloat(r.getAttribute("barWidth")):0,h=r?parseFloat(r.getAttribute("barHeight")):0,c=i.getElGrid().getBoundingClientRect(),d=r.classList.contains("apexcharts-candlestick-area")||r.classList.contains("apexcharts-boxPlot-area");if(e.globals.isXNumeric?(r&&!d&&(o-=a%2!=0?l/2:0),r&&d&&e.globals.comboCharts&&(o-=l/2)):e.globals.isBarHorizontal||(o=i.xAxisTicksPositions[t-1]+i.dataPointsDividedWidth/2,isNaN(o)&&(o=i.xAxisTicksPositions[t]-i.dataPointsDividedWidth/2)),e.globals.isBarHorizontal?(n>e.globals.gridHeight/2&&(n-=i.tooltipRect.ttHeight),(n=n+e.config.grid.padding.top+h/3)+h>e.globals.gridHeight&&(n=e.globals.gridHeight-h)):e.config.tooltip.followCursor?n=i.e.clientY-c.top-i.tooltipRect.ttHeight/2:n+i.tooltipRect.ttHeight+15>e.globals.gridHeight&&(n=e.globals.gridHeight),n<-10&&(n=-10),e.globals.isBarHorizontal||this.moveXCrosshairs(o),!i.fixedTooltip){var g=n||e.globals.gridHeight;this.moveTooltip(o,g)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new m(this.ctx),i=new R(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),o=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var n=this.ttCtx.getElGrid(),l=n.getBoundingClientRect();r=this.ttCtx.e.clientX-l.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e}return r(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),g=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var f=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-f.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-f.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var g=x.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)?c=r.globals.svgHeight-o.tooltipRect.ttHeight:c<0&&(c=0);var f=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),p=r.globals.isMultipleYAxis?r.config.yaxis[f]&&r.config.yaxis[f].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!p?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(p&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!p||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),o.tooltipRect.ttHeight+c>r.globals.gridHeight?c=r.globals.gridHeight-o.tooltipRect.ttHeight+r.globals.translateY:(c=c+r.globals.translateY-o.tooltipRect.ttHeight/2)<0&&(c=0),n.style.left=h+r.globals.translateX+"px",n.style.top=c+"px")}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,a=this.w,s=null,r=this.ttCtx,o=0,n=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-boxPlot-area")||d.contains("apexcharts-rangebar-area")){var g=e.target,u=g.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=u.height;c=u.height;var x=u.width,b=parseInt(g.getAttribute("cx"),10),v=parseInt(g.getAttribute("cy"),10);h=parseFloat(g.getAttribute("barWidth"));var m="touchmove"===e.type?e.touches[0].clientX:e.clientX;s=parseInt(g.getAttribute("j"),10),o=parseInt(g.parentNode.getAttribute("rel"),10)-1;var y=g.getAttribute("data-range-y1"),w=g.getAttribute("data-range-y2");a.globals.comboCharts&&(o=parseInt(g.parentNode.getAttribute("data:realIndex"),10)),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:s,y1:y?parseInt(y,10):null,y2:w?parseInt(w,10):null,shared:!r.showOnIntersect&&a.config.tooltip.shared,e:e}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(n=m-f.left+15,l=v-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(n=a.globals.isXNumeric?b-x/2:b-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((n=b)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var o=a.getElGrid().getBoundingClientRect(),n=(e-o.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-n);a.tooltipPosition.moveYCrosshairs(e-o.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new ft(this),this.intersect=new pt(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement("div");o.classList.add("apexcharts-tooltip-series-group"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add("apexcharts-tooltip-series-group-hidden");var n=document.createElement("span");n.classList.add("apexcharts-tooltip-marker"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement("div");l.classList.add("apexcharts-tooltip-text"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf("bottom")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=o+"px",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new O(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var p=0;pl.width?this.handleMouseOut(a):null!==n?this.handleStickyCapturedSeries(t,n,a,o):(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal)&&this.create(t,this,0,o,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);void 0!==s.globals.series[e][a]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(t,this,0,a,i.ttItems)}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,o=this.w,n=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===r&&(r=this.tConfig.shared);var l=this.tooltipUtil.hasMarkers(),h=this.tooltipUtil.getElBars();if(o.config.legend.tooltipHoverFormatter){var c=o.config.legend.tooltipHoverFormatter,d=Array.from(this.legendLabels);d.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var g=0;g0?n.marker.enlargePoints(a):n.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var b=new m(this.ctx),v=o.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var y=0;ys.globals.gridHeight&&(u=s.globals.gridHeight-b)),{bcx:h,bcy:l,dataLabelsX:e,dataLabelsY:u,totalDataLabelsX:a,totalDataLabelsY:i,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.bcy,n=t.barHeight,l=t.barWidth,h=t.textRects,c=t.dataLabelsX,d=t.strokeWidth,g=t.dataLabelsConfig,u=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,b=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var v,y,w=o-(this.barCtx.isRangeBar?0:b)+n/2+h.height/2+x-3,k="start",A=this.barCtx.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+l-(A?2*l:0),i=e.globals.gridWidth-l),u.position){case"center":c=A?S+l/2-p:Math.max(h.width/2,S-l/2)+p;break;case"bottom":c=A?S+l-d-Math.round(h.width/2)-p:S-l+d+Math.round(h.width/2)+p;break;case"top":c=A?S-d+Math.round(h.width/2)-p:S-d-Math.round(h.width/2)+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),g.fontSize);A?(v=S-d+Math.round(C.width/2)-p-f.offsetX-15,k="end"):v=S-d-Math.round(C.width/2)+p+f.offsetX+15,y=w+f.offsetY}return e.config.chart.stacked||(c<0?c=c+h.width+d:c+h.width/2>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width-d)),{bcx:i,bcy:o,dataLabelsX:c,dataLabelsY:w,totalDataLabelsX:v,totalDataLabelsY:y,totalDataLabelsAnchor:k}}},{key:"drawCalculatedDataLabels",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(i,", ").concat(a,")"));var u=new H(this.barCtx.ctx),f=new m(this.barCtx.ctx),p=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=f.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==s&&(v=p(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d})));var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=""):n.height/1.6>Math.abs(l)&&(v=""));var k=e({},c);this.barCtx.isHorizontal&&s<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.realIndex,o=t.textAnchor,n=t.barTotalDataLabelsConfig,l=new m(this.barCtx.ctx);return n.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===r&&(e=l.drawText({x:i,y:a,foreColor:n.style.color,text:s,textAnchor:o,fontFamily:n.style.fontFamily,fontSize:n.style.fontSize,fontWeight:n.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new F(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new O(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.columnWidthOffset&&(u=a-c.config.series[n].data[h].columnWidthOffset/2,g=i+c.config.series[n].data[h].columnWidthOffset);var f=u,p=u+g;s+=.001,r+=.001;var x=d.move(f,s),b=d.move(f,s),v=d.line(p-o,s);return c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1)),x=x+d.line(f,r)+d.line(p-o,r)+d.line(p-o,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(f,s)+v+v+v+v+v+d.line(f,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.yArrj.push(r),this.barCtx.yArrjF.push(Math.abs(s-r)),this.barCtx.yArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.barHeightOffset&&(g=i-c.config.series[n].data[h].barHeightOffset/2,u=a+c.config.series[n].data[h].barHeightOffset);var f=g,p=g+u;s+=.001,r+=.001;var x=d.move(s,f),b=d.move(s,f);c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1));var v=d.line(s,p-o);return x=x+d.line(r,f)+d.line(r,p-o)+v+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(s,f)+v+v+v+v+v+d.line(s,f)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.xArrj.push(r),this.barCtx.xArrjF.push(Math.abs(s-r)),this.barCtx.xArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a=0;o--)this.barCtx.zeroSerieses.indexOf(o)>-1&&o===this.radiusOnSeriesNumber&&(this.barCtx.radiusOnSeriesNumber-=1);for(var n=e.length-1;n>=0;n--)i.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber)>-1&&(this.barCtx.radiusOnSeriesNumber-=1)}},{key:"getXForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),a}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),a}},{key:"getGoalValues",value:function(t,e,i,a,s){var r=this,n=this.w,l=[];return n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach((function(a){var s;l.push((o(s={},t,"x"===t?r.getXForValue(a.value,e,!1):r.getYForValue(a.value,i,!1)),o(s,"attrs",a),s))})),l}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:"apexcharts-bar-goals-groups"}),h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)})),l}}]),t}(),yt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.xyRatios=i,null!==this.xyRatios&&(this.xRatio=i.xRatio,this.initialXRatio=i.initialXRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0;var r=new O(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex("desc",["bar","column"]);var o=r.getBarSeriesIndices(),n=new y(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===o.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new mt(this)}return r(t,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx),r=new y(this.ctx,a);t=r.getLogSeries(t),this.series=t,this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var o=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});a.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();f=S.y,k=S.barHeight,c=S.yDivision,g=S.zeroW,u=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||b.push(u+A/2);for(var C=s.group({class:"apexcharts-datalabels","data:realIndex":v}),L=s.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),P=0;P0&&b.push(u+A/2),p.push(f);var X=this.barHelpers.getPathFillColor(t,n,P,v);this.renderSeries({realIndex:v,pathFill:X,j:P,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:T,elSeries:w,x:u,y:f,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:C,elGoalsMarkers:L,visibleSeries:this.visibleI,type:"bar"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=p,o.add(w)}return o}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.pathFrom,n=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.y1,u=t.y2,f=t.series,p=t.barHeight,x=t.barWidth,b=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.visibleSeries,A=t.type,S=this.w,C=new m(this.ctx);a||(a=this.barOptions.distributed?S.globals.stroke.colors[s]:S.globals.stroke.colors[e]),S.config.series[r].data[s]&&S.config.series[r].data[s].strokeColor&&(a=S.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var L=s/S.config.chart.animations.animateGradually.delay*(S.config.chart.animations.speed/S.globals.dataPoints)/2.4,P=C.renderPaths({i:r,j:s,realIndex:e,pathFrom:o,pathTo:n,stroke:a,strokeWidth:l,strokeLineCap:S.config.stroke.lineCap,fill:i,animationDelay:L,initialSpeed:S.config.chart.animations.speed,dataChangeSpeed:S.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(A,"-area")});P.attr("clip-path","url(#gridRectMask".concat(S.globals.cuid,")"));var T=S.config.forecastDataPoints;T.count>0&&s>=S.globals.dataPoints-T.count&&(P.node.setAttribute("stroke-dasharray",T.dashArray),P.node.setAttribute("stroke-width",T.strokeWidth),P.node.setAttribute("fill-opacity",T.fillOpacity)),void 0!==g&&void 0!==u&&(P.attr("data-range-y1",g),P.attr("data-range-y2",u)),new v(this.ctx).setSelectionFilter(P,e,s),h.add(P);var M=new vt(this).handleBarDataLabels({x:c,y:d,y1:g,y2:u,i:r,j:s,series:f,realIndex:e,barHeight:p,barWidth:x,barYPosition:b,renderedPath:P,visibleSeries:k});return null!==M.dataLabels&&y.add(M.dataLabels),M.totalDataLabels&&y.add(M.totalDataLabels),h.add(y),w&&h.add(w),h}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,a=t.strokeWidth,s=t.zeroW,r=t.x,o=t.y,n=t.yDivision,l=t.elSeries,h=this.w,c=e.i,d=e.j;h.globals.isXNumeric&&(o=(h.globals.seriesX[c][d]-h.globals.minX)/this.invertedXRatio-i);var g=o+i*this.visibleI;r=this.barHelpers.getXForValue(this.series[c][d],s);var u=this.barHelpers.getBarpaths({barYPosition:g,barHeight:i,x1:s,x2:r,strokeWidth:a,series:this.series,realIndex:e.realIndex,i:c,j:d,w:h});return h.globals.isXNumeric||(o+=n),this.barHelpers.barBackground({j:d,i:c,y1:g-i*this.visibleI,y2:i*this.seriesLen,elSeries:l}),{pathTo:u.pathTo,pathFrom:u.pathFrom,x:r,y:o,goalX:this.barHelpers.getGoalValues("x",s,null,c,d),barYPosition:g}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.strokeWidth,l=t.elSeries,h=this.w,c=e.realIndex,d=e.i,g=e.j,u=e.bc;if(h.globals.isXNumeric){var f=c;h.globals.seriesX[c].length||(f=h.globals.maxValsInArrayIndex),i=(h.globals.seriesX[f][g]-h.globals.minX)/this.xRatio-r*this.seriesLen/2}var p=i+r*this.visibleI;a=this.barHelpers.getYForValue(this.series[d][g],o);var x=this.barHelpers.getColumnPaths({barXPosition:p,barWidth:r,y1:o,y2:a,strokeWidth:n,series:this.series,realIndex:e.realIndex,i:d,j:g,w:h});return h.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:u,j:g,i:d,x1:p-n/2-r*this.visibleI,x2:r*this.seriesLen+n/2,elSeries:l}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:i,y:a,goalY:this.barHelpers.getGoalValues("y",null,o,d,g),barXPosition:p}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var o=0;o0&&(this.totalItems+=t[o].length);for(var n=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),l=0,h=0,c=function(r,o){var c=void 0,d=void 0,g=void 0,u=void 0,f=[],p=[],b=s.globals.comboCharts?i[r]:r;a.yRatio.length>1&&(a.yaxisIndex=b),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var v=a.graphics.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[b]),rel:r+1,"data:realIndex":b});a.ctx.series.addCollapsedClassToSeries(v,b);var m=a.graphics.group({class:"apexcharts-datalabels","data:realIndex":b}),y=a.graphics.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),w=0,k=0,A=a.initialPositions(l,h,c,d,g,u);h=A.y,w=A.barHeight,d=A.yDivision,u=A.zeroW,l=A.x,k=A.barWidth,c=A.xDivision,g=A.zeroH,a.yArrj=[],a.yArrjF=[],a.yArrjVal=[],a.xArrj=[],a.xArrjF=[],a.xArrjVal=[],1===a.prevY.length&&a.prevY[0].every((function(t){return isNaN(t)}))&&(a.prevY[0]=a.prevY[0].map((function(t){return g})),a.prevYF[0]=a.prevYF[0].map((function(t){return 0})));for(var S=0;S1?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:n*parseInt(l.config.plotOptions.bar.columnWidth,10)/100,s=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-n)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:o,barWidth:n,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=n,g=i.i,u=i.j,f=0,p=0;p0){var x=r;this.prevXVal[g-1][u]<0?x=this.series[g][u]>=0?this.prevX[g-1][u]+f-2*(this.isReversed?f:0):this.prevX[g-1][u]:this.prevXVal[g-1][u]>=0&&(x=this.series[g][u]>=0?this.prevX[g-1][u]:this.prevX[g-1][u]-f+2*(this.isReversed?f:0)),e=x}else e=r;o=null===this.series[g][u]?e:e+this.series[g][u]/this.invertedYRatio-2*(this.isReversed?this.series[g][u]/this.invertedYRatio:0);var b=this.barHelpers.getBarpaths({barYPosition:d,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return this.barHelpers.barBackground({j:u,i:g,y1:d,y2:a,elSeries:h}),n+=l,{pathTo:b.pathTo,pathFrom:b.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,g,u),barYPosition:d,x:o,y:n}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH;t.strokeWidth;var n=t.elSeries,l=this.w,h=e.i,c=e.j,d=e.bc;if(l.globals.isXNumeric){var g=l.globals.seriesX[h][c];g||(g=0),i=(g-l.globals.minX)/this.xRatio-r/2}for(var u,f=i,p=0,x=0;x0&&!l.globals.isXNumeric||h>0&&l.globals.isXNumeric&&l.globals.seriesX[h-1][c]===l.globals.seriesX[h][c]){var b,v,m=Math.min(this.yRatio.length+1,h+1);if(void 0!==this.prevY[h-1])for(var y=1;y=0?v-p+2*(this.isReversed?p:0):v;break}if(this.prevYVal[h-w][c]>=0){b=this.series[h][c]>=0?v:v+p-2*(this.isReversed?p:0);break}}void 0===b&&(b=l.globals.gridHeight),u=this.prevYF[0].every((function(t){return 0===t}))&&this.prevYF.slice(1,h).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:b}else u=o;a=u-this.series[h][c]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[h][c]/this.yRatio[this.yaxisIndex]:0);var k=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:u,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:e.realIndex,i:h,j:c,w:l});return this.barHelpers.barBackground({bc:d,j:c,i:h,x1:f,x2:r,elSeries:n}),i+=s,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,h,c),barXPosition:f,x:l.globals.isXNumeric?i-s:i,y:a}}}]),s}(),kt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w,r=new m(this.ctx),o=new F(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var n=new y(this.ctx,s);t=n.getLogSeries(t),this.series=t,this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var l=r.group({class:"apexcharts-".concat(s.config.chart.type,"-series apexcharts-plot-series")}),h=function(n){a.isBoxPlot="boxPlot"===s.config.chart.type||"boxPlot"===s.config.series[n].type;var h,c,d,g,u=void 0,f=void 0,p=[],b=[],v=s.globals.comboCharts?i[n]:n,m=r.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:n+1,"data:realIndex":v});a.ctx.series.addCollapsedClassToSeries(m,v),t[n].length>0&&(a.visibleI=a.visibleI+1);var y,w;a.yRatio.length>1&&(a.yaxisIndex=v);var k=a.barHelpers.initialPositions();f=k.y,y=k.barHeight,c=k.yDivision,g=k.zeroW,u=k.x,w=k.barWidth,h=k.xDivision,d=k.zeroH,b.push(u+w/2);for(var A=r.group({class:"apexcharts-datalabels","data:realIndex":v}),S=function(i){var r=a.barHelpers.getStrokeWidth(n,i,v),l=null,x={indexes:{i:n,j:i,realIndex:v},x:u,y:f,strokeWidth:r,elSeries:m};l=a.isHorizontal?a.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:c,barHeight:y,zeroW:g})):a.drawVerticalBoxPaths(e(e({},x),{},{xDivision:h,barWidth:w,zeroH:d})),f=l.y,u=l.x,i>0&&b.push(u+w/2),p.push(f),l.pathTo.forEach((function(e,h){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?l.color[h]:s.globals.stroke.colors[n],d=o.fillPath({seriesNumber:v,dataPointIndex:i,color:l.color[h],value:t[n][i]});a.renderSeries({realIndex:v,pathFill:d,lineFill:c,j:i,i:n,pathFrom:l.pathFrom,pathTo:e,strokeWidth:r,elSeries:m,x:u,y:f,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:A,visibleSeries:a.visibleI,type:s.config.chart.type})}))},C=0;Cb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/p,k=r-k/p,v=r-b.h/p,y=r-b.l/p,A=r-b.m/p);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?f:d?[g]:[u]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,f=this.getOHLCValue(u,c),p=r,x=r,b=Math.min(f.o,f.c),v=Math.max(f.o,f.c),y=f.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,p=r+f.h/g,x=r+f.l/g,y=r+f.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(p,w+s/2)+l.line(p,w+s/2-s/4)+l.line(p,w+s/2+s/4)+l.line(p,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+"z"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,"treemap"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l="dark"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new H(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,u=l.offsetY,f=i+g,p=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new m(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:"draw",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,f=0;f-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+"%";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(n)>this.fullAngle&&(n-=this.fullAngle);var l=Math.PI*(n-90)/180,h=e.centerX+s*Math.cos(o),c=e.centerY+s*Math.sin(o),d=e.centerX+s*Math.cos(l),g=e.centerY+s*Math.sin(l),u=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,n),f=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),p=a>180?1:0,b=["M",h,c,"A",s,s,0,p,1,d,g];return"donut"===e.chartType?[].concat(b,["L",u.x,u.y,"A",e.donutSize,e.donutSize,0,p,0,f.x,f.y,"L",h,c,"z"]).join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[].concat(b,["L",e.centerX,e.centerY,"L",h,c]).join(" "):[].concat(b).join(" ")}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),e.config.yaxis[0].tickAmount,0,!0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(p=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:"",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var f=h.dropShadow;s.dropShadow(u,f)}l.add(u),u.attr("id","apexcharts-radialbarTrack-"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new m(this.ctx),a=new F(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var p=f?t.series.length-1:0;f?p>=0:p100?100:t.series[p])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[p])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[p]:e.config.stroke.dashArray,T=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+p,strokeDashArray:P});if(m.setAttrs(T.node,{"data:angle":L,"data:value":t.series[p]}),e.config.chart.dropShadow.enabled){var M=e.config.chart.dropShadow;s.dropShadow(T,M,p)}s.setSelectionFilter(T,0,p),this.addListeners(T,this.radialDataLabels),b.add(T),T.attr({index:0,j:p});var I=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(I=e.config.chart.animations.speed),e.globals.dataChanged&&(I=e.config.chart.animations.dynamicAnimation.speed),this.animDur=I/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(T,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:p,totalItems:2,animBeginArr:this.animBeginArr,dur:I,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:"drawHollow",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new F(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}}]),i}(),Mt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var p=0,b=0;this.yRatio.length>1&&(this.yaxisIndex=u);var v=this.barHelpers.initialPositions();d=v.y,h=v.zeroW,c=v.x,b=v.barWidth,n=v.xDivision,l=v.zeroH;for(var y=s.group({class:"apexcharts-datalabels","data:realIndex":u}),w=s.group({class:"apexcharts-rangebar-goals-markers",style:"pointer-events: none"}),k=0;k0}));return a=l.config.plotOptions.bar.rangeBarGroupRows?s+o*g:s+r*this.visibleI+o*g,u>-1&&!l.config.plotOptions.bar.rangeBarOverlap&&(h=l.globals.seriesRange[e][u].overlaps).indexOf(c)>-1&&(a=(r=n.barHeight/h.length)*this.visibleI+o*(100-parseInt(this.barOptions.barHeight,10))/100/2+r*(this.visibleI+h.indexOf(c))+o*g),{barYPosition:a,barHeight:r}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x;t.strokeWidth;var a=t.xDivision,s=t.barWidth,r=t.zeroH,o=this.w,n=e.i,l=e.j,h=this.yRatio[this.yaxisIndex],c=e.realIndex,d=this.getRangeValue(c,l),g=Math.min(d.start,d.end),u=Math.max(d.start,d.end);o.globals.isXNumeric&&(i=(o.globals.seriesX[n][l]-o.globals.minX)/this.xRatio-s/2);var f=i+s*this.visibleI;void 0===this.series[n][l]||null===this.series[n][l]?g=r:(g=r-g/h,u=r-u/h);var p=Math.abs(u-g),x=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:s,y1:g,y2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:c,j:l,w:o});return o.globals.isXNumeric||(i+=a),{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:p,x:i,y:u,goalY:this.barHelpers.getGoalValues("y",null,r,n,l),barXPosition:f}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(),It=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&("line"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i=t.i,a=t.series,s=t.prevY,r=t.lineYPosition,o=this.w;if(void 0!==(null===(e=a[i])||void 0===e?void 0:e[0]))s=(r=o.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(o.config.chart.stacked&&i>0&&void 0===a[i][0])for(var n=i-1;n>=0;n--)if(null!==a[n][0]&&void 0!==a[n][0]){s=r=this.lineCtx.prevSeriesY[n][0];break}return{prevY:s,lineYPosition:r}}}]),t}(),zt=function(){function t(e,i,s){a(this,t),this.ctx=e,this.w=e.w,this.xyRatios=i,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||s,this.scatter=new D(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new It(this),this.markers=new R(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return r(t,[{key:"draw",value:function(t,i,a,s){var r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=o.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),h=new y(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio);for(var c=[],d=0;d0&&(p=(r.globals.seriesX[g][0]-r.globals.minX)/this.xRatio),f.push(p);var x,b=p,v=void 0,w=b,k=this.zeroY,A=this.zeroY;k=this.lineHelpers.determineFirstPrevY({i:d,series:t,prevY:k,lineYPosition:0}).prevY,u.push(k),x=k;"rangeArea"===n&&(v=A=this.lineHelpers.determineFirstPrevY({i:d,series:s,prevY:A,lineYPosition:0}).prevY);var S={type:n,series:t,realIndex:g,i:d,x:p,y:1,pX:b,pY:x,pathsFrom:this._calculatePathsFrom({type:n,series:t,i:d,realIndex:g,prevX:w,prevY:k,prevY2:A}),linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:f,yArrj:u,seriesRangeEnd:s},C=this._iterateOverDataPoints(e(e({},S),{},{iterations:"rangeArea"===n?t[d].length-1:void 0,isRangeStart:!0}));if("rangeArea"===n){var L=this._calculatePathsFrom({series:s,i:d,realIndex:g,prevX:w,prevY:A}),P=this._iterateOverDataPoints(e(e({},S),{},{series:s,pY:v,pathsFrom:L,iterations:s[d].length-1,isRangeStart:!1}));C.linePaths[0]=P.linePath+C.linePath,C.pathFromLine=P.pathFromLine+C.pathFromLine}this._handlePaths({type:n,realIndex:g,i:d,paths:C}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(r.config.chart.stacked)for(var T=c.length;T>0;T--)l.add(c[T-1]);else for(var M=0;M1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.prevX,c=t.prevY,d=t.prevY2,g=this.w,u=new m(this.ctx);if(null===o[n][0]){for(var f=0;f0){var p=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=p.pathFromLine,s=p.pathFromArea}return{prevX:h,prevY:c,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new F(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&"rangeArea"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(i)};if("area"===i)for(var f=l.fillPath({seriesNumber:a}),p=0;p0&&"rangeArea"!==i){var S=n.renderPaths(k);S.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&S.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(S),S.attr("clip-path","url(#forecastMask".concat(o.globals.cuid,")")),A.attr("clip-path","url(#nonForecastMask".concat(o.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e=t.type,i=t.series,a=t.iterations,s=t.realIndex,r=t.i,o=t.x,n=t.y,l=t.pX,h=t.pY,c=t.pathsFrom,d=t.linePaths,g=t.areaPaths,u=t.seriesIndex,f=t.lineYPosition,p=t.xArrj,b=t.yArrj,v=t.isRangeStart,y=t.seriesRangeEnd,w=this.w,k=new m(this.ctx),A=this.yRatio,S=c.prevY,C=c.linePath,L=c.areaPath,P=c.pathFromLine,T=c.pathFromArea,M=x.isNumber(w.globals.minYArr[s])?w.globals.minYArr[s]:w.globals.minY;a||(a=w.globals.dataPoints>1?w.globals.dataPoints-1:w.globals.dataPoints);for(var I=n,z=0;z0&&w.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(r-1)][z+1]}else f=this.zeroY;else f=this.zeroY;X?n=f-M/A[this.yaxisIndex]+2*(this.isReversed?M/A[this.yaxisIndex]:0):(n=f-i[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?i[r][z+1]/A[this.yaxisIndex]:0),"rangeArea"===e&&(I=f-y[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?y[r][z+1]/A[this.yaxisIndex]:0))),p.push(o),b.push(n);var Y=this.lineHelpers.calculatePoints({series:i,x:o,y:n,realIndex:s,i:r,j:z,prevY:S}),F=this._createPaths({type:e,series:i,i:r,realIndex:s,j:z,x:o,y:n,y2:I,pX:l,pY:h,linePath:C,areaPath:L,linePaths:d,areaPaths:g,seriesIndex:u,isRangeStart:v});g=F.areaPaths,d=F.linePaths,l=F.pX,h=F.pY,L=F.areaPath,C=F.linePath,this.appendPathFrom&&(P+=k.line(o,this.zeroY),T+=k.line(o,this.zeroY)),this.handleNullDataPoints(i,Y,r,z,s),this._handleMarkersAndLabels({type:e,pointsPos:Y,i:r,j:z,realIndex:s,isRangeStart:v})}return{yArrj:b,xArrj:p,pathFromArea:T,areaPaths:g,pathFromLine:P,linePaths:d,linePath:C,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new H(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,o=t.x,n=t.y,l=t.y2,h=t.pX,c=t.pY,d=t.linePath,g=t.areaPath,u=t.linePaths,f=t.areaPaths,p=t.seriesIndex,x=t.isRangeStart,b=this.w,v=new m(this.ctx),y=b.config.stroke.curve,w=this.areaBottomY;if(Array.isArray(b.config.stroke.curve)&&(y=Array.isArray(p)?b.config.stroke.curve[p[a]]:b.config.stroke.curve[a]),"smooth"===y){var k=.35*(o-h);b.globals.hasNullValues?(null!==i[a][r]&&(null!==i[a][r+1]?(d=v.move(h,c)+v.curve(h+k,c,o-k,n,o+1,n),g=v.move(h+1,c)+v.curve(h+k,c,o-k,n,o+1,n)+v.line(o,w)+v.line(h,w)+"z"):(d=v.move(h,c),g=v.move(h,c)+"z")),u.push(d),f.push(g)):(d+=v.curve(h+k,c,o-k,n,o,n),g+=v.curve(h+k,c,o-k,n,o,n)),h=o,c=n,r===i[a].length-2&&(g=g+v.curve(h,c,o,n,o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.curve(h,c,o,n,o,l)+v.move(o,l)+"z":b.globals.hasNullValues||(u.push(d),f.push(g)))}else{if(null===i[a][r+1]){d+=v.move(o,n);var A=b.globals.isXNumeric?(b.globals.seriesX[s][r]-b.globals.minX)/this.xRatio:o-this.xDivision;g=g+v.line(A,w)+v.move(o,n)+"z"}null===i[a][r]&&(d+=v.move(o,n),g+=v.move(o,w)),"stepline"===y?(d=d+v.line(o,null,"H")+v.line(null,n,"V"),g=g+v.line(o,null,"H")+v.line(null,n,"V")):"straight"===y&&(d+=v.line(o,n),g+=v.line(o,n)),r===i[a].length-2&&(g=g+v.line(o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.line(o,l)+v.move(o,l)+"z":(u.push(d),f.push(g)))}return{linePaths:u,areaPaths:f,pX:h,pY:c,linePath:d,areaPath:g}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,")"))}}},{key:"animateTreemap",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ft=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:"calculateTimeScaleTicks",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new T(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),f=Math.floor(86400*o),p=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:f,numberOfMinutes:u,numberOfHours:g,numberOfDays:p,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(m);break;case"months":case"half_year":this.generateMonthScale(m);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(m);break;case"hours":this.generateHourScale(m);break;case"minutes_fives":case"minutes":this.generateMinuteScale(m);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?e(e({},i),{},{value:t.value}):"minute"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):"second"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case"years":"year"===t.unit&&(o=!0);break;case"half_year":e=7,"year"===t.unit&&(o=!0);break;case"months":e=1,"year"===t.unit&&(o=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(o=!0),30===r&&(n=!0);break;case"months_days":e=10,"month"===t.unit&&(o=!0),30===r&&(n=!0);break;case"week_days":e=8,"month"===t.unit&&(o=!0);break;case"days":e=1,"month"===t.unit&&(o=!0);break;case"hours":"day"===t.unit&&(o=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(n=!0);break;case"seconds_tens":r%10!=0&&(n=!0)}if("hours"===a.tickInterval||"minutes_fives"===a.tickInterval||"seconds_tens"===a.tickInterval||"seconds_fives"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new T(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),f=n;0===n&&(c="year",f=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var p=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n="month",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n="month",h=e.minDate,r++):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var f=d,p=0;pn.determineDaysOfMonths(e+1,s)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,f=u+1;60===d&&(g=0,f=(u=e.minHour)+1);var p=i,b=c(p,a);this.timeScaleArray.push({position:g,value:u,unit:l,day:p,hour:f,year:s,month:x.monthMod(b)});for(var v=g,m=0;m=24)f=0,l="day",b=h(p+=1,b).month,b=c(p,b);var y=this._getYear(s,b,0);v=0===f&&0===m?d*r:60*r+v;var w=0===f?p:f;this.timeScaleArray.push({position:v,value:w,unit:l,hour:f,day:p,year:y,month:x.monthMod(b)}),f++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,f=n,p=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(p+=1)&&(p=0)),this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:p,minute:d,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,f=n,p=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++p&&(p=0))),this.timeScaleArray.push({position:b,value:c,unit:"second",hour:p,minute:d,second:c,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new T(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(n=l.year),"month"===t.unit&&(n=l.month),"day"===t.unit&&(n=l.day),"hour"===t.unit&&(n=l.hour),"minute"===t.unit&&(n=l.minute),"second"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Rt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elAnnotations=t.dom.Paper.group().attr({class:"apexcharts-annotations"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,f){var p=0;void 0!==t[f].type?("column"===t[f].type||"bar"===t[f].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(f),p++,i.globals.columnSeries=h.series):"area"===t[f].type?(o.series.push(e),o.i.push(f),p++):"line"===t[f].type?(r.series.push(e),r.i.push(f),p++):"scatter"===t[f].type?(n.series.push(e),n.i.push(f)):"bubble"===t[f].type?(l.series.push(e),l.i.push(f),p++):"candlestick"===t[f].type?(c.series.push(e),c.i.push(f),p++):"boxPlot"===t[f].type?(d.series.push(e),d.i.push(f),p++):"rangeBar"===t[f].type?(g.series.push(e),g.i.push(f),p++):"rangeArea"===t[f].type?(u.series.push(s.seriesRangeStart[f]),u.seriesRangeEnd.push(s.seriesRangeEnd[f]),u.i.push(f),p++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble"),p>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(f))}));var f=new zt(this.ctx,e),p=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var x=new Tt(this.ctx);this.ctx.rangeBar=new Mt(this.ctx,e);var b=new Pt(this.ctx),v=[];if(s.comboCharts){if(o.series.length>0&&v.push(f.draw(o.series,"area",o.i)),h.series.length>0)if(i.config.chart.stacked){var m=new wt(this.ctx,e);v.push(m.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),v.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&v.push(f.draw(u.series,"rangeArea",u.i,u.seriesRangeEnd)),r.series.length>0&&v.push(f.draw(r.series,"line",r.i)),c.series.length>0&&v.push(p.draw(c.series,c.i)),d.series.length>0&&v.push(p.draw(d.series,d.i)),g.series.length>0&&v.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var y=new zt(this.ctx,e,!0);v.push(y.draw(n.series,"scatter",n.i))}if(l.series.length>0){var w=new zt(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=f.draw(s.series,"line");break;case"area":v=f.draw(s.series,"area");break;case"bar":if(a.chart.stacked)v=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),v=this.ctx.bar.draw(s.series);break;case"candlestick":v=new kt(this.ctx,e).draw(s.series);break;case"boxPlot":v=new kt(this.ctx,e).draw(s.series);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=f.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new St(this.ctx,e).draw(s.series);break;case"treemap":v=new Yt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=f.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=l+"px",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px")}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new E,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Ft(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,i=this.w;if(i.config.chart.brush.enabled&&"function"!=typeof i.config.chart.events.selection){var a=i.config.chart.brush.targets||[i.config.chart.brush.target];a.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),i.config.chart.events.selection=function(t,s){a.forEach((function(t){var a=ApexCharts.getChartByID(t),r=x.clone(i.config.yaxis);if(i.config.chart.brush.autoScaleYaxis&&1===a.w.globals.series.length){var o=new _(a);r=o.autoScaleY(a,r,s)}var n=a.w.config.yaxis.reduce((function(t,i,s){return[].concat(u(t),[e(e({},a.w.config.yaxis[s]),{},{min:r[0].min,max:r[0].max})])}),[]);a.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:n},!1,!1,!1,!1)}))}}}}]),t}(),Dt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"_updateOptions",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&"object"===i(t)&&(r.config=new X(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:s&&s.name,color:t.color?t.color:s&&s.color,type:t.type?t.type:s&&s.type,data:t.data?t.data:s&&s.data})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new z(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Xt="undefined"!=typeof window?window:void 0,Et=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.dev",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute("id",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:"linearGradient"==e.nodeName?new a.Gradient("linear"):"radialGradient"==e.nodeName?new a.Gradient("radial"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName("body")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:i.polyline().node,path:i.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},e.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if("string"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement("svg");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");i.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=i.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){"object"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||"-"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[m[s]]=null!=t[m[s]]?t[m[s]]:e[m[s]]},extend:{extract:function(){var t=f(this,0,1);f(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=m.length-1;e>=0;e--)t[m[e]]=this[m[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if("object"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return"object"!==i(t)?(s=new a.Matrix(this).extract(),"string"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var m="abcdef".split("");if("function"!=typeof t.CustomEvent){var y=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};y.prototype=t.Event.prototype,a.CustomEvent=y}else a.CustomEvent=t.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return Et(Xt,Xt.document)})):"object"===("undefined"==typeof exports?"undefined":i(exports))&&"undefined"!=typeof module?module.exports=Xt.document?Et(Xt,Xt.document):function(t){return Et(t,t.document)}:Xt.SVG=Et(Xt,Xt.document), +/*! svg.filter.js - v2.0.2 - 2016-02-24 +* https://github.com/wout/svg.filter.js +* Copyright (c) 2016 Wout Fierens; Licensed MIT */ +function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",r(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i1&&(T*=a=Math.sqrt(a),M*=a);s=(new SVG.Matrix).rotate(I).scale(1/T,1/M).rotate(-I),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var o=this.options[r[s]];"string"==typeof o?o=o.length>0?o.split(/\s*,\s*/i):[]:"boolean"==typeof o&&"points"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Rt(this.ctx.el,this.ctx),this.ctx.config=new X({}),this.ctx.data=new N(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new L,this.ctx.responsive=new K(this.ctx),this.ctx.series=new O(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new W(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Dt(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"clear",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elAnnotations=null,r.elLegendWrap=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),Nt=new WeakMap;var Wt=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new Y(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Ht(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;if("function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();"none"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),Nt.set(e,s)}(t.el.parentNode,t.parentResizeHandler),!t.css){var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is("ShadowRoot",s),o=t.el.ownerDocument,n=o.getElementById("apexcharts-css");!r&&n||(t.css=document.createElement("style"),t.css.id="apexcharts-css",t.css.textContent='@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n',r?s.prepend(t.css):o.head.appendChild(t.css))}var l=t.create(t.w.config.series,{});if(!l)return e(t);t.mount(l).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(l)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new Ht(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new z(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),"treemap"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new R(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new H(this);l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition();var h={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:n,xyRatios:o,elInner:i.globals.dom.elGraphical,dimensions:h}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o=i.grid.drawGrid();"treemap"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,o),i.annotations=new P(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position&&o&&a.globals.dom.elGraphical.add(o.el);var n=new V(t.ctx,o),l=new q(t.ctx,o);if(null!==o&&(n.xAxisLabelCorrections(o.xAxisTickWidth),l.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&l.yAxisTitleRotate(e,t.opposite)}))),"back"===a.config.annotations.position&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=Nt.get(t))&&(e.disconnect(),Nt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Ot(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new G(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=new G(this.ctx);return e.exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=x.escapeString(t),i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),o=2;odiv { + margin: 4px 0 +} + +.apexcharts-tooltip-box span.value { + font-weight: 700 +} + +.apexcharts-tooltip-rangebar { + padding: 5px 8px +} + +.apexcharts-tooltip-rangebar .category { + font-weight: 600; + color: #777 +} + +.apexcharts-tooltip-rangebar .series-name { + font-weight: 700; + display: block; + margin-bottom: 5px +} + +.apexcharts-xaxistooltip,.apexcharts-yaxistooltip { + opacity: 0; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #eceff1; + border: 1px solid #90a4ae +} + +.apexcharts-xaxistooltip { + padding: 9px 10px; + transition: .15s ease all +} + +.apexcharts-xaxistooltip.apexcharts-theme-dark { + background: rgba(0,0,0,.7); + border: 1px solid rgba(0,0,0,.5); + color: #fff +} + +.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before { + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-xaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-left: -6px +} + +.apexcharts-xaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-left: -7px +} + +.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before { + bottom: 100% +} + +.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before { + top: 100% +} + +.apexcharts-xaxistooltip-bottom:after { + border-bottom-color: #eceff1 +} + +.apexcharts-xaxistooltip-bottom:before { + border-bottom-color: #90a4ae +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { + border-bottom-color: rgba(0,0,0,.5) +} + +.apexcharts-xaxistooltip-top:after { + border-top-color: #eceff1 +} + +.apexcharts-xaxistooltip-top:before { + border-top-color: #90a4ae +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { + border-top-color: rgba(0,0,0,.5) +} + +.apexcharts-xaxistooltip.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-yaxistooltip { + padding: 4px 10px +} + +.apexcharts-yaxistooltip.apexcharts-theme-dark { + background: rgba(0,0,0,.7); + border: 1px solid rgba(0,0,0,.5); + color: #fff +} + +.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none +} + +.apexcharts-yaxistooltip:after { + border-color: transparent; + border-width: 6px; + margin-top: -6px +} + +.apexcharts-yaxistooltip:before { + border-color: transparent; + border-width: 7px; + margin-top: -7px +} + +.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before { + left: 100% +} + +.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before { + right: 100% +} + +.apexcharts-yaxistooltip-left:after { + border-left-color: #eceff1 +} + +.apexcharts-yaxistooltip-left:before { + border-left-color: #90a4ae +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { + border-left-color: rgba(0,0,0,.5) +} + +.apexcharts-yaxistooltip-right:after { + border-right-color: #eceff1 +} + +.apexcharts-yaxistooltip-right:before { + border-right-color: #90a4ae +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { + border-right-color: rgba(0,0,0,.5) +} + +.apexcharts-yaxistooltip.apexcharts-active { + opacity: 1 +} + +.apexcharts-yaxistooltip-hidden { + display: none +} + +.apexcharts-xcrosshairs,.apexcharts-ycrosshairs { + pointer-events: none; + opacity: 0; + transition: .15s ease all +} + +.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active { + opacity: 1; + transition: .15s ease all +} + +.apexcharts-ycrosshairs-hidden { + opacity: 0 +} + +.apexcharts-selection-rect { + cursor: move +} + +.svg_select_boundingRect,.svg_select_points_rot { + pointer-events: none; + opacity: 0; + visibility: hidden +} + +.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot { + opacity: 0; + visibility: hidden +} + +.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r { + cursor: ew-resize; + opacity: 1; + visibility: visible +} + +.svg_select_points { + fill: #efefef; + stroke: #333; + rx: 2 +} + +.apexcharts-svg.apexcharts-zoomable.hovering-zoom { + cursor: crosshair +} + +.apexcharts-svg.apexcharts-zoomable.hovering-pan { + cursor: move +} + +.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { + cursor: pointer; + width: 20px; + height: 20px; + line-height: 24px; + color: #6e8192; + text-align: center +} + +.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg { + fill: #6e8192 +} + +.apexcharts-selection-icon svg { + fill: #444; + transform: scale(.76) +} + +.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg { + fill: #f3f4f5 +} + +.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg { + fill: #008ffb +} + +.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg { + fill: #333 +} + +.apexcharts-menu-icon,.apexcharts-selection-icon { + position: relative +} + +.apexcharts-reset-icon { + margin-left: 5px +} + +.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon { + transform: scale(.85) +} + +.apexcharts-zoomin-icon,.apexcharts-zoomout-icon { + transform: scale(.7) +} + +.apexcharts-zoomout-icon { + margin-right: 3px +} + +.apexcharts-pan-icon { + transform: scale(.62); + position: relative; + left: 1px; + top: 0 +} + +.apexcharts-pan-icon svg { + fill: #fff; + stroke: #6e8192; + stroke-width: 2 +} + +.apexcharts-pan-icon.apexcharts-selected svg { + stroke: #008ffb +} + +.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { + stroke: #333 +} + +.apexcharts-toolbar { + position: absolute; + z-index: 11; + max-width: 176px; + text-align: right; + border-radius: 3px; + padding: 0 6px 2px; + display: flex; + justify-content: space-between; + align-items: center +} + +.apexcharts-menu { + background: #fff; + position: absolute; + top: 100%; + border: 1px solid #ddd; + border-radius: 3px; + padding: 3px; + right: 10px; + opacity: 0; + min-width: 110px; + transition: .15s ease all; + pointer-events: none +} + +.apexcharts-menu.apexcharts-menu-open { + opacity: 1; + pointer-events: all; + transition: .15s ease all +} + +.apexcharts-menu-item { + padding: 6px 7px; + font-size: 12px; + cursor: pointer +} + +.apexcharts-theme-light .apexcharts-menu-item:hover { + background: #eee +} + +.apexcharts-theme-dark .apexcharts-menu { + background: rgba(0,0,0,.7); + color: #fff +} + +@media screen and (min-width:768px) { + .apexcharts-canvas:hover .apexcharts-toolbar { + opacity: 1 + } +} + +.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points { + opacity: 0 +} + +.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label { + cursor: default; + pointer-events: none +} + +.apexcharts-pie-label-delay { + opacity: 0; + animation-name: opaque; + animation-duration: .3s; + animation-fill-mode: forwards; + animation-timing-function: ease +} + +.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect { + pointer-events: none +} + +.apexcharts-marker { + transition: .15s ease all +} + +.resize-triggers { + animation: 1ms resizeanim; + visibility: hidden; + opacity: 0; + height: 100%; + width: 100%; + overflow: hidden +} + +.contract-trigger:before,.resize-triggers,.resize-triggers>div { + content: " "; + display: block; + position: absolute; + top: 0; + left: 0 +} + +.resize-triggers>div { + height: 100%; + width: 100%; + background: #eee; + overflow: auto +} + +.contract-trigger:before { + overflow: hidden; + width: 200%; + height: 200% +} diff --git a/public/assets/libs/apexcharts/dist/apexcharts.esm.js b/public/assets/libs/apexcharts/dist/apexcharts.esm.js new file mode 100644 index 0000000..339a9c0 --- /dev/null +++ b/public/assets/libs/apexcharts/dist/apexcharts.esm.js @@ -0,0 +1,14 @@ +/*! + * ApexCharts v3.36.2 + * (c) 2018-2022 ApexCharts + * Released under the MIT License. + */ +function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;it.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===i(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;ee.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":default:t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,o,n,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){t.el.classList.remove("apexcharts-element-hidden")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(o=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,o=i.color,n=i.opacity,l=t.flood(Array.isArray(o)?o[e]:o,n).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,o=e.color,n=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),x.isIE()&&"radialBar"===h.config.chart.type||(o=Array.isArray(o)?o[i]:o,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}var o=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;"Z"==o[o.length-1][0]&&o[0].length>2&&(h=["L",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&"L"==g[0]&&u.length>2&&"L"==u[0]){var f,p,x=r(d),b=r(g),v=r(u);f=i(b,x,e),p=i(b,v,e),s(g,f),g.origPoint=b,n.push(g);var m=a(f,b,.5),y=a(b,p,.5),w=["C",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push(["Z"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt",l=this.w,h=l.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":o,"stroke-linecap":n});return h}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w,d=c.globals.dom.Paper.rect();return d.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,"stroke-width":null!==n?n:0,stroke:null!==l?l:"none","stroke-dasharray":h}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",s=this.w,r=s.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i});return r}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;t<0&&(t=0);var a=i.globals.dom.Paper.circle(2*t);return null!==e&&a.attr(e),a}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":o,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=e.globals.dom.Paper.group();return null!==t&&i.attr(t),i}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var o=["C",t,e,i,a,s,r].join(" ");return o}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,o){var n=arguments.length>7&&void 0!==arguments[7]&&arguments[7],l="A";n&&(l="a");var h=[l,t,e,i,a,s,r,o].join(" ");return h}},{key:"renderPaths",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,f=t.className,p=t.shouldClipToGrid,x=void 0===p||p,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,T=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);T?i=r:(i=o,A.globals.animationEnded=!0);var M=A.config.stroke.dashArray,I=0;I=Array.isArray(M)?M[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:f,strokeLinecap:h,strokeDashArray:I});if(z.attr("index",s),x&&z.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(s))){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,z)),z.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,z)),z.node.addEventListener("mousedown",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&T&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=this.w,o=r.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}));return o}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,f=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,f=void 0!==n[3]?n[3]/100:null);var p=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==f&&t.at(f,e,a)})):c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),p){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),o="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===o){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type,d.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&o.attr("transform",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute("transform","rotate(-90 ".concat(n," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var o=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");o&&(i=parseFloat(o.getAttribute("y")))}else{var n;if(s.config.yaxis[e.yAxisIndex].logarithmic)n=(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else n=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-n,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=n)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x));var n=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(n=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(o=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(o=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(n=parseFloat(e.x2)),"x1"===t?o:n}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),o=t.label.text,n=t.strokeDashArray;if(x.isNumber(r)){if(null===t.x2||void 0===t.x2){var l=this.annoCtx.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,n,t.borderWidth);e.appendChild(l.node),t.id&&l.node.classList.add(t.id)}else{if((a=this.helpers.getX1X2("x2",t))o){var h=o;o=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),S=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addPointAnnotation",value:function(t,e,i){this.w;var a=this.helpers.getX1X2("x1",t),s=this.helpers.getY1Y2("y1",t);if(x.isNumber(a)){var r={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},o=this.annoCtx.graphics.drawMarker(a+t.marker.offsetX,s+t.marker.offsetY,r);e.appendChild(o.node);var n=t.label.text?t.label.text:"",l=this.annoCtx.graphics.drawText({x:a+t.label.offsetX,y:s+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(l.attr({rel:i}),e.appendChild(l.node),t.customSVG.SVG){var h=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});h.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(s+t.customSVG.offsetY,")")}),h.node.innerHTML=t.customSVG.SVG,e.appendChild(h.node)}if(t.image.path){var c=t.image.width?t.image.width:20,d=t.image.height?t.image.height:20;o=this.annoCtx.addImage({x:a+t.image.offsetX-c/2,y:s+t.image.offsetY-d/2,width:c,height:d,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&o.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&o.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&o.node.addEventListener("click",t.click.bind(this,t))}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var C={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},L=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[C],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),P=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new A(this),this.pointsAnnotations=new S(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-annotations":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:n||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),T=L.globals.dom.baseEl.querySelector(b);T&&T.appendChild(P.node);var M=P.bbox();if(s){var I=this.graphics.drawRect(M.x-m,M.y-C,M.width+m+w,M.height+A+C,f,d||"transparent",1,g,p,u);T.insertBefore(I.node,P.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-annotations":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,n);var p=i.globals.dom.baseEl.querySelector(u);return p&&p.appendChild(f.node),f}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new L,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),f=this.helpers.addBackgroundToAnno(u,g);return f&&l.insertBefore(f.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),T=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return r(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(t){return Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(u(i.months)),r=["\x01"].concat(u(i.shortMonths)),o=["\x02"].concat(u(i.days)),n=["\x03"].concat(u(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(g))).replace(/(^|[^\\])H/g,"$1"+g)).replace(/(^|[^\\])hh+/g,"$1"+l(f))).replace(/(^|[^\\])h/g,"$1"+f);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(p))).replace(/(^|[^\\])m/g,"$1"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var v=g<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+m)).replace(/(^|[^\\])t/g,"$1"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),n=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),M=function(t){var e,i=t.ctx,a=t.seriesIndex,s=t.dataPointIndex,r=t.y1,o=t.y2,n=t.w,l=n.globals.seriesRangeStart[a][s],h=n.globals.seriesRangeEnd[a][s],c=n.globals.labels[s],d=n.config.series[a].name?n.config.series[a].name:"",g=n.config.tooltip.y.formatter,u=n.config.tooltip.y.title.formatter,f={w:n,seriesIndex:a,dataPointIndex:s,start:l,end:h};"function"==typeof u&&(d=u(d,f)),null!==(e=n.config.series[a].data[s])&&void 0!==e&&e.x&&(c=n.config.series[a].data[s].x+":"),"function"==typeof g&&(c=g(c,f)),Number.isFinite(r)&&Number.isFinite(o)&&(l=r,h=o);var p="",x="",b=n.globals.colors[a];if(void 0===n.config.tooltip.x.formatter)if("datetime"===n.config.xaxis.type){var v=new T(i);p=v.formatDate(v.getDate(l),n.config.tooltip.x.format),x=v.formatDate(v.getDate(h),n.config.tooltip.x.format)}else p=l,x=h;else p=n.config.tooltip.x.formatter(l),x=n.config.tooltip.x.formatter(h);return{start:l,end:h,startVal:p,endVal:x,ylabel:c,color:b,seriesName:d}},I=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
    '+(i||"")+'
    '+a+" "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[o].type||"rangeBar"===t.w.config.series[o].type?c:"".concat(h,""):c)+"
    "},z=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0;return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:"brush",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
    \n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
    "):'
    ')+"
    ".concat(a[0],': ')+r+"
    "+"
    ".concat(a[1],': ')+o+"
    "+(n?"
    ".concat(a[2],': ')+n+"
    ":"")+"
    ".concat(a[3],': ')+l+"
    "+"
    ".concat(a[4],': ')+h+"
    "}}]),t}(),X=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new L,r=new z(a);this.chartType=a.chart.type,"histogram"===this.chartType&&(a.chart.type="bar",a=x.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},a)),a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&"object"===i(a)){var l={};l=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","histogram","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),a.chart.brush&&a.chart.brush.enabled&&(l=r.brush(l)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),((a=this.checkForCatToNumericXAxis(this.chartType,l,a)).chart.sparkline&&a.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(l=r.sparkline(l)),n=x.extend(o,l)}var h=x.extend(n,window.Apex);return o=x.extend(h,a),o=this.handleUserInputErrors(o)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a=new z(i),s=("bar"===t||"boxPlot"===t)&&i.plotOptions&&i.plotOptions.bar&&i.plotOptions.bar.horizontal,r="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,o="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,n=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return s||r||!o||"between"===n||(i=a.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new L;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new L;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new L;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new L;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),E=function(){function t(){a(this,t)}return r(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasGroups=!1,t.groups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.xaxisLabelsCount=0,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),Y=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(){var t=new X(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new E).init(t)}}}]),t}(),F=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:n+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:n+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type||"treemap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color);var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf("rgba")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),"pattern"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),"gradient"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),"image"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var f=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var p=o.gradient.gradientToColors[l.seriesNumber];n=p,p.indexOf("rgba")>-1&&(f=x.getOpacityFromRGBA(p))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf("rgb")>-1&&(g=x.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,f,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),R=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0;if(p||r||d){x.isNumber(l.y[g])?f+=" w".concat(x.randomId()):f="apexcharts-nullpoint";var b=this.getMarkerConfig({cssClass:f,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(b.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(b.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(b.pSize=a),(s=c.drawMarker(l.x[g],l.y[g],b)).attr("rel",u),s.attr("j",u),s.attr("index",e),s.node.setAttribute("default-marker-size",b.pSize);var y=new v(this.ctx);y.setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),D=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(o.x))for(var c=0;cp.maxBubbleRadius&&(f=p.maxBubbleRadius)}a.config.chart.animations.enabled||(u=f);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,f,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new F(this.ctx),g=new R(this.ctx),u=new m(this.ctx),f=g.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:r,finishRadius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&"bubble"===n.config.series[s].type?a:null});a=f.pSize;var p,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:f.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[s][o]});if("circle"===f.shape?p=u.drawCircle(i):"square"!==f.shape&&"rect"!==f.shape||(p=u.drawRect(0,0,f.width-f.pointStrokeWidth/2,f.height-f.pointStrokeWidth/2,f.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),p.attr({x:t-f.width/2-f.pointStrokeWidth/2,y:e-f.height/2-f.pointStrokeWidth/2,cx:t,cy:e,fill:x,"fill-opacity":f.pointFillOpacity,stroke:f.pointStrokeColor,r:a,"stroke-width":f.pointStrokeWidth,"stroke-dasharray":f.pointStrokeDashArray,"stroke-opacity":f.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(p,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(p,0,"circle"===f.shape?a:{width:f.width,height:f.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(p)}),100)}))}if(n.globals.dataChanged&&"circle"===f.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var f=n.globals.dataLabelsRects[a][u];(t>f.x+f.width+2||e>f.y+f.height+2||t+ce.globals.gridWidth+p.textRects.width+10)&&(n="");var x=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),"function"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(b=0,y=0),p.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,o=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),o=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var n=0;n=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),N=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new T(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar="rangeBar"===a.chart.type&&s.isBarHorizontal,s.hasGroups="category"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasGroups&&(s.groups=a.xaxis.group.groups);for(var n=function(){for(var t=0;t0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var h=t[l].data.map((function(t){return x.parseNumber(t)}));s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[l].name?s.seriesNames.push(t[l].name):s.seriesNames.push("series-"+parseInt(l+1,10)),void 0!==t[l].color?s.seriesColors.push(t[l].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=i.labels.filter((function(t,e,i){return i.indexOf(t)===e}))),e.xaxis.convertedCatToNumeric)new z(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),B=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getLabel",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?"":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new W(this.ctx),f=l;o&&(h=u.xLabelFormat(c,l,f,{i:a,dateFormatter:new T(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new T(this.ctx).formatDate,w:n})));var p=function(t){var i=null;return e.forEach((function(t){"month"===t.unit?i="year":"day"===t.unit?i="month":"hour"===t.unit?i="day":"minute"===t.unit&&(i="hour")})),i===t};e.length>0?(g=p(e[a].unit),i=e[a].position,h=e[a].value):"datetime"===n.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var x=new m(this.ctx),b={};b=n.globals.rotateXLabels&&o?x.getTextRects(h,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):x.getTextRects(h,parseInt(r,10));var v=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(0===h.indexOf("NaN")||0===h.toLowerCase().indexOf("invalid")||h.toLowerCase().indexOf("infinity")>=0||s.indexOf(h)>=0&&v)&&(h=""),{x:i,text:h,textRect:b,isBold:g}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),"heatmap"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(t){if(!x.isIE11())return t.replace(/ /g," ");var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o="transparent"===a.config.chart.background?"#fff":a.config.chart.background,n=r.getContext("2d");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d="data:image/svg+xml,"+encodeURIComponent(l),g=new Image;g.crossOrigin="anonymous",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},g.src=d}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,o=t.lineDelimiter,n=void 0===o?"\n":o,l=this.w;i||(i=l.config.series);var h=[],c=[],d="",g=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),f=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),p=new N(this.ctx),b=new B(this.ctx),v=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new O(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=b.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(" ")),x.isNumber(i)?i:i.split(r).join("")},m=function(t,e){if(h.length&&0===e&&c.push(h.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(f)).map((function(){return""}));for(var a=0;a=10?l.config.chart.toolbar.export.csv.dateFormatter(s):x.isNumber(s)?s:s.split(r).join("")));for(var o=0;o0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/y,b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(t&&y.text&&d.globals.xaxisLabelsCount++,d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:p,fontSize:g,fontFamily:u,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-o-2,-a/2,e.gridWidth+a+n+o+4,e.gridHeight+a,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d2));s++);return!t.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,o=Math.abs(e-t);if("dataPoints"===(i=this._adjustTicksForSmallRange(i,a,o))&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE){t=0,e=i;var n=this.linearScale(t,e,i);return n}t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var l=[];o<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||"boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=o/h,d=Math.floor(x.log10(c)),g=Math.pow(10,d),u=Math.round(c/g);u<1&&(u=1);var f=u*g,p=f*Math.floor(t/f),b=f*Math.ceil(e/f),v=p;if(s&&o>2){for(;l.push(v),!((v+=f)>b););return{result:l,niceMin:l[0],niceMax:l[l.length-1]}}var m=t;(l=[]).push(m);for(var y=Math.abs(e-t)/i,w=0;w<=i;w++)m+=y,l.push(m);return l[l.length-2]>=e&&l.pop(),{result:l,niceMin:l[0],niceMax:l[l.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,s))&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var o=[],n=t;i>=0;)o.push(n),n+=r,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(e,i,r.logBase),a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase);else if(i!==-Number.MAX_VALUE&&x.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var n=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:o<5&&o>1?o+1:5,t,n)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount,t);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,o){var n=o;i.series.forEach((function(t,i){t.name===e.seriesName&&(n=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))}));var l=a[n],h=s[n];t.setYScaleForIndex(o,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,o=[];i.forEach((function(t){t.alreadyExists&&(void 0===o[t.index]&&(o[t.index]=[]),o[t.index].push(t.index),o[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=o,o.forEach((function(t,e){o.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(o[e]=o[e].concat(o[a]))}))}));var n=o.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));o=o.filter((function(t){return!!t}));var l=n.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var o=g[i],n=u[i];s.chart.stacked&&(n=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(n+=t.value),o!==Number.MIN_VALUE&&(o+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(o="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(n="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,o,n))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,o){for(var n=0,l=0;l=i.xaxis.min){n=l;break}var h,c,d=a.globals.minYArr[o],g=a.globals.maxYArr[o],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(o,l){var f=o[n];r?(f=u[n],h=c=f,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),o[e]=i.xaxis.min){var r=t,o=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),o=Math.max(i[e],o))})),o>c&&null!==o&&(c=o),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.scales=new _(e)}return r(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);for(var d=t;dh[d][g]&&h[d][g]<0&&(n=h[d][g])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),"bar"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10||void 0!==e.yaxis[0].min||void 0!==e.yaxis[0].max)&&(o=0),t.minY=i-5*o/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*o/100}if(e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this.w.globals,e=[],i=[];if(t.series.length)for(var a=0;a0?s=s+parseFloat(t.series[o][a])+1e-4:r+=parseFloat(t.series[o][a])),o===t.series.length-1&&(e.push(s),i.push(r));for(var n=0;n=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var f=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,f,g,this.drawnLabels,this.xaxisFontSize);f=p.x,u=p.text,this.drawnLabels.push(p.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var x=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,"title");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute("x",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=x.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=x.extend(C,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this.w.globals,r=this.w.config,o=new V(this.ctx,e),n=new q(this.ctx,e);s.axisCharts&&"radar"!==t&&(s.isBarHorizontal?(a=n.drawYaxisInversed(0),i=o.drawXaxisInversed(0),s.dom.elGraphical.add(i),s.dom.elGraphical.add(a)):(i=o.drawXaxis(),s.dom.elGraphical.add(i),r.yaxis.map((function(t,e){-1===s.ignoreYAxisIndexes.indexOf(e)&&(a=n.drawYaxis(e),s.dom.Paper.add(a))}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,f=s.blur,p=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:f,color:p,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new X({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof e.config.colors[0]&&(e.globals.colors=e.config.series.map((function(i,a){var s=e.config.colors[a];return s||(s=e.config.colors[0]),"function"==typeof s?(t.isColorFn=!0,s({value:e.globals.axisCharts?e.globals.series[a][0]?e.globals.series[a][0]:0:e.globals.series[a],seriesIndex:a,dataPointIndex:a,w:e})):s})))),e.globals.seriesColors.map((function(t,i){t&&(e.globals.colors[i]=t)})),e.config.theme.monochrome.enabled){var a=[],s=e.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(s=e.globals.series[0].length*e.globals.series.length);for(var r=e.config.theme.monochrome.color,o=1/(s/e.config.theme.monochrome.shadeIntensity),n=e.config.theme.monochrome.shadeTo,l=0,h=0;h2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new W(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){(function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)})(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.rightString(n.niceMax).length?c:n.niceMax,g=h(d,{seriesIndex:o,dataPointIndex:-1,w:e}),u=g;if(void 0!==g&&0!==g.length||(g=d),e.globals.isBarHorizontal){a=0;var f=e.globals.labels.slice();g=h(g=x.getLargestStringFromArr(f),{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,f)}var p=new m(t.dCtx.ctx),b="rotate(".concat(r.labels.rotate," 0 0)"),v=p.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=p.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(l>y.width||l>v.width?l:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=function(t){return"bar"===t||"rangeBar"===t||"candlestick"===t||"boxPlot"===t},a=e.config.chart.type,s=0,r=i(a)?e.config.series.length:1;if(e.globals.comboBarCount>0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var o,n,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),o=l/t,e.globals.minXDiff&&e.globals.minXDiff/o>0&&(n=e.globals.minXDiff/o),n>t/2&&(n/=2),(s=n/r*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&(e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }");return t.appendChild(e),t}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals;t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject");var e=t.dom.elLegendForeign;e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),n=a.config.chart.type;if("pie"===n||"polarArea"===n||"donut"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=x.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var o=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(o,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var n=e.childNodes,l=0;l0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}]),t}(),lt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed="bar"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new nt(this)}return r(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h=o(a[l],{seriesIndex:l,w:e}),c=!1,d=!1;if(e.globals.collapsedSeries.length>0)for(var g=0;g0)for(var u=0;u0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=o+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new O(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new O(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),o("zoomOut",this.elZoomOut,'\n \n \n\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};n("zoom"),n("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),o("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+o+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g="x"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;"resizing"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n("x"),y:n("y"),width:n("width"),height:n("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),o={xaxis:{min:a.globals.xAxisScale.niceMin+(e.left-t.left)*s.xRatio,max:a.globals.xAxisScale.niceMin+(e.right-t.left)*s.xRatio},yaxis:{min:a.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*s.yRatio[0],max:a.globals.yAxisScale[0].niceMax-(e.top-t.top)*s.yRatio[0]}};a.config.chart.events.selection(i.ctx,o),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,o)}),o))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),f=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(f={min:h,max:c}),"xy"!==i&&"y"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var p=new _(s.ctx);u=p.autoScaleY(s.ctx,u,{xaxis:f})}if(o){var b=o.getBeforeZoomRange(f,u);b&&(f=b.xaxis?b.xaxis:f,u=b.yaxis?b.yaxis:u)}var v={xaxis:f};a.config.chart.group||(v.yaxis=u),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(f,u)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(y=x.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new _(this.ctx).autoScaleY(this.ctx,s,{xaxis:l}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var f=Math.round(g/h),p=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(g/h),f-=1);var b=null,v=null,m=[],y=[];if(r.globals.seriesXvalues.forEach((function(t){m.push([t[0]+1e-6].concat(t))})),r.globals.seriesYvalues.forEach((function(t){y.push([t[0]+1e-6].concat(t))})),m=m.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=y.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,f=v.j,null!==b&&(m=r.globals.seriesXvalues[b],f=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!f||f<1)&&(f=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=p:r.globals.capturedDataPointIndex=f,{capturedSeries:b,j:r.globals.isBarHorizontal?p:f,hoverX:g,hoverY:u}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a0?e:-1})),s=0;s0)for(var a=0;ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
    ".concat(i.val,"
    ")})),v.innerHTML=t+"",m.innerHTML=e+""};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==f&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==f?f:"");o&&p[0]&&(null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?p[0].parentNode.style.display="none":p[0].parentNode.style.display=l.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",o="",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new W(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new T(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:n}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid(),d=c.getBoundingClientRect();h=s.e.clientY+a.globals.translateY-d.top-o.ttHeight/2}else a.globals.isBarHorizontal||(o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY),h<0&&(h=0));isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(h.setAttribute("r",n),h.setAttribute("cx",i),h.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new O(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute("r",n),l[h]&&l[h].setAttribute("cy",d)):l[h]&&l[h].setAttribute("r",0)}}if(this.moveXCrosshairs(s),!i.fixedTooltip){var f=r||a.globals.gridHeight;this.moveTooltip(s,f,n)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e=this.w,i=this.ttCtx,a=e.globals.columnSeries?e.globals.columnSeries.length:e.globals.series.length,s=a>=2&&a%2==0?Math.floor(a/2):Math.floor(a/2)+1;e.globals.isBarHorizontal&&(s=new O(this.ctx).getActiveConfigSeriesIndex("desc")+1);var r=e.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(s,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"']")),o=r?parseFloat(r.getAttribute("cx")):0,n=r?parseFloat(r.getAttribute("cy")):0,l=r?parseFloat(r.getAttribute("barWidth")):0,h=r?parseFloat(r.getAttribute("barHeight")):0,c=i.getElGrid().getBoundingClientRect(),d=r.classList.contains("apexcharts-candlestick-area")||r.classList.contains("apexcharts-boxPlot-area");if(e.globals.isXNumeric?(r&&!d&&(o-=a%2!=0?l/2:0),r&&d&&e.globals.comboCharts&&(o-=l/2)):e.globals.isBarHorizontal||(o=i.xAxisTicksPositions[t-1]+i.dataPointsDividedWidth/2,isNaN(o)&&(o=i.xAxisTicksPositions[t]-i.dataPointsDividedWidth/2)),e.globals.isBarHorizontal?(n>e.globals.gridHeight/2&&(n-=i.tooltipRect.ttHeight),(n=n+e.config.grid.padding.top+h/3)+h>e.globals.gridHeight&&(n=e.globals.gridHeight-h)):e.config.tooltip.followCursor?n=i.e.clientY-c.top-i.tooltipRect.ttHeight/2:n+i.tooltipRect.ttHeight+15>e.globals.gridHeight&&(n=e.globals.gridHeight),n<-10&&(n=-10),e.globals.isBarHorizontal||this.moveXCrosshairs(o),!i.fixedTooltip){var g=n||e.globals.gridHeight;this.moveTooltip(o,g)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new m(this.ctx),i=new R(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),o=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var n=this.ttCtx.getElGrid(),l=n.getBoundingClientRect();r=this.ttCtx.e.clientX-l.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e}return r(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),g=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var f=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-f.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-f.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var g=x.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)?c=r.globals.svgHeight-o.tooltipRect.ttHeight:c<0&&(c=0);var f=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),p=r.globals.isMultipleYAxis?r.config.yaxis[f]&&r.config.yaxis[f].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!p?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(p&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!p||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),o.tooltipRect.ttHeight+c>r.globals.gridHeight?c=r.globals.gridHeight-o.tooltipRect.ttHeight+r.globals.translateY:(c=c+r.globals.translateY-o.tooltipRect.ttHeight/2)<0&&(c=0),n.style.left=h+r.globals.translateX+"px",n.style.top=c+"px")}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,a=this.w,s=null,r=this.ttCtx,o=0,n=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-boxPlot-area")||d.contains("apexcharts-rangebar-area")){var g=e.target,u=g.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=u.height;c=u.height;var x=u.width,b=parseInt(g.getAttribute("cx"),10),v=parseInt(g.getAttribute("cy"),10);h=parseFloat(g.getAttribute("barWidth"));var m="touchmove"===e.type?e.touches[0].clientX:e.clientX;s=parseInt(g.getAttribute("j"),10),o=parseInt(g.parentNode.getAttribute("rel"),10)-1;var y=g.getAttribute("data-range-y1"),w=g.getAttribute("data-range-y2");a.globals.comboCharts&&(o=parseInt(g.parentNode.getAttribute("data:realIndex"),10)),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:s,y1:y?parseInt(y,10):null,y2:w?parseInt(w,10):null,shared:!r.showOnIntersect&&a.config.tooltip.shared,e:e}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(n=m-f.left+15,l=v-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(n=a.globals.isXNumeric?b-x/2:b-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((n=b)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var o=a.getElGrid().getBoundingClientRect(),n=(e-o.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-n);a.tooltipPosition.moveYCrosshairs(e-o.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new ft(this),this.intersect=new pt(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement("div");o.classList.add("apexcharts-tooltip-series-group"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add("apexcharts-tooltip-series-group-hidden");var n=document.createElement("span");n.classList.add("apexcharts-tooltip-marker"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement("div");l.classList.add("apexcharts-tooltip-text"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf("bottom")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=o+"px",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new O(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var p=0;pl.width?this.handleMouseOut(a):null!==n?this.handleStickyCapturedSeries(t,n,a,o):(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal)&&this.create(t,this,0,o,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);void 0!==s.globals.series[e][a]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(t,this,0,a,i.ttItems)}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,o=this.w,n=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===r&&(r=this.tConfig.shared);var l=this.tooltipUtil.hasMarkers(),h=this.tooltipUtil.getElBars();if(o.config.legend.tooltipHoverFormatter){var c=o.config.legend.tooltipHoverFormatter,d=Array.from(this.legendLabels);d.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var g=0;g0?n.marker.enlargePoints(a):n.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var b=new m(this.ctx),v=o.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var y=0;ys.globals.gridHeight&&(u=s.globals.gridHeight-b)),{bcx:h,bcy:l,dataLabelsX:e,dataLabelsY:u,totalDataLabelsX:a,totalDataLabelsY:i,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.bcy,n=t.barHeight,l=t.barWidth,h=t.textRects,c=t.dataLabelsX,d=t.strokeWidth,g=t.dataLabelsConfig,u=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,b=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var v,y,w=o-(this.barCtx.isRangeBar?0:b)+n/2+h.height/2+x-3,k="start",A=this.barCtx.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+l-(A?2*l:0),i=e.globals.gridWidth-l),u.position){case"center":c=A?S+l/2-p:Math.max(h.width/2,S-l/2)+p;break;case"bottom":c=A?S+l-d-Math.round(h.width/2)-p:S-l+d+Math.round(h.width/2)+p;break;case"top":c=A?S-d+Math.round(h.width/2)-p:S-d-Math.round(h.width/2)+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),g.fontSize);A?(v=S-d+Math.round(C.width/2)-p-f.offsetX-15,k="end"):v=S-d-Math.round(C.width/2)+p+f.offsetX+15,y=w+f.offsetY}return e.config.chart.stacked||(c<0?c=c+h.width+d:c+h.width/2>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width-d)),{bcx:i,bcy:o,dataLabelsX:c,dataLabelsY:w,totalDataLabelsX:v,totalDataLabelsY:y,totalDataLabelsAnchor:k}}},{key:"drawCalculatedDataLabels",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(i,", ").concat(a,")"));var u=new H(this.barCtx.ctx),f=new m(this.barCtx.ctx),p=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=f.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==s&&(v=p(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d})));var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=""):n.height/1.6>Math.abs(l)&&(v=""));var k=e({},c);this.barCtx.isHorizontal&&s<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.realIndex,o=t.textAnchor,n=t.barTotalDataLabelsConfig,l=new m(this.barCtx.ctx);return n.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===r&&(e=l.drawText({x:i,y:a,foreColor:n.style.color,text:s,textAnchor:o,fontFamily:n.style.fontFamily,fontSize:n.style.fontSize,fontWeight:n.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new F(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new O(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.columnWidthOffset&&(u=a-c.config.series[n].data[h].columnWidthOffset/2,g=i+c.config.series[n].data[h].columnWidthOffset);var f=u,p=u+g;s+=.001,r+=.001;var x=d.move(f,s),b=d.move(f,s),v=d.line(p-o,s);return c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1)),x=x+d.line(f,r)+d.line(p-o,r)+d.line(p-o,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(f,s)+v+v+v+v+v+d.line(f,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.yArrj.push(r),this.barCtx.yArrjF.push(Math.abs(s-r)),this.barCtx.yArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.barHeightOffset&&(g=i-c.config.series[n].data[h].barHeightOffset/2,u=a+c.config.series[n].data[h].barHeightOffset);var f=g,p=g+u;s+=.001,r+=.001;var x=d.move(s,f),b=d.move(s,f);c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1));var v=d.line(s,p-o);return x=x+d.line(r,f)+d.line(r,p-o)+v+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(s,f)+v+v+v+v+v+d.line(s,f)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.xArrj.push(r),this.barCtx.xArrjF.push(Math.abs(s-r)),this.barCtx.xArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a=0;o--)this.barCtx.zeroSerieses.indexOf(o)>-1&&o===this.radiusOnSeriesNumber&&(this.barCtx.radiusOnSeriesNumber-=1);for(var n=e.length-1;n>=0;n--)i.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber)>-1&&(this.barCtx.radiusOnSeriesNumber-=1)}},{key:"getXForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),a}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),a}},{key:"getGoalValues",value:function(t,e,i,a,s){var r=this,n=this.w,l=[];return n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach((function(a){var s;l.push((o(s={},t,"x"===t?r.getXForValue(a.value,e,!1):r.getYForValue(a.value,i,!1)),o(s,"attrs",a),s))})),l}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:"apexcharts-bar-goals-groups"}),h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)})),l}}]),t}(),yt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.xyRatios=i,null!==this.xyRatios&&(this.xRatio=i.xRatio,this.initialXRatio=i.initialXRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0;var r=new O(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex("desc",["bar","column"]);var o=r.getBarSeriesIndices(),n=new y(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===o.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new mt(this)}return r(t,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx),r=new y(this.ctx,a);t=r.getLogSeries(t),this.series=t,this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var o=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});a.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();f=S.y,k=S.barHeight,c=S.yDivision,g=S.zeroW,u=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||b.push(u+A/2);for(var C=s.group({class:"apexcharts-datalabels","data:realIndex":v}),L=s.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),P=0;P0&&b.push(u+A/2),p.push(f);var X=this.barHelpers.getPathFillColor(t,n,P,v);this.renderSeries({realIndex:v,pathFill:X,j:P,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:T,elSeries:w,x:u,y:f,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:C,elGoalsMarkers:L,visibleSeries:this.visibleI,type:"bar"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=p,o.add(w)}return o}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.pathFrom,n=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.y1,u=t.y2,f=t.series,p=t.barHeight,x=t.barWidth,b=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.visibleSeries,A=t.type,S=this.w,C=new m(this.ctx);a||(a=this.barOptions.distributed?S.globals.stroke.colors[s]:S.globals.stroke.colors[e]),S.config.series[r].data[s]&&S.config.series[r].data[s].strokeColor&&(a=S.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var L=s/S.config.chart.animations.animateGradually.delay*(S.config.chart.animations.speed/S.globals.dataPoints)/2.4,P=C.renderPaths({i:r,j:s,realIndex:e,pathFrom:o,pathTo:n,stroke:a,strokeWidth:l,strokeLineCap:S.config.stroke.lineCap,fill:i,animationDelay:L,initialSpeed:S.config.chart.animations.speed,dataChangeSpeed:S.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(A,"-area")});P.attr("clip-path","url(#gridRectMask".concat(S.globals.cuid,")"));var T=S.config.forecastDataPoints;T.count>0&&s>=S.globals.dataPoints-T.count&&(P.node.setAttribute("stroke-dasharray",T.dashArray),P.node.setAttribute("stroke-width",T.strokeWidth),P.node.setAttribute("fill-opacity",T.fillOpacity)),void 0!==g&&void 0!==u&&(P.attr("data-range-y1",g),P.attr("data-range-y2",u)),new v(this.ctx).setSelectionFilter(P,e,s),h.add(P);var M=new vt(this).handleBarDataLabels({x:c,y:d,y1:g,y2:u,i:r,j:s,series:f,realIndex:e,barHeight:p,barWidth:x,barYPosition:b,renderedPath:P,visibleSeries:k});return null!==M.dataLabels&&y.add(M.dataLabels),M.totalDataLabels&&y.add(M.totalDataLabels),h.add(y),w&&h.add(w),h}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,a=t.strokeWidth,s=t.zeroW,r=t.x,o=t.y,n=t.yDivision,l=t.elSeries,h=this.w,c=e.i,d=e.j;h.globals.isXNumeric&&(o=(h.globals.seriesX[c][d]-h.globals.minX)/this.invertedXRatio-i);var g=o+i*this.visibleI;r=this.barHelpers.getXForValue(this.series[c][d],s);var u=this.barHelpers.getBarpaths({barYPosition:g,barHeight:i,x1:s,x2:r,strokeWidth:a,series:this.series,realIndex:e.realIndex,i:c,j:d,w:h});return h.globals.isXNumeric||(o+=n),this.barHelpers.barBackground({j:d,i:c,y1:g-i*this.visibleI,y2:i*this.seriesLen,elSeries:l}),{pathTo:u.pathTo,pathFrom:u.pathFrom,x:r,y:o,goalX:this.barHelpers.getGoalValues("x",s,null,c,d),barYPosition:g}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.strokeWidth,l=t.elSeries,h=this.w,c=e.realIndex,d=e.i,g=e.j,u=e.bc;if(h.globals.isXNumeric){var f=c;h.globals.seriesX[c].length||(f=h.globals.maxValsInArrayIndex),i=(h.globals.seriesX[f][g]-h.globals.minX)/this.xRatio-r*this.seriesLen/2}var p=i+r*this.visibleI;a=this.barHelpers.getYForValue(this.series[d][g],o);var x=this.barHelpers.getColumnPaths({barXPosition:p,barWidth:r,y1:o,y2:a,strokeWidth:n,series:this.series,realIndex:e.realIndex,i:d,j:g,w:h});return h.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:u,j:g,i:d,x1:p-n/2-r*this.visibleI,x2:r*this.seriesLen+n/2,elSeries:l}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:i,y:a,goalY:this.barHelpers.getGoalValues("y",null,o,d,g),barXPosition:p}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var o=0;o0&&(this.totalItems+=t[o].length);for(var n=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),l=0,h=0,c=function(r,o){var c=void 0,d=void 0,g=void 0,u=void 0,f=[],p=[],b=s.globals.comboCharts?i[r]:r;a.yRatio.length>1&&(a.yaxisIndex=b),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var v=a.graphics.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[b]),rel:r+1,"data:realIndex":b});a.ctx.series.addCollapsedClassToSeries(v,b);var m=a.graphics.group({class:"apexcharts-datalabels","data:realIndex":b}),y=a.graphics.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),w=0,k=0,A=a.initialPositions(l,h,c,d,g,u);h=A.y,w=A.barHeight,d=A.yDivision,u=A.zeroW,l=A.x,k=A.barWidth,c=A.xDivision,g=A.zeroH,a.yArrj=[],a.yArrjF=[],a.yArrjVal=[],a.xArrj=[],a.xArrjF=[],a.xArrjVal=[],1===a.prevY.length&&a.prevY[0].every((function(t){return isNaN(t)}))&&(a.prevY[0]=a.prevY[0].map((function(t){return g})),a.prevYF[0]=a.prevYF[0].map((function(t){return 0})));for(var S=0;S1?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:n*parseInt(l.config.plotOptions.bar.columnWidth,10)/100,s=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-n)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:o,barWidth:n,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=n,g=i.i,u=i.j,f=0,p=0;p0){var x=r;this.prevXVal[g-1][u]<0?x=this.series[g][u]>=0?this.prevX[g-1][u]+f-2*(this.isReversed?f:0):this.prevX[g-1][u]:this.prevXVal[g-1][u]>=0&&(x=this.series[g][u]>=0?this.prevX[g-1][u]:this.prevX[g-1][u]-f+2*(this.isReversed?f:0)),e=x}else e=r;o=null===this.series[g][u]?e:e+this.series[g][u]/this.invertedYRatio-2*(this.isReversed?this.series[g][u]/this.invertedYRatio:0);var b=this.barHelpers.getBarpaths({barYPosition:d,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return this.barHelpers.barBackground({j:u,i:g,y1:d,y2:a,elSeries:h}),n+=l,{pathTo:b.pathTo,pathFrom:b.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,g,u),barYPosition:d,x:o,y:n}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH;t.strokeWidth;var n=t.elSeries,l=this.w,h=e.i,c=e.j,d=e.bc;if(l.globals.isXNumeric){var g=l.globals.seriesX[h][c];g||(g=0),i=(g-l.globals.minX)/this.xRatio-r/2}for(var u,f=i,p=0,x=0;x0&&!l.globals.isXNumeric||h>0&&l.globals.isXNumeric&&l.globals.seriesX[h-1][c]===l.globals.seriesX[h][c]){var b,v,m=Math.min(this.yRatio.length+1,h+1);if(void 0!==this.prevY[h-1])for(var y=1;y=0?v-p+2*(this.isReversed?p:0):v;break}if(this.prevYVal[h-w][c]>=0){b=this.series[h][c]>=0?v:v+p-2*(this.isReversed?p:0);break}}void 0===b&&(b=l.globals.gridHeight),u=this.prevYF[0].every((function(t){return 0===t}))&&this.prevYF.slice(1,h).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:b}else u=o;a=u-this.series[h][c]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[h][c]/this.yRatio[this.yaxisIndex]:0);var k=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:u,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:e.realIndex,i:h,j:c,w:l});return this.barHelpers.barBackground({bc:d,j:c,i:h,x1:f,x2:r,elSeries:n}),i+=s,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,h,c),barXPosition:f,x:l.globals.isXNumeric?i-s:i,y:a}}}]),s}(),kt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w,r=new m(this.ctx),o=new F(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var n=new y(this.ctx,s);t=n.getLogSeries(t),this.series=t,this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var l=r.group({class:"apexcharts-".concat(s.config.chart.type,"-series apexcharts-plot-series")}),h=function(n){a.isBoxPlot="boxPlot"===s.config.chart.type||"boxPlot"===s.config.series[n].type;var h,c,d,g,u=void 0,f=void 0,p=[],b=[],v=s.globals.comboCharts?i[n]:n,m=r.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:n+1,"data:realIndex":v});a.ctx.series.addCollapsedClassToSeries(m,v),t[n].length>0&&(a.visibleI=a.visibleI+1);var y,w;a.yRatio.length>1&&(a.yaxisIndex=v);var k=a.barHelpers.initialPositions();f=k.y,y=k.barHeight,c=k.yDivision,g=k.zeroW,u=k.x,w=k.barWidth,h=k.xDivision,d=k.zeroH,b.push(u+w/2);for(var A=r.group({class:"apexcharts-datalabels","data:realIndex":v}),S=function(i){var r=a.barHelpers.getStrokeWidth(n,i,v),l=null,x={indexes:{i:n,j:i,realIndex:v},x:u,y:f,strokeWidth:r,elSeries:m};l=a.isHorizontal?a.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:c,barHeight:y,zeroW:g})):a.drawVerticalBoxPaths(e(e({},x),{},{xDivision:h,barWidth:w,zeroH:d})),f=l.y,u=l.x,i>0&&b.push(u+w/2),p.push(f),l.pathTo.forEach((function(e,h){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?l.color[h]:s.globals.stroke.colors[n],d=o.fillPath({seriesNumber:v,dataPointIndex:i,color:l.color[h],value:t[n][i]});a.renderSeries({realIndex:v,pathFill:d,lineFill:c,j:i,i:n,pathFrom:l.pathFrom,pathTo:e,strokeWidth:r,elSeries:m,x:u,y:f,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:A,visibleSeries:a.visibleI,type:s.config.chart.type})}))},C=0;Cb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/p,k=r-k/p,v=r-b.h/p,y=r-b.l/p,A=r-b.m/p);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?f:d?[g]:[u]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,f=this.getOHLCValue(u,c),p=r,x=r,b=Math.min(f.o,f.c),v=Math.max(f.o,f.c),y=f.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,p=r+f.h/g,x=r+f.l/g,y=r+f.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(p,w+s/2)+l.line(p,w+s/2-s/4)+l.line(p,w+s/2+s/4)+l.line(p,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+"z"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,"treemap"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l="dark"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new H(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,u=l.offsetY,f=i+g,p=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new m(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:"draw",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,f=0;f-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+"%";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(n)>this.fullAngle&&(n-=this.fullAngle);var l=Math.PI*(n-90)/180,h=e.centerX+s*Math.cos(o),c=e.centerY+s*Math.sin(o),d=e.centerX+s*Math.cos(l),g=e.centerY+s*Math.sin(l),u=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,n),f=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),p=a>180?1:0,b=["M",h,c,"A",s,s,0,p,1,d,g];return"donut"===e.chartType?[].concat(b,["L",u.x,u.y,"A",e.donutSize,e.donutSize,0,p,0,f.x,f.y,"L",h,c,"z"]).join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[].concat(b,["L",e.centerX,e.centerY,"L",h,c]).join(" "):[].concat(b).join(" ")}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),e.config.yaxis[0].tickAmount,0,!0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(p=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:"",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var f=h.dropShadow;s.dropShadow(u,f)}l.add(u),u.attr("id","apexcharts-radialbarTrack-"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new m(this.ctx),a=new F(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var p=f?t.series.length-1:0;f?p>=0:p100?100:t.series[p])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[p])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[p]:e.config.stroke.dashArray,T=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+p,strokeDashArray:P});if(m.setAttrs(T.node,{"data:angle":L,"data:value":t.series[p]}),e.config.chart.dropShadow.enabled){var M=e.config.chart.dropShadow;s.dropShadow(T,M,p)}s.setSelectionFilter(T,0,p),this.addListeners(T,this.radialDataLabels),b.add(T),T.attr({index:0,j:p});var I=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(I=e.config.chart.animations.speed),e.globals.dataChanged&&(I=e.config.chart.animations.dynamicAnimation.speed),this.animDur=I/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(T,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:p,totalItems:2,animBeginArr:this.animBeginArr,dur:I,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:"drawHollow",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new F(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}}]),i}(),Mt=function(t){n(s,yt);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var p=0,b=0;this.yRatio.length>1&&(this.yaxisIndex=u);var v=this.barHelpers.initialPositions();d=v.y,h=v.zeroW,c=v.x,b=v.barWidth,n=v.xDivision,l=v.zeroH;for(var y=s.group({class:"apexcharts-datalabels","data:realIndex":u}),w=s.group({class:"apexcharts-rangebar-goals-markers",style:"pointer-events: none"}),k=0;k0}));return a=l.config.plotOptions.bar.rangeBarGroupRows?s+o*g:s+r*this.visibleI+o*g,u>-1&&!l.config.plotOptions.bar.rangeBarOverlap&&(h=l.globals.seriesRange[e][u].overlaps).indexOf(c)>-1&&(a=(r=n.barHeight/h.length)*this.visibleI+o*(100-parseInt(this.barOptions.barHeight,10))/100/2+r*(this.visibleI+h.indexOf(c))+o*g),{barYPosition:a,barHeight:r}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x;t.strokeWidth;var a=t.xDivision,s=t.barWidth,r=t.zeroH,o=this.w,n=e.i,l=e.j,h=this.yRatio[this.yaxisIndex],c=e.realIndex,d=this.getRangeValue(c,l),g=Math.min(d.start,d.end),u=Math.max(d.start,d.end);o.globals.isXNumeric&&(i=(o.globals.seriesX[n][l]-o.globals.minX)/this.xRatio-s/2);var f=i+s*this.visibleI;void 0===this.series[n][l]||null===this.series[n][l]?g=r:(g=r-g/h,u=r-u/h);var p=Math.abs(u-g),x=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:s,y1:g,y2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:c,j:l,w:o});return o.globals.isXNumeric||(i+=a),{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:p,x:i,y:u,goalY:this.barHelpers.getGoalValues("y",null,r,n,l),barXPosition:f}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(),It=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&("line"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i=t.i,a=t.series,s=t.prevY,r=t.lineYPosition,o=this.w;if(void 0!==(null===(e=a[i])||void 0===e?void 0:e[0]))s=(r=o.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(o.config.chart.stacked&&i>0&&void 0===a[i][0])for(var n=i-1;n>=0;n--)if(null!==a[n][0]&&void 0!==a[n][0]){s=r=this.lineCtx.prevSeriesY[n][0];break}return{prevY:s,lineYPosition:r}}}]),t}(),zt=function(){function t(e,i,s){a(this,t),this.ctx=e,this.w=e.w,this.xyRatios=i,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||s,this.scatter=new D(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new It(this),this.markers=new R(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return r(t,[{key:"draw",value:function(t,i,a,s){var r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=o.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),h=new y(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio);for(var c=[],d=0;d0&&(p=(r.globals.seriesX[g][0]-r.globals.minX)/this.xRatio),f.push(p);var x,b=p,v=void 0,w=b,k=this.zeroY,A=this.zeroY;k=this.lineHelpers.determineFirstPrevY({i:d,series:t,prevY:k,lineYPosition:0}).prevY,u.push(k),x=k;"rangeArea"===n&&(v=A=this.lineHelpers.determineFirstPrevY({i:d,series:s,prevY:A,lineYPosition:0}).prevY);var S={type:n,series:t,realIndex:g,i:d,x:p,y:1,pX:b,pY:x,pathsFrom:this._calculatePathsFrom({type:n,series:t,i:d,realIndex:g,prevX:w,prevY:k,prevY2:A}),linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:f,yArrj:u,seriesRangeEnd:s},C=this._iterateOverDataPoints(e(e({},S),{},{iterations:"rangeArea"===n?t[d].length-1:void 0,isRangeStart:!0}));if("rangeArea"===n){var L=this._calculatePathsFrom({series:s,i:d,realIndex:g,prevX:w,prevY:A}),P=this._iterateOverDataPoints(e(e({},S),{},{series:s,pY:v,pathsFrom:L,iterations:s[d].length-1,isRangeStart:!1}));C.linePaths[0]=P.linePath+C.linePath,C.pathFromLine=P.pathFromLine+C.pathFromLine}this._handlePaths({type:n,realIndex:g,i:d,paths:C}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(r.config.chart.stacked)for(var T=c.length;T>0;T--)l.add(c[T-1]);else for(var M=0;M1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.prevX,c=t.prevY,d=t.prevY2,g=this.w,u=new m(this.ctx);if(null===o[n][0]){for(var f=0;f0){var p=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=p.pathFromLine,s=p.pathFromArea}return{prevX:h,prevY:c,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new F(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&"rangeArea"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(i)};if("area"===i)for(var f=l.fillPath({seriesNumber:a}),p=0;p0&&"rangeArea"!==i){var S=n.renderPaths(k);S.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&S.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(S),S.attr("clip-path","url(#forecastMask".concat(o.globals.cuid,")")),A.attr("clip-path","url(#nonForecastMask".concat(o.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e=t.type,i=t.series,a=t.iterations,s=t.realIndex,r=t.i,o=t.x,n=t.y,l=t.pX,h=t.pY,c=t.pathsFrom,d=t.linePaths,g=t.areaPaths,u=t.seriesIndex,f=t.lineYPosition,p=t.xArrj,b=t.yArrj,v=t.isRangeStart,y=t.seriesRangeEnd,w=this.w,k=new m(this.ctx),A=this.yRatio,S=c.prevY,C=c.linePath,L=c.areaPath,P=c.pathFromLine,T=c.pathFromArea,M=x.isNumber(w.globals.minYArr[s])?w.globals.minYArr[s]:w.globals.minY;a||(a=w.globals.dataPoints>1?w.globals.dataPoints-1:w.globals.dataPoints);for(var I=n,z=0;z0&&w.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(r-1)][z+1]}else f=this.zeroY;else f=this.zeroY;X?n=f-M/A[this.yaxisIndex]+2*(this.isReversed?M/A[this.yaxisIndex]:0):(n=f-i[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?i[r][z+1]/A[this.yaxisIndex]:0),"rangeArea"===e&&(I=f-y[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?y[r][z+1]/A[this.yaxisIndex]:0))),p.push(o),b.push(n);var Y=this.lineHelpers.calculatePoints({series:i,x:o,y:n,realIndex:s,i:r,j:z,prevY:S}),F=this._createPaths({type:e,series:i,i:r,realIndex:s,j:z,x:o,y:n,y2:I,pX:l,pY:h,linePath:C,areaPath:L,linePaths:d,areaPaths:g,seriesIndex:u,isRangeStart:v});g=F.areaPaths,d=F.linePaths,l=F.pX,h=F.pY,L=F.areaPath,C=F.linePath,this.appendPathFrom&&(P+=k.line(o,this.zeroY),T+=k.line(o,this.zeroY)),this.handleNullDataPoints(i,Y,r,z,s),this._handleMarkersAndLabels({type:e,pointsPos:Y,i:r,j:z,realIndex:s,isRangeStart:v})}return{yArrj:b,xArrj:p,pathFromArea:T,areaPaths:g,pathFromLine:P,linePaths:d,linePath:C,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new H(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,o=t.x,n=t.y,l=t.y2,h=t.pX,c=t.pY,d=t.linePath,g=t.areaPath,u=t.linePaths,f=t.areaPaths,p=t.seriesIndex,x=t.isRangeStart,b=this.w,v=new m(this.ctx),y=b.config.stroke.curve,w=this.areaBottomY;if(Array.isArray(b.config.stroke.curve)&&(y=Array.isArray(p)?b.config.stroke.curve[p[a]]:b.config.stroke.curve[a]),"smooth"===y){var k=.35*(o-h);b.globals.hasNullValues?(null!==i[a][r]&&(null!==i[a][r+1]?(d=v.move(h,c)+v.curve(h+k,c,o-k,n,o+1,n),g=v.move(h+1,c)+v.curve(h+k,c,o-k,n,o+1,n)+v.line(o,w)+v.line(h,w)+"z"):(d=v.move(h,c),g=v.move(h,c)+"z")),u.push(d),f.push(g)):(d+=v.curve(h+k,c,o-k,n,o,n),g+=v.curve(h+k,c,o-k,n,o,n)),h=o,c=n,r===i[a].length-2&&(g=g+v.curve(h,c,o,n,o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.curve(h,c,o,n,o,l)+v.move(o,l)+"z":b.globals.hasNullValues||(u.push(d),f.push(g)))}else{if(null===i[a][r+1]){d+=v.move(o,n);var A=b.globals.isXNumeric?(b.globals.seriesX[s][r]-b.globals.minX)/this.xRatio:o-this.xDivision;g=g+v.line(A,w)+v.move(o,n)+"z"}null===i[a][r]&&(d+=v.move(o,n),g+=v.move(o,w)),"stepline"===y?(d=d+v.line(o,null,"H")+v.line(null,n,"V"),g=g+v.line(o,null,"H")+v.line(null,n,"V")):"straight"===y&&(d+=v.line(o,n),g+=v.line(o,n)),r===i[a].length-2&&(g=g+v.line(o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.line(o,l)+v.move(o,l)+"z":(u.push(d),f.push(g)))}return{linePaths:u,areaPaths:f,pX:h,pY:c,linePath:d,areaPath:g}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,")"))}}},{key:"animateTreemap",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ft=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:"calculateTimeScaleTicks",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new T(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),f=Math.floor(86400*o),p=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:f,numberOfMinutes:u,numberOfHours:g,numberOfDays:p,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(m);break;case"months":case"half_year":this.generateMonthScale(m);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(m);break;case"hours":this.generateHourScale(m);break;case"minutes_fives":case"minutes":this.generateMinuteScale(m);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?e(e({},i),{},{value:t.value}):"minute"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):"second"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case"years":"year"===t.unit&&(o=!0);break;case"half_year":e=7,"year"===t.unit&&(o=!0);break;case"months":e=1,"year"===t.unit&&(o=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(o=!0),30===r&&(n=!0);break;case"months_days":e=10,"month"===t.unit&&(o=!0),30===r&&(n=!0);break;case"week_days":e=8,"month"===t.unit&&(o=!0);break;case"days":e=1,"month"===t.unit&&(o=!0);break;case"hours":"day"===t.unit&&(o=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(n=!0);break;case"seconds_tens":r%10!=0&&(n=!0)}if("hours"===a.tickInterval||"minutes_fives"===a.tickInterval||"seconds_tens"===a.tickInterval||"seconds_fives"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new T(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),f=n;0===n&&(c="year",f=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var p=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n="month",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n="month",h=e.minDate,r++):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var f=d,p=0;pn.determineDaysOfMonths(e+1,s)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,f=u+1;60===d&&(g=0,f=(u=e.minHour)+1);var p=i,b=c(p,a);this.timeScaleArray.push({position:g,value:u,unit:l,day:p,hour:f,year:s,month:x.monthMod(b)});for(var v=g,m=0;m=24)f=0,l="day",b=h(p+=1,b).month,b=c(p,b);var y=this._getYear(s,b,0);v=0===f&&0===m?d*r:60*r+v;var w=0===f?p:f;this.timeScaleArray.push({position:v,value:w,unit:l,hour:f,day:p,year:y,month:x.monthMod(b)}),f++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,f=n,p=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(p+=1)&&(p=0)),this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:p,minute:d,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,f=n,p=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++p&&(p=0))),this.timeScaleArray.push({position:b,value:c,unit:"second",hour:p,minute:d,second:c,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new T(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(n=l.year),"month"===t.unit&&(n=l.month),"day"===t.unit&&(n=l.day),"hour"===t.unit&&(n=l.hour),"minute"===t.unit&&(n=l.minute),"second"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Rt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elAnnotations=t.dom.Paper.group().attr({class:"apexcharts-annotations"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,f){var p=0;void 0!==t[f].type?("column"===t[f].type||"bar"===t[f].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(f),p++,i.globals.columnSeries=h.series):"area"===t[f].type?(o.series.push(e),o.i.push(f),p++):"line"===t[f].type?(r.series.push(e),r.i.push(f),p++):"scatter"===t[f].type?(n.series.push(e),n.i.push(f)):"bubble"===t[f].type?(l.series.push(e),l.i.push(f),p++):"candlestick"===t[f].type?(c.series.push(e),c.i.push(f),p++):"boxPlot"===t[f].type?(d.series.push(e),d.i.push(f),p++):"rangeBar"===t[f].type?(g.series.push(e),g.i.push(f),p++):"rangeArea"===t[f].type?(u.series.push(s.seriesRangeStart[f]),u.seriesRangeEnd.push(s.seriesRangeEnd[f]),u.i.push(f),p++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble"),p>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(f))}));var f=new zt(this.ctx,e),p=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var x=new Tt(this.ctx);this.ctx.rangeBar=new Mt(this.ctx,e);var b=new Pt(this.ctx),v=[];if(s.comboCharts){if(o.series.length>0&&v.push(f.draw(o.series,"area",o.i)),h.series.length>0)if(i.config.chart.stacked){var m=new wt(this.ctx,e);v.push(m.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),v.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&v.push(f.draw(u.series,"rangeArea",u.i,u.seriesRangeEnd)),r.series.length>0&&v.push(f.draw(r.series,"line",r.i)),c.series.length>0&&v.push(p.draw(c.series,c.i)),d.series.length>0&&v.push(p.draw(d.series,d.i)),g.series.length>0&&v.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var y=new zt(this.ctx,e,!0);v.push(y.draw(n.series,"scatter",n.i))}if(l.series.length>0){var w=new zt(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=f.draw(s.series,"line");break;case"area":v=f.draw(s.series,"area");break;case"bar":if(a.chart.stacked)v=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),v=this.ctx.bar.draw(s.series);break;case"candlestick":v=new kt(this.ctx,e).draw(s.series);break;case"boxPlot":v=new kt(this.ctx,e).draw(s.series);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=f.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new St(this.ctx,e).draw(s.series);break;case"treemap":v=new Yt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=f.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=l+"px",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px")}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new E,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Ft(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,i=this.w;if(i.config.chart.brush.enabled&&"function"!=typeof i.config.chart.events.selection){var a=i.config.chart.brush.targets||[i.config.chart.brush.target];a.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),i.config.chart.events.selection=function(t,s){a.forEach((function(t){var a=ApexCharts.getChartByID(t),r=x.clone(i.config.yaxis);if(i.config.chart.brush.autoScaleYaxis&&1===a.w.globals.series.length){var o=new _(a);r=o.autoScaleY(a,r,s)}var n=a.w.config.yaxis.reduce((function(t,i,s){return[].concat(u(t),[e(e({},a.w.config.yaxis[s]),{},{min:r[0].min,max:r[0].max})])}),[]);a.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:n},!1,!1,!1,!1)}))}}}}]),t}(),Dt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"_updateOptions",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&"object"===i(t)&&(r.config=new X(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:s&&s.name,color:t.color?t.color:s&&s.color,type:t.type?t.type:s&&s.type,data:t.data?t.data:s&&s.data})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new z(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Xt="undefined"!=typeof window?window:void 0,Et=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.dev",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute("id",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:"linearGradient"==e.nodeName?new a.Gradient("linear"):"radialGradient"==e.nodeName?new a.Gradient("radial"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName("body")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:i.polyline().node,path:i.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},e.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if("string"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement("svg");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");i.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=i.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){"object"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||"-"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[m[s]]=null!=t[m[s]]?t[m[s]]:e[m[s]]},extend:{extract:function(){var t=f(this,0,1);f(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=m.length-1;e>=0;e--)t[m[e]]=this[m[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if("object"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return"object"!==i(t)?(s=new a.Matrix(this).extract(),"string"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var m="abcdef".split("");if("function"!=typeof t.CustomEvent){var y=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};y.prototype=t.Event.prototype,a.CustomEvent=y}else a.CustomEvent=t.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return Et(Xt,Xt.document)})):"object"===("undefined"==typeof exports?"undefined":i(exports))&&"undefined"!=typeof module?module.exports=Xt.document?Et(Xt,Xt.document):function(t){return Et(t,t.document)}:Xt.SVG=Et(Xt,Xt.document), +/*! svg.filter.js - v2.0.2 - 2016-02-24 +* https://github.com/wout/svg.filter.js +* Copyright (c) 2016 Wout Fierens; Licensed MIT */ +function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",r(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i1&&(T*=a=Math.sqrt(a),M*=a);s=(new SVG.Matrix).rotate(I).scale(1/T,1/M).rotate(-I),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var o=this.options[r[s]];"string"==typeof o?o=o.length>0?o.split(/\s*,\s*/i):[]:"boolean"==typeof o&&"points"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Rt(this.ctx.el,this.ctx),this.ctx.config=new X({}),this.ctx.data=new N(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new L,this.ctx.responsive=new K(this.ctx),this.ctx.series=new O(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new W(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Dt(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"clear",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elAnnotations=null,r.elLegendWrap=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),Nt=new WeakMap;var Wt=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new Y(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Ht(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;if("function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();"none"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),Nt.set(e,s)}(t.el.parentNode,t.parentResizeHandler),!t.css){var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is("ShadowRoot",s),o=t.el.ownerDocument,n=o.getElementById("apexcharts-css");!r&&n||(t.css=document.createElement("style"),t.css.id="apexcharts-css",t.css.textContent='@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n',r?s.prepend(t.css):o.head.appendChild(t.css))}var l=t.create(t.w.config.series,{});if(!l)return e(t);t.mount(l).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(l)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new Ht(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new z(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),"treemap"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new R(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new H(this);l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition();var h={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:n,xyRatios:o,elInner:i.globals.dom.elGraphical,dimensions:h}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o=i.grid.drawGrid();"treemap"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,o),i.annotations=new P(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position&&o&&a.globals.dom.elGraphical.add(o.el);var n=new V(t.ctx,o),l=new q(t.ctx,o);if(null!==o&&(n.xAxisLabelCorrections(o.xAxisTickWidth),l.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&l.yAxisTitleRotate(e,t.opposite)}))),"back"===a.config.annotations.position&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=Nt.get(t))&&(e.disconnect(),Nt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Ot(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new G(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=new G(this.ctx);return e.exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=x.escapeString(t),i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),o=2;o arr.length) len = arr.length; + + for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; + + return arr2; + } + + function _nonIterableSpread() { + throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); + } + + /* + ** Generic functions which are not dependent on ApexCharts + */ + var Utils$1 = /*#__PURE__*/function () { + function Utils() { + _classCallCheck(this, Utils); + } + + _createClass(Utils, [{ + key: "shadeRGBColor", + value: function shadeRGBColor(percent, color) { + var f = color.split(','), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = parseInt(f[0].slice(4), 10), + G = parseInt(f[1], 10), + B = parseInt(f[2], 10); + return 'rgb(' + (Math.round((t - R) * p) + R) + ',' + (Math.round((t - G) * p) + G) + ',' + (Math.round((t - B) * p) + B) + ')'; + } + }, { + key: "shadeHexColor", + value: function shadeHexColor(percent, color) { + var f = parseInt(color.slice(1), 16), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = f >> 16, + G = f >> 8 & 0x00ff, + B = f & 0x0000ff; + return '#' + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1); + } // beautiful color shading blending code + // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors + + }, { + key: "shadeColor", + value: function shadeColor(p, color) { + if (Utils.isColorHex(color)) { + return this.shadeHexColor(p, color); + } else { + return this.shadeRGBColor(p, color); + } + } + }], [{ + key: "bind", + value: function bind(fn, me) { + return function () { + return fn.apply(me, arguments); + }; + } + }, { + key: "isObject", + value: function isObject(item) { + return item && _typeof(item) === 'object' && !Array.isArray(item) && item != null; + } // Type checking that works across different window objects + + }, { + key: "is", + value: function is(type, val) { + return Object.prototype.toString.call(val) === '[object ' + type + ']'; + } + }, { + key: "listToArray", + value: function listToArray(list) { + var i, + array = []; + + for (i = 0; i < list.length; i++) { + array[i] = list[i]; + } + + return array; + } // to extend defaults with user options + // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873 + + }, { + key: "extend", + value: function extend(target, source) { + var _this = this; + + if (typeof Object.assign !== 'function') { + + (function () { + Object.assign = function (target) { + + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var _source = arguments[index]; + + if (_source !== undefined && _source !== null) { + for (var nextKey in _source) { + if (_source.hasOwnProperty(nextKey)) { + output[nextKey] = _source[nextKey]; + } + } + } + } + + return output; + }; + })(); + } + + var output = Object.assign({}, target); + + if (this.isObject(target) && this.isObject(source)) { + Object.keys(source).forEach(function (key) { + if (_this.isObject(source[key])) { + if (!(key in target)) { + Object.assign(output, _defineProperty({}, key, source[key])); + } else { + output[key] = _this.extend(target[key], source[key]); + } + } else { + Object.assign(output, _defineProperty({}, key, source[key])); + } + }); + } + + return output; + } + }, { + key: "extendArray", + value: function extendArray(arrToExtend, resultArr) { + var extendedArr = []; + arrToExtend.map(function (item) { + extendedArr.push(Utils.extend(resultArr, item)); + }); + arrToExtend = extendedArr; + return arrToExtend; + } // If month counter exceeds 12, it starts again from 1 + + }, { + key: "monthMod", + value: function monthMod(month) { + return month % 12; + } + }, { + key: "clone", + value: function clone(source) { + if (Utils.is('Array', source)) { + var cloneResult = []; + + for (var i = 0; i < source.length; i++) { + cloneResult[i] = this.clone(source[i]); + } + + return cloneResult; + } else if (Utils.is('Null', source)) { + // fixes an issue where null values were converted to {} + return null; + } else if (Utils.is('Date', source)) { + return source; + } else if (_typeof(source) === 'object') { + var _cloneResult = {}; + + for (var prop in source) { + if (source.hasOwnProperty(prop)) { + _cloneResult[prop] = this.clone(source[prop]); + } + } + + return _cloneResult; + } else { + return source; + } + } + }, { + key: "log10", + value: function log10(x) { + return Math.log(x) / Math.LN10; + } + }, { + key: "roundToBase10", + value: function roundToBase10(x) { + return Math.pow(10, Math.floor(Math.log10(x))); + } + }, { + key: "roundToBase", + value: function roundToBase(x, base) { + return Math.pow(base, Math.floor(Math.log(x) / Math.log(base))); + } + }, { + key: "parseNumber", + value: function parseNumber(val) { + if (val === null) return val; + return parseFloat(val); + } + }, { + key: "randomId", + value: function randomId() { + return (Math.random() + 1).toString(36).substring(4); + } + }, { + key: "noExponents", + value: function noExponents(val) { + var data = String(val).split(/[eE]/); + if (data.length === 1) return data[0]; + var z = '', + sign = val < 0 ? '-' : '', + str = data[0].replace('.', ''), + mag = Number(data[1]) + 1; + + if (mag < 0) { + z = sign + '0.'; + + while (mag++) { + z += '0'; + } + + return z + str.replace(/^-/, ''); + } + + mag -= str.length; + + while (mag--) { + z += '0'; + } + + return str + z; + } + }, { + key: "getDimensions", + value: function getDimensions(el) { + var computedStyle = getComputedStyle(el, null); + var elementHeight = el.clientHeight; + var elementWidth = el.clientWidth; + elementHeight -= parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom); + elementWidth -= parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight); + return [elementWidth, elementHeight]; + } + }, { + key: "getBoundingClientRect", + value: function getBoundingClientRect(element) { + var rect = element.getBoundingClientRect(); + return { + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + width: element.clientWidth, + height: element.clientHeight, + x: rect.left, + y: rect.top + }; + } + }, { + key: "getLargestStringFromArr", + value: function getLargestStringFromArr(arr) { + return arr.reduce(function (a, b) { + if (Array.isArray(b)) { + b = b.reduce(function (aa, bb) { + return aa.length > bb.length ? aa : bb; + }); + } + + return a.length > b.length ? a : b; + }, 0); + } // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275 + + }, { + key: "hexToRgba", + value: function hexToRgba() { + var hex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '#999999'; + var opacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.6; + + if (hex.substring(0, 1) !== '#') { + hex = '#999999'; + } + + var h = hex.replace('#', ''); + h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g')); + + for (var i = 0; i < h.length; i++) { + h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16); + } + + if (typeof opacity !== 'undefined') h.push(opacity); + return 'rgba(' + h.join(',') + ')'; + } + }, { + key: "getOpacityFromRGBA", + value: function getOpacityFromRGBA(rgba) { + return parseFloat(rgba.replace(/^.*,(.+)\)/, '$1')); + } + }, { + key: "rgb2hex", + value: function rgb2hex(rgb) { + rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i); + return rgb && rgb.length === 4 ? '#' + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) : ''; + } + }, { + key: "isColorHex", + value: function isColorHex(color) { + return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(color); + } + }, { + key: "getPolygonPos", + value: function getPolygonPos(size, dataPointsLen) { + var dotsArray = []; + var angle = Math.PI * 2 / dataPointsLen; + + for (var i = 0; i < dataPointsLen; i++) { + var curPos = {}; + curPos.x = size * Math.sin(i * angle); + curPos.y = -size * Math.cos(i * angle); + dotsArray.push(curPos); + } + + return dotsArray; + } + }, { + key: "polarToCartesian", + value: function polarToCartesian(centerX, centerY, radius, angleInDegrees) { + var angleInRadians = (angleInDegrees - 90) * Math.PI / 180.0; + return { + x: centerX + radius * Math.cos(angleInRadians), + y: centerY + radius * Math.sin(angleInRadians) + }; + } + }, { + key: "escapeString", + value: function escapeString(str) { + var escapeWith = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'x'; + var newStr = str.toString().slice(); + newStr = newStr.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi, escapeWith); + return newStr; + } + }, { + key: "negToZero", + value: function negToZero(val) { + return val < 0 ? 0 : val; + } + }, { + key: "moveIndexInArray", + value: function moveIndexInArray(arr, old_index, new_index) { + if (new_index >= arr.length) { + var k = new_index - arr.length + 1; + + while (k--) { + arr.push(undefined); + } + } + + arr.splice(new_index, 0, arr.splice(old_index, 1)[0]); + return arr; + } + }, { + key: "extractNumber", + value: function extractNumber(s) { + return parseFloat(s.replace(/[^\d.]*/g, '')); + } + }, { + key: "findAncestor", + value: function findAncestor(el, cls) { + while ((el = el.parentElement) && !el.classList.contains(cls)) { + } + + return el; + } + }, { + key: "setELstyles", + value: function setELstyles(el, styles) { + for (var key in styles) { + if (styles.hasOwnProperty(key)) { + el.style.key = styles[key]; + } + } + } + }, { + key: "isNumber", + value: function isNumber(value) { + return !isNaN(value) && parseFloat(Number(value)) === value && !isNaN(parseInt(value, 10)); + } + }, { + key: "isFloat", + value: function isFloat(n) { + return Number(n) === n && n % 1 !== 0; + } + }, { + key: "isSafari", + value: function isSafari() { + return /^((?!chrome|android).)*safari/i.test(navigator.userAgent); + } + }, { + key: "isFirefox", + value: function isFirefox() { + return navigator.userAgent.toLowerCase().indexOf('firefox') > -1; + } + }, { + key: "isIE11", + value: function isIE11() { + if (window.navigator.userAgent.indexOf('MSIE') !== -1 || window.navigator.appVersion.indexOf('Trident/') > -1) { + return true; + } + } + }, { + key: "isIE", + value: function isIE() { + var ua = window.navigator.userAgent; + var msie = ua.indexOf('MSIE '); + + if (msie > 0) { + // IE 10 or older => return version number + return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); + } + + var trident = ua.indexOf('Trident/'); + + if (trident > 0) { + // IE 11 => return version number + var rv = ua.indexOf('rv:'); + return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); + } + + var edge = ua.indexOf('Edge/'); + + if (edge > 0) { + // Edge (IE 12+) => return version number + return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); + } // other browser + + + return false; + } + }]); + + return Utils; + }(); + + /** + * ApexCharts Animation Class. + * + * @module Animations + **/ + + var Animations = /*#__PURE__*/function () { + function Animations(ctx) { + _classCallCheck(this, Animations); + + this.ctx = ctx; + this.w = ctx.w; + this.setEasingFunctions(); + } + + _createClass(Animations, [{ + key: "setEasingFunctions", + value: function setEasingFunctions() { + var easing; + if (this.w.globals.easing) return; + var userDefinedEasing = this.w.config.chart.animations.easing; + + switch (userDefinedEasing) { + case 'linear': + { + easing = '-'; + break; + } + + case 'easein': + { + easing = '<'; + break; + } + + case 'easeout': + { + easing = '>'; + break; + } + + case 'easeinout': + { + easing = '<>'; + break; + } + + case 'swing': + { + easing = function easing(pos) { + var s = 1.70158; + var ret = (pos -= 1) * pos * ((s + 1) * pos + s) + 1; + return ret; + }; + + break; + } + + case 'bounce': + { + easing = function easing(pos) { + var ret = ''; + + if (pos < 1 / 2.75) { + ret = 7.5625 * pos * pos; + } else if (pos < 2 / 2.75) { + ret = 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; + } else if (pos < 2.5 / 2.75) { + ret = 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; + } else { + ret = 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; + } + + return ret; + }; + + break; + } + + case 'elastic': + { + easing = function easing(pos) { + if (pos === !!pos) return pos; + return Math.pow(2, -10 * pos) * Math.sin((pos - 0.075) * (2 * Math.PI) / 0.3) + 1; + }; + + break; + } + + default: + { + easing = '<>'; + } + } + + this.w.globals.easing = easing; + } + }, { + key: "animateLine", + value: function animateLine(el, from, to, speed) { + el.attr(from).animate(speed).attr(to); + } + /* + ** Animate radius of a circle element + */ + + }, { + key: "animateMarker", + value: function animateMarker(el, from, to, speed, easing, cb) { + if (!from) from = 0; + el.attr({ + r: from, + width: from, + height: from + }).animate(speed, easing).attr({ + r: to, + width: to.width, + height: to.height + }).afterAll(function () { + cb(); + }); + } + /* + ** Animate radius and position of a circle element + */ + + }, { + key: "animateCircle", + value: function animateCircle(el, from, to, speed, easing) { + el.attr({ + r: from.r, + cx: from.cx, + cy: from.cy + }).animate(speed, easing).attr({ + r: to.r, + cx: to.cx, + cy: to.cy + }); + } + /* + ** Animate rect properties + */ + + }, { + key: "animateRect", + value: function animateRect(el, from, to, speed, fn) { + el.attr(from).animate(speed).attr(to).afterAll(function () { + return fn(); + }); + } + }, { + key: "animatePathsGradually", + value: function animatePathsGradually(params) { + var el = params.el, + realIndex = params.realIndex, + j = params.j, + fill = params.fill, + pathFrom = params.pathFrom, + pathTo = params.pathTo, + speed = params.speed, + delay = params.delay; + var me = this; + var w = this.w; + var delayFactor = 0; + + if (w.config.chart.animations.animateGradually.enabled) { + delayFactor = w.config.chart.animations.animateGradually.delay; + } + + if (w.config.chart.animations.dynamicAnimation.enabled && w.globals.dataChanged && w.config.chart.type !== 'bar') { + // disabled due to this bug - https://github.com/apexcharts/vue-apexcharts/issues/75 + delayFactor = 0; + } + + me.morphSVG(el, realIndex, j, w.config.chart.type === 'line' && !w.globals.comboCharts ? 'stroke' : fill, pathFrom, pathTo, speed, delay * delayFactor); + } + }, { + key: "showDelayedElements", + value: function showDelayedElements() { + this.w.globals.delayedElements.forEach(function (d) { + var ele = d.el; + ele.classList.remove('apexcharts-element-hidden'); + }); + } + }, { + key: "animationCompleted", + value: function animationCompleted(el) { + var w = this.w; + if (w.globals.animationEnded) return; + w.globals.animationEnded = true; + this.showDelayedElements(); + + if (typeof w.config.chart.events.animationEnd === 'function') { + w.config.chart.events.animationEnd(this.ctx, { + el: el, + w: w + }); + } + } // SVG.js animation for morphing one path to another + + }, { + key: "morphSVG", + value: function morphSVG(el, realIndex, j, fill, pathFrom, pathTo, speed, delay) { + var _this = this; + + var w = this.w; + + if (!pathFrom) { + pathFrom = el.attr('pathFrom'); + } + + if (!pathTo) { + pathTo = el.attr('pathTo'); + } + + var disableAnimationForCorrupPath = function disableAnimationForCorrupPath(path) { + if (w.config.chart.type === 'radar') { + // radar chart drops the path to bottom and hence a corrup path looks ugly + // therefore, disable animation for such a case + speed = 1; + } + + return "M 0 ".concat(w.globals.gridHeight); + }; + + if (!pathFrom || pathFrom.indexOf('undefined') > -1 || pathFrom.indexOf('NaN') > -1) { + pathFrom = disableAnimationForCorrupPath(); + } + + if (!pathTo || pathTo.indexOf('undefined') > -1 || pathTo.indexOf('NaN') > -1) { + pathTo = disableAnimationForCorrupPath(); + } + + if (!w.globals.shouldAnimate) { + speed = 1; + } + + el.plot(pathFrom).animate(1, w.globals.easing, delay).plot(pathFrom).animate(speed, w.globals.easing, delay).plot(pathTo).afterAll(function () { + // a flag to indicate that the original mount function can return true now as animation finished here + if (Utils$1.isNumber(j)) { + if (j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && w.globals.shouldAnimate) { + _this.animationCompleted(el); + } + } else if (fill !== 'none' && w.globals.shouldAnimate) { + if (!w.globals.comboCharts && realIndex === w.globals.series.length - 1 || w.globals.comboCharts) { + _this.animationCompleted(el); + } + } + + _this.showDelayedElements(); + }); + } + }]); + + return Animations; + }(); + + /** + * ApexCharts Filters Class for setting hover/active states on the paths. + * + * @module Formatters + **/ + + var Filters = /*#__PURE__*/function () { + function Filters(ctx) { + _classCallCheck(this, Filters); + + this.ctx = ctx; + this.w = ctx.w; + } // create a re-usable filter which can be appended other filter effects and applied to multiple elements + + + _createClass(Filters, [{ + key: "getDefaultFilter", + value: function getDefaultFilter(el, i) { + var w = this.w; + el.unfilter(true); + var filter = new window.SVG.Filter(); + filter.size('120%', '180%', '-5%', '-40%'); + + if (w.config.states.normal.filter !== 'none') { + this.applyFilter(el, i, w.config.states.normal.filter.type, w.config.states.normal.filter.value); + } else { + if (w.config.chart.dropShadow.enabled) { + this.dropShadow(el, w.config.chart.dropShadow, i); + } + } + } + }, { + key: "addNormalFilter", + value: function addNormalFilter(el, i) { + var w = this.w; // revert shadow if it was there + // but, ignore marker as marker don't have dropshadow yet + + if (w.config.chart.dropShadow.enabled && !el.node.classList.contains('apexcharts-marker')) { + this.dropShadow(el, w.config.chart.dropShadow, i); + } + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addLightenFilter", + value: function addLightenFilter(el, i, attrs) { + var _this = this; + + var w = this.w; + var intensity = attrs.intensity; + el.unfilter(true); + var filter = new window.SVG.Filter(); + el.filter(function (add) { + var shadowAttr = w.config.chart.dropShadow; + + if (shadowAttr.enabled) { + filter = _this.addShadow(add, i, shadowAttr); + } else { + filter = add; + } + + filter.componentTransfer({ + rgb: { + type: 'linear', + slope: 1.5, + intercept: intensity + } + }); + }); + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + + this._scaleFilterSize(el.filterer.node); + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addDarkenFilter", + value: function addDarkenFilter(el, i, attrs) { + var _this2 = this; + + var w = this.w; + var intensity = attrs.intensity; + el.unfilter(true); + var filter = new window.SVG.Filter(); + el.filter(function (add) { + var shadowAttr = w.config.chart.dropShadow; + + if (shadowAttr.enabled) { + filter = _this2.addShadow(add, i, shadowAttr); + } else { + filter = add; + } + + filter.componentTransfer({ + rgb: { + type: 'linear', + slope: intensity + } + }); + }); + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + + this._scaleFilterSize(el.filterer.node); + } + }, { + key: "applyFilter", + value: function applyFilter(el, i, filter) { + var intensity = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.5; + + switch (filter) { + case 'none': + { + this.addNormalFilter(el, i); + break; + } + + case 'lighten': + { + this.addLightenFilter(el, i, { + intensity: intensity + }); + break; + } + + case 'darken': + { + this.addDarkenFilter(el, i, { + intensity: intensity + }); + break; + } + } + } // appends dropShadow to the filter object which can be chained with other filter effects + + }, { + key: "addShadow", + value: function addShadow(add, i, attrs) { + var blur = attrs.blur, + top = attrs.top, + left = attrs.left, + color = attrs.color, + opacity = attrs.opacity; + var shadowBlur = add.flood(Array.isArray(color) ? color[i] : color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source); + return add.blend(add.source, shadowBlur); + } // directly adds dropShadow to the element and returns the same element. + // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow + + }, { + key: "dropShadow", + value: function dropShadow(el, attrs) { + var i = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var top = attrs.top, + left = attrs.left, + blur = attrs.blur, + color = attrs.color, + opacity = attrs.opacity, + noUserSpaceOnUse = attrs.noUserSpaceOnUse; + var w = this.w; + el.unfilter(true); + + if (Utils$1.isIE() && w.config.chart.type === 'radialBar') { + // in radialbar charts, dropshadow is clipping actual drawing in IE + return el; + } + + color = Array.isArray(color) ? color[i] : color; + el.filter(function (add) { + var shadowBlur = null; + + if (Utils$1.isSafari() || Utils$1.isFirefox() || Utils$1.isIE()) { + // safari/firefox/IE have some alternative way to use this filter + shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur); + } else { + shadowBlur = add.flood(color, opacity).composite(add.sourceAlpha, 'in').offset(left, top).gaussianBlur(blur).merge(add.source); + } + + add.blend(add.source, shadowBlur); + }); + + if (!noUserSpaceOnUse) { + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse'); + } + + this._scaleFilterSize(el.filterer.node); + + return el; + } + }, { + key: "setSelectionFilter", + value: function setSelectionFilter(el, realIndex, dataPointIndex) { + var w = this.w; + + if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') { + if (w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1) { + el.node.setAttribute('selected', true); + var activeFilter = w.config.states.active.filter; + + if (activeFilter !== 'none') { + this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value); + } + } + } + } + }, { + key: "_scaleFilterSize", + value: function _scaleFilterSize(el) { + var setAttributes = function setAttributes(attrs) { + for (var key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]); + } + } + }; + + setAttributes({ + width: '200%', + height: '200%', + x: '-50%', + y: '-50%' + }); + } + }]); + + return Filters; + }(); + + /** + * ApexCharts Graphics Class for all drawing operations. + * + * @module Graphics + **/ + + var Graphics = /*#__PURE__*/function () { + function Graphics(ctx) { + _classCallCheck(this, Graphics); + + this.ctx = ctx; + this.w = ctx.w; + } + /***************************************************************************** + * * + * SVG Path Rounding Function * + * Copyright (C) 2014 Yona Appletree * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + * * + *****************************************************************************/ + + /** + * SVG Path rounding function. Takes an input path string and outputs a path + * string where all line-line corners have been rounded. Only supports absolute + * commands at the moment. + * + * @param pathString The SVG input path + * @param radius The amount to round the corners, either a value in the SVG + * coordinate space, or, if useFractionalRadius is true, a value + * from 0 to 1. + * @returns A new SVG path string with the rounding + */ + + + _createClass(Graphics, [{ + key: "roundPathCorners", + value: function roundPathCorners(pathString, radius) { + function moveTowardsLength(movingPoint, targetPoint, amount) { + var width = targetPoint.x - movingPoint.x; + var height = targetPoint.y - movingPoint.y; + var distance = Math.sqrt(width * width + height * height); + return moveTowardsFractional(movingPoint, targetPoint, Math.min(1, amount / distance)); + } + + function moveTowardsFractional(movingPoint, targetPoint, fraction) { + return { + x: movingPoint.x + (targetPoint.x - movingPoint.x) * fraction, + y: movingPoint.y + (targetPoint.y - movingPoint.y) * fraction + }; + } // Adjusts the ending position of a command + + + function adjustCommand(cmd, newPoint) { + if (cmd.length > 2) { + cmd[cmd.length - 2] = newPoint.x; + cmd[cmd.length - 1] = newPoint.y; + } + } // Gives an {x, y} object for a command's ending position + + + function pointForCommand(cmd) { + return { + x: parseFloat(cmd[cmd.length - 2]), + y: parseFloat(cmd[cmd.length - 1]) + }; + } // Split apart the path, handing concatonated letters and numbers + + + var pathParts = pathString.split(/[,\s]/).reduce(function (parts, part) { + var match = part.match('([a-zA-Z])(.+)'); + + if (match) { + parts.push(match[1]); + parts.push(match[2]); + } else { + parts.push(part); + } + + return parts; + }, []); // Group the commands with their arguments for easier handling + + var commands = pathParts.reduce(function (commands, part) { + if (parseFloat(part) == part && commands.length) { + commands[commands.length - 1].push(part); + } else { + commands.push([part]); + } + + return commands; + }, []); // The resulting commands, also grouped + + var resultCommands = []; + + if (commands.length > 1) { + var startPoint = pointForCommand(commands[0]); // Handle the close path case with a "virtual" closing line + + var virtualCloseLine = null; + + if (commands[commands.length - 1][0] == 'Z' && commands[0].length > 2) { + virtualCloseLine = ['L', startPoint.x, startPoint.y]; + commands[commands.length - 1] = virtualCloseLine; + } // We always use the first command (but it may be mutated) + + + resultCommands.push(commands[0]); + + for (var cmdIndex = 1; cmdIndex < commands.length; cmdIndex++) { + var prevCmd = resultCommands[resultCommands.length - 1]; + var curCmd = commands[cmdIndex]; // Handle closing case + + var nextCmd = curCmd == virtualCloseLine ? commands[1] : commands[cmdIndex + 1]; // Nasty logic to decide if this path is a candidite. + + if (nextCmd && prevCmd && prevCmd.length > 2 && curCmd[0] == 'L' && nextCmd.length > 2 && nextCmd[0] == 'L') { + // Calc the points we're dealing with + var prevPoint = pointForCommand(prevCmd); + var curPoint = pointForCommand(curCmd); + var nextPoint = pointForCommand(nextCmd); // The start and end of the cuve are just our point moved towards the previous and next points, respectivly + + var curveStart, curveEnd; + curveStart = moveTowardsLength(curPoint, prevPoint, radius); + curveEnd = moveTowardsLength(curPoint, nextPoint, radius); // Adjust the current command and add it + + adjustCommand(curCmd, curveStart); + curCmd.origPoint = curPoint; + resultCommands.push(curCmd); // The curve control points are halfway between the start/end of the curve and + // the original point + + var startControl = moveTowardsFractional(curveStart, curPoint, 0.5); + var endControl = moveTowardsFractional(curPoint, curveEnd, 0.5); // Create the curve + + var curveCmd = ['C', startControl.x, startControl.y, endControl.x, endControl.y, curveEnd.x, curveEnd.y]; // Save the original point for fractional calculations + + curveCmd.origPoint = curPoint; + resultCommands.push(curveCmd); + } else { + // Pass through commands that don't qualify + resultCommands.push(curCmd); + } + } // Fix up the starting point and restore the close path if the path was orignally closed + + + if (virtualCloseLine) { + var newStartPoint = pointForCommand(resultCommands[resultCommands.length - 1]); + resultCommands.push(['Z']); + adjustCommand(resultCommands[0], newStartPoint); + } + } else { + resultCommands = commands; + } + + return resultCommands.reduce(function (str, c) { + return str + c.join(' ') + ' '; + }, ''); + } + }, { + key: "drawLine", + value: function drawLine(x1, y1, x2, y2) { + var lineColor = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '#a8a8a8'; + var dashArray = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + var strokeWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + var strokeLineCap = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 'butt'; + var w = this.w; + var line = w.globals.dom.Paper.line().attr({ + x1: x1, + y1: y1, + x2: x2, + y2: y2, + stroke: lineColor, + 'stroke-dasharray': dashArray, + 'stroke-width': strokeWidth, + 'stroke-linecap': strokeLineCap + }); + return line; + } + }, { + key: "drawRect", + value: function drawRect() { + var x1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var y1 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var x2 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; + var y2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + var radius = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var color = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '#fefefe'; + var opacity = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : 1; + var strokeWidth = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; + var strokeColor = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : null; + var strokeDashArray = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 0; + var w = this.w; + var rect = w.globals.dom.Paper.rect(); + rect.attr({ + x: x1, + y: y1, + width: x2 > 0 ? x2 : 0, + height: y2 > 0 ? y2 : 0, + rx: radius, + ry: radius, + opacity: opacity, + 'stroke-width': strokeWidth !== null ? strokeWidth : 0, + stroke: strokeColor !== null ? strokeColor : 'none', + 'stroke-dasharray': strokeDashArray + }); // fix apexcharts.js#1410 + + rect.node.setAttribute('fill', color); + return rect; + } + }, { + key: "drawPolygon", + value: function drawPolygon(polygonString) { + var stroke = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#e1e1e1'; + var strokeWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; + var fill = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'none'; + var w = this.w; + var polygon = w.globals.dom.Paper.polygon(polygonString).attr({ + fill: fill, + stroke: stroke, + 'stroke-width': strokeWidth + }); + return polygon; + } + }, { + key: "drawCircle", + value: function drawCircle(radius) { + var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var w = this.w; + if (radius < 0) radius = 0; + var c = w.globals.dom.Paper.circle(radius * 2); + + if (attrs !== null) { + c.attr(attrs); + } + + return c; + } + }, { + key: "drawPath", + value: function drawPath(_ref) { + var _ref$d = _ref.d, + d = _ref$d === void 0 ? '' : _ref$d, + _ref$stroke = _ref.stroke, + stroke = _ref$stroke === void 0 ? '#a8a8a8' : _ref$stroke, + _ref$strokeWidth = _ref.strokeWidth, + strokeWidth = _ref$strokeWidth === void 0 ? 1 : _ref$strokeWidth, + fill = _ref.fill, + _ref$fillOpacity = _ref.fillOpacity, + fillOpacity = _ref$fillOpacity === void 0 ? 1 : _ref$fillOpacity, + _ref$strokeOpacity = _ref.strokeOpacity, + strokeOpacity = _ref$strokeOpacity === void 0 ? 1 : _ref$strokeOpacity, + classes = _ref.classes, + _ref$strokeLinecap = _ref.strokeLinecap, + strokeLinecap = _ref$strokeLinecap === void 0 ? null : _ref$strokeLinecap, + _ref$strokeDashArray = _ref.strokeDashArray, + strokeDashArray = _ref$strokeDashArray === void 0 ? 0 : _ref$strokeDashArray; + var w = this.w; + + if (strokeLinecap === null) { + strokeLinecap = w.config.stroke.lineCap; + } + + if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) { + d = "M 0 ".concat(w.globals.gridHeight); + } + + var p = w.globals.dom.Paper.path(d).attr({ + fill: fill, + 'fill-opacity': fillOpacity, + stroke: stroke, + 'stroke-opacity': strokeOpacity, + 'stroke-linecap': strokeLinecap, + 'stroke-width': strokeWidth, + 'stroke-dasharray': strokeDashArray, + class: classes + }); + return p; + } + }, { + key: "group", + value: function group() { + var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var w = this.w; + var g = w.globals.dom.Paper.group(); + + if (attrs !== null) { + g.attr(attrs); + } + + return g; + } + }, { + key: "move", + value: function move(x, y) { + var move = ['M', x, y].join(' '); + return move; + } + }, { + key: "line", + value: function line(x, y) { + var hORv = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var line = null; + + if (hORv === null) { + line = [' L', x, y].join(' '); + } else if (hORv === 'H') { + line = [' H', x].join(' '); + } else if (hORv === 'V') { + line = [' V', y].join(' '); + } + + return line; + } + }, { + key: "curve", + value: function curve(x1, y1, x2, y2, x, y) { + var curve = ['C', x1, y1, x2, y2, x, y].join(' '); + return curve; + } + }, { + key: "quadraticCurve", + value: function quadraticCurve(x1, y1, x, y) { + var curve = ['Q', x1, y1, x, y].join(' '); + return curve; + } + }, { + key: "arc", + value: function arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y) { + var relative = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false; + var coord = 'A'; + if (relative) coord = 'a'; + var arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join(' '); + return arc; + } + /** + * @memberof Graphics + * @param {object} + * i = series's index + * realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't + * pathFrom = existing pathFrom to animateTo + * pathTo = new Path to which d attr will be animated from pathFrom to pathTo + * stroke = line Color + * strokeWidth = width of path Line + * fill = it can be gradient, single color, pattern or image + * animationDelay = how much to delay when starting animation (in milliseconds) + * dataChangeSpeed = for dynamic animations, when data changes + * className = class attribute to add + * @return {object} svg.js path object + **/ + + }, { + key: "renderPaths", + value: function renderPaths(_ref2) { + var j = _ref2.j, + realIndex = _ref2.realIndex, + pathFrom = _ref2.pathFrom, + pathTo = _ref2.pathTo, + stroke = _ref2.stroke, + strokeWidth = _ref2.strokeWidth, + strokeLinecap = _ref2.strokeLinecap, + fill = _ref2.fill, + animationDelay = _ref2.animationDelay, + initialSpeed = _ref2.initialSpeed, + dataChangeSpeed = _ref2.dataChangeSpeed, + className = _ref2.className, + _ref2$shouldClipToGri = _ref2.shouldClipToGrid, + shouldClipToGrid = _ref2$shouldClipToGri === void 0 ? true : _ref2$shouldClipToGri, + _ref2$bindEventsOnPat = _ref2.bindEventsOnPaths, + bindEventsOnPaths = _ref2$bindEventsOnPat === void 0 ? true : _ref2$bindEventsOnPat, + _ref2$drawShadow = _ref2.drawShadow, + drawShadow = _ref2$drawShadow === void 0 ? true : _ref2$drawShadow; + var w = this.w; + var filters = new Filters(this.ctx); + var anim = new Animations(this.ctx); + var initialAnim = this.w.config.chart.animations.enabled; + var dynamicAnim = initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + var d; + var shouldAnimate = !!(initialAnim && !w.globals.resized || dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate); + + if (shouldAnimate) { + d = pathFrom; + } else { + d = pathTo; + w.globals.animationEnded = true; + } + + var strokeDashArrayOpt = w.config.stroke.dashArray; + var strokeDashArray = 0; + + if (Array.isArray(strokeDashArrayOpt)) { + strokeDashArray = strokeDashArrayOpt[realIndex]; + } else { + strokeDashArray = w.config.stroke.dashArray; + } + + var el = this.drawPath({ + d: d, + stroke: stroke, + strokeWidth: strokeWidth, + fill: fill, + fillOpacity: 1, + classes: className, + strokeLinecap: strokeLinecap, + strokeDashArray: strokeDashArray + }); + el.attr('index', realIndex); + + if (shouldClipToGrid) { + el.attr({ + 'clip-path': "url(#gridRectMask".concat(w.globals.cuid, ")") + }); + } // const defaultFilter = el.filterer + + + if (w.config.states.normal.filter.type !== 'none') { + filters.getDefaultFilter(el, realIndex); + } else { + if (w.config.chart.dropShadow.enabled && drawShadow) { + if (!w.config.chart.dropShadow.enabledOnSeries || w.config.chart.dropShadow.enabledOnSeries && w.config.chart.dropShadow.enabledOnSeries.indexOf(realIndex) !== -1) { + var shadow = w.config.chart.dropShadow; + filters.dropShadow(el, shadow, realIndex); + } + } + } + + if (bindEventsOnPaths) { + el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el)); + el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el)); + el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el)); + } + + el.attr({ + pathTo: pathTo, + pathFrom: pathFrom + }); + var defaultAnimateOpts = { + el: el, + j: j, + realIndex: realIndex, + pathFrom: pathFrom, + pathTo: pathTo, + fill: fill, + strokeWidth: strokeWidth, + delay: animationDelay + }; + + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + anim.animatePathsGradually(_objectSpread2(_objectSpread2({}, defaultAnimateOpts), {}, { + speed: initialSpeed + })); + } else { + if (w.globals.resized || !w.globals.dataChanged) { + anim.showDelayedElements(); + } + } + + if (w.globals.dataChanged && dynamicAnim && shouldAnimate) { + anim.animatePathsGradually(_objectSpread2(_objectSpread2({}, defaultAnimateOpts), {}, { + speed: dataChangeSpeed + })); + } + + return el; + } + }, { + key: "drawPattern", + value: function drawPattern(style, width, height) { + var stroke = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '#a8a8a8'; + var strokeWidth = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + var w = this.w; + var p = w.globals.dom.Paper.pattern(width, height, function (add) { + if (style === 'horizontalLines') { + add.line(0, 0, height, 0).stroke({ + color: stroke, + width: strokeWidth + 1 + }); + } else if (style === 'verticalLines') { + add.line(0, 0, 0, width).stroke({ + color: stroke, + width: strokeWidth + 1 + }); + } else if (style === 'slantedLines') { + add.line(0, 0, width, height).stroke({ + color: stroke, + width: strokeWidth + }); + } else if (style === 'squares') { + add.rect(width, height).fill('none').stroke({ + color: stroke, + width: strokeWidth + }); + } else if (style === 'circles') { + add.circle(width).fill('none').stroke({ + color: stroke, + width: strokeWidth + }); + } + }); + return p; + } + }, { + key: "drawGradient", + value: function drawGradient(style, gfrom, gto, opacityFrom, opacityTo) { + var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var stops = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null; + var colorStops = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null; + var i = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 0; + var w = this.w; + var g; + + if (gfrom.length < 9 && gfrom.indexOf('#') === 0) { + // if the hex contains alpha and is of 9 digit, skip the opacity + gfrom = Utils$1.hexToRgba(gfrom, opacityFrom); + } + + if (gto.length < 9 && gto.indexOf('#') === 0) { + gto = Utils$1.hexToRgba(gto, opacityTo); + } + + var stop1 = 0; + var stop2 = 1; + var stop3 = 1; + var stop4 = null; + + if (stops !== null) { + stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0; + stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1; + stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1; + stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null; + } + + var radial = !!(w.config.chart.type === 'donut' || w.config.chart.type === 'pie' || w.config.chart.type === 'polarArea' || w.config.chart.type === 'bubble'); + + if (colorStops === null || colorStops.length === 0) { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) { + stop.at(stop1, gfrom, opacityFrom); + stop.at(stop2, gto, opacityTo); + stop.at(stop3, gto, opacityTo); + + if (stop4 !== null) { + stop.at(stop4, gfrom, opacityFrom); + } + }); + } else { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', function (stop) { + var gradientStops = Array.isArray(colorStops[i]) ? colorStops[i] : colorStops; + gradientStops.forEach(function (s) { + stop.at(s.offset / 100, s.color, s.opacity); + }); + }); + } + + if (!radial) { + if (style === 'vertical') { + g.from(0, 0).to(0, 1); + } else if (style === 'diagonal') { + g.from(0, 0).to(1, 1); + } else if (style === 'horizontal') { + g.from(0, 1).to(1, 1); + } else if (style === 'diagonal2') { + g.from(1, 0).to(0, 1); + } + } else { + var offx = w.globals.gridWidth / 2; + var offy = w.globals.gridHeight / 2; + + if (w.config.chart.type !== 'bubble') { + g.attr({ + gradientUnits: 'userSpaceOnUse', + cx: offx, + cy: offy, + r: size + }); + } else { + g.attr({ + cx: 0.5, + cy: 0.5, + r: 0.8, + fx: 0.2, + fy: 0.2 + }); + } + } + + return g; + } + }, { + key: "getTextBasedOnMaxWidth", + value: function getTextBasedOnMaxWidth(_ref3) { + var text = _ref3.text, + maxWidth = _ref3.maxWidth, + fontSize = _ref3.fontSize, + fontFamily = _ref3.fontFamily; + var tRects = this.getTextRects(text, fontSize, fontFamily); + var wordWidth = tRects.width / text.length; + var wordsBasedOnWidth = Math.floor(maxWidth / wordWidth); + + if (maxWidth < tRects.width) { + return text.slice(0, wordsBasedOnWidth - 3) + '...'; + } + + return text; + } + }, { + key: "drawText", + value: function drawText(_ref4) { + var _this = this; + + var x = _ref4.x, + y = _ref4.y, + text = _ref4.text, + textAnchor = _ref4.textAnchor, + fontSize = _ref4.fontSize, + fontFamily = _ref4.fontFamily, + fontWeight = _ref4.fontWeight, + foreColor = _ref4.foreColor, + opacity = _ref4.opacity, + maxWidth = _ref4.maxWidth, + _ref4$cssClass = _ref4.cssClass, + cssClass = _ref4$cssClass === void 0 ? '' : _ref4$cssClass, + _ref4$isPlainText = _ref4.isPlainText, + isPlainText = _ref4$isPlainText === void 0 ? true : _ref4$isPlainText; + var w = this.w; + if (typeof text === 'undefined') text = ''; + var truncatedText = text; + + if (!textAnchor) { + textAnchor = 'start'; + } + + if (!foreColor || !foreColor.length) { + foreColor = w.config.chart.foreColor; + } + + fontFamily = fontFamily || w.config.chart.fontFamily; + fontSize = fontSize || '11px'; + fontWeight = fontWeight || 'regular'; + var commonProps = { + maxWidth: maxWidth, + fontSize: fontSize, + fontFamily: fontFamily + }; + var elText; + + if (Array.isArray(text)) { + elText = w.globals.dom.Paper.text(function (add) { + for (var i = 0; i < text.length; i++) { + truncatedText = text[i]; + + if (maxWidth) { + truncatedText = _this.getTextBasedOnMaxWidth(_objectSpread2({ + text: text[i] + }, commonProps)); + } + + i === 0 ? add.tspan(truncatedText) : add.tspan(truncatedText).newLine(); + } + }); + } else { + if (maxWidth) { + truncatedText = this.getTextBasedOnMaxWidth(_objectSpread2({ + text: text + }, commonProps)); + } + + elText = isPlainText ? w.globals.dom.Paper.plain(text) : w.globals.dom.Paper.text(function (add) { + return add.tspan(truncatedText); + }); + } + + elText.attr({ + x: x, + y: y, + 'text-anchor': textAnchor, + 'dominant-baseline': 'auto', + 'font-size': fontSize, + 'font-family': fontFamily, + 'font-weight': fontWeight, + fill: foreColor, + class: 'apexcharts-text ' + cssClass + }); + elText.node.style.fontFamily = fontFamily; + elText.node.style.opacity = opacity; + return elText; + } + }, { + key: "drawMarker", + value: function drawMarker(x, y, opts) { + x = x || 0; + var size = opts.pSize || 0; + var elPoint = null; + + if (opts.shape === 'square' || opts.shape === 'rect') { + var radius = opts.pRadius === undefined ? size / 2 : opts.pRadius; + + if (y === null || !size) { + size = 0; + radius = 0; + } + + var nSize = size * 1.2 + radius; + var p = this.drawRect(nSize, nSize, nSize, nSize, radius); + p.attr({ + x: x - nSize / 2, + y: y - nSize / 2, + cx: x, + cy: y, + class: opts.class ? opts.class : '', + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + stroke: opts.pointStrokeColor, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }); + elPoint = p; + } else if (opts.shape === 'circle' || !opts.shape) { + if (!Utils$1.isNumber(y)) { + size = 0; + y = 0; + } // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2 + + + elPoint = this.drawCircle(size, { + cx: x, + cy: y, + class: opts.class ? opts.class : '', + stroke: opts.pointStrokeColor, + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }); + } + + return elPoint; + } + }, { + key: "pathMouseEnter", + value: function pathMouseEnter(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + + if (typeof w.config.chart.events.dataPointMouseEnter === 'function') { + w.config.chart.events.dataPointMouseEnter(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + this.ctx.events.fireEvent('dataPointMouseEnter', [e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return; + } + } + + if (w.config.states.hover.filter.type !== 'none') { + if (!w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } + } + } + }, { + key: "pathMouseLeave", + value: function pathMouseLeave(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + + if (typeof w.config.chart.events.dataPointMouseLeave === 'function') { + w.config.chart.events.dataPointMouseLeave(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + this.ctx.events.fireEvent('dataPointMouseLeave', [e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return; + } + } + + if (w.config.states.hover.filter.type !== 'none') { + filters.getDefaultFilter(path, i); + } + } + }, { + key: "pathMouseDown", + value: function pathMouseDown(path, e) { + var w = this.w; + var filters = new Filters(this.ctx); + var i = parseInt(path.node.getAttribute('index'), 10); + var j = parseInt(path.node.getAttribute('j'), 10); + var selected = 'false'; + + if (path.node.getAttribute('selected') === 'true') { + path.node.setAttribute('selected', 'false'); + + if (w.globals.selectedDataPoints[i].indexOf(j) > -1) { + var index = w.globals.selectedDataPoints[i].indexOf(j); + w.globals.selectedDataPoints[i].splice(index, 1); + } + } else { + if (!w.config.states.active.allowMultipleDataPointsSelection && w.globals.selectedDataPoints.length > 0) { + w.globals.selectedDataPoints = []; + var elPaths = w.globals.dom.Paper.select('.apexcharts-series path').members; + var elCircles = w.globals.dom.Paper.select('.apexcharts-series circle, .apexcharts-series rect').members; + + var deSelect = function deSelect(els) { + Array.prototype.forEach.call(els, function (el) { + el.node.setAttribute('selected', 'false'); + filters.getDefaultFilter(el, i); + }); + }; + + deSelect(elPaths); + deSelect(elCircles); + } + + path.node.setAttribute('selected', 'true'); + selected = 'true'; + + if (typeof w.globals.selectedDataPoints[i] === 'undefined') { + w.globals.selectedDataPoints[i] = []; + } + + w.globals.selectedDataPoints[i].push(j); + } + + if (selected === 'true') { + var activeFilter = w.config.states.active.filter; + + if (activeFilter !== 'none') { + filters.applyFilter(path, i, activeFilter.type, activeFilter.value); + } else { + // Reapply the hover filter in case it was removed by `deselect`when there is no active filter and it is not a touch device + if (w.config.states.hover.filter !== 'none') { + if (!w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } + } + } + } else { + // If the item was deselected, apply hover state filter if it is not a touch device + if (w.config.states.active.filter.type !== 'none') { + if (w.config.states.hover.filter.type !== 'none' && !w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter; + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value); + } else { + filters.getDefaultFilter(path, i); + } + } + } + + if (typeof w.config.chart.events.dataPointSelection === 'function') { + w.config.chart.events.dataPointSelection(e, this.ctx, { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + if (e) { + this.ctx.events.fireEvent('dataPointSelection', [e, this.ctx, { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w: w + }]); + } + } + }, { + key: "rotateAroundCenter", + value: function rotateAroundCenter(el) { + var coord = {}; + + if (el && typeof el.getBBox === 'function') { + coord = el.getBBox(); + } + + var x = coord.x + coord.width / 2; + var y = coord.y + coord.height / 2; + return { + x: x, + y: y + }; + } + }, { + key: "getTextRects", + value: function getTextRects(text, fontSize, fontFamily, transform) { + var useBBox = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var w = this.w; + var virtualText = this.drawText({ + x: -200, + y: -200, + text: text, + textAnchor: 'start', + fontSize: fontSize, + fontFamily: fontFamily, + foreColor: '#fff', + opacity: 0 + }); + + if (transform) { + virtualText.attr('transform', transform); + } + + w.globals.dom.Paper.add(virtualText); + var rect = virtualText.bbox(); + + if (!useBBox) { + rect = virtualText.node.getBoundingClientRect(); + } + + virtualText.remove(); + return { + width: rect.width, + height: rect.height + }; + } + /** + * append ... to long text + * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg + * @memberof Graphics + **/ + + }, { + key: "placeTextWithEllipsis", + value: function placeTextWithEllipsis(textObj, textString, width) { + if (typeof textObj.getComputedTextLength !== 'function') return; + textObj.textContent = textString; + + if (textString.length > 0) { + // ellipsis is needed + if (textObj.getComputedTextLength() >= width / 1.1) { + for (var x = textString.length - 3; x > 0; x -= 3) { + if (textObj.getSubStringLength(0, x) <= width / 1.1) { + textObj.textContent = textString.substring(0, x) + '...'; + return; + } + } + + textObj.textContent = '.'; // can't place at all + } + } + } + }], [{ + key: "setAttrs", + value: function setAttrs(el, attrs) { + for (var key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]); + } + } + } + }]); + + return Graphics; + }(); + + /* + ** Util functions which are dependent on ApexCharts instance + */ + var CoreUtils = /*#__PURE__*/function () { + function CoreUtils(ctx) { + _classCallCheck(this, CoreUtils); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(CoreUtils, [{ + key: "getStackedSeriesTotals", + value: + /** + * @memberof CoreUtils + * returns the sum of all individual values in a multiple stacked series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [34,36,48,13] + **/ + function getStackedSeriesTotals() { + var excludedSeriesIndices = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var w = this.w; + var total = []; + if (w.globals.series.length === 0) return total; + + for (var i = 0; i < w.globals.series[w.globals.maxValsInArrayIndex].length; i++) { + var t = 0; + + for (var j = 0; j < w.globals.series.length; j++) { + if (typeof w.globals.series[j][i] !== 'undefined' && excludedSeriesIndices.indexOf(j) === -1) { + t += w.globals.series[j][i]; + } + } + + total.push(t); + } + + return total; + } // get total of the all values inside all series + + }, { + key: "getSeriesTotalByIndex", + value: function getSeriesTotalByIndex() { + var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + + if (index === null) { + // non-plot chart types - pie / donut / circle + return this.w.config.series.reduce(function (acc, cur) { + return acc + cur; + }, 0); + } else { + // axis charts - supporting multiple series + return this.w.globals.series[index].reduce(function (acc, cur) { + return acc + cur; + }, 0); + } + } + }, { + key: "isSeriesNull", + value: function isSeriesNull() { + var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var r = []; + + if (index === null) { + // non-plot chart types - pie / donut / circle + r = this.w.config.series.filter(function (d) { + return d !== null; + }); + } else { + // axis charts - supporting multiple series + r = this.w.config.series[index].data.filter(function (d) { + return d !== null; + }); + } + + return r.length === 0; + } + }, { + key: "seriesHaveSameValues", + value: function seriesHaveSameValues(index) { + return this.w.globals.series[index].every(function (val, i, arr) { + return val === arr[0]; + }); + } + }, { + key: "getCategoryLabels", + value: function getCategoryLabels(labels) { + var w = this.w; + var catLabels = labels.slice(); + + if (w.config.xaxis.convertedCatToNumeric) { + catLabels = labels.map(function (i, li) { + return w.config.xaxis.labels.formatter(i - w.globals.minX + 1); + }); + } + + return catLabels; + } // maxValsInArrayIndex is the index of series[] which has the largest number of items + + }, { + key: "getLargestSeries", + value: function getLargestSeries() { + var w = this.w; + w.globals.maxValsInArrayIndex = w.globals.series.map(function (a) { + return a.length; + }).indexOf(Math.max.apply(Math, w.globals.series.map(function (a) { + return a.length; + }))); + } + }, { + key: "getLargestMarkerSize", + value: function getLargestMarkerSize() { + var w = this.w; + var size = 0; + w.globals.markers.size.forEach(function (m) { + size = Math.max(size, m); + }); + + if (w.config.markers.discrete && w.config.markers.discrete.length) { + w.config.markers.discrete.forEach(function (m) { + size = Math.max(size, m.size); + }); + } + + if (size > 0) { + size += w.config.markers.hover.sizeOffset + 1; + } + + w.globals.markers.largestSize = size; + return size; + } + /** + * @memberof Core + * returns the sum of all values in a series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [120, 11] + **/ + + }, { + key: "getSeriesTotals", + value: function getSeriesTotals() { + var w = this.w; + w.globals.seriesTotals = w.globals.series.map(function (ser, index) { + var total = 0; + + if (Array.isArray(ser)) { + for (var j = 0; j < ser.length; j++) { + total += ser[j]; + } + } else { + // for pie/donuts/gauges + total += ser; + } + + return total; + }); + } + }, { + key: "getSeriesTotalsXRange", + value: function getSeriesTotalsXRange(minX, maxX) { + var w = this.w; + var seriesTotalsXRange = w.globals.series.map(function (ser, index) { + var total = 0; + + for (var j = 0; j < ser.length; j++) { + if (w.globals.seriesX[index][j] > minX && w.globals.seriesX[index][j] < maxX) { + total += ser[j]; + } + } + + return total; + }); + return seriesTotalsXRange; + } + /** + * @memberof CoreUtils + * returns the percentage value of all individual values which can be used in a 100% stacked series + * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]] + * @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]] + **/ + + }, { + key: "getPercentSeries", + value: function getPercentSeries() { + var w = this.w; + w.globals.seriesPercent = w.globals.series.map(function (ser, index) { + var seriesPercent = []; + + if (Array.isArray(ser)) { + for (var j = 0; j < ser.length; j++) { + var total = w.globals.stackedSeriesTotals[j]; + var percent = 0; + + if (total) { + percent = 100 * ser[j] / total; + } + + seriesPercent.push(percent); + } + } else { + var _total = w.globals.seriesTotals.reduce(function (acc, val) { + return acc + val; + }, 0); + + var _percent = 100 * ser / _total; + + seriesPercent.push(_percent); + } + + return seriesPercent; + }); + } + }, { + key: "getCalculatedRatios", + value: function getCalculatedRatios() { + var gl = this.w.globals; + var yRatio = []; + var invertedYRatio = 0; + var xRatio = 0; + var initialXRatio = 0; + var invertedXRatio = 0; + var zRatio = 0; + var baseLineY = []; + var baseLineInvertedY = 0.1; + var baseLineX = 0; + gl.yRange = []; + + if (gl.isMultipleYAxis) { + for (var i = 0; i < gl.minYArr.length; i++) { + gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i])); + baseLineY.push(0); + } + } else { + gl.yRange.push(Math.abs(gl.minY - gl.maxY)); + } + + gl.xRange = Math.abs(gl.maxX - gl.minX); + gl.zRange = Math.abs(gl.maxZ - gl.minZ); // multiple y axis + + for (var _i = 0; _i < gl.yRange.length; _i++) { + yRatio.push(gl.yRange[_i] / gl.gridHeight); + } + + xRatio = gl.xRange / gl.gridWidth; + initialXRatio = Math.abs(gl.initialMaxX - gl.initialMinX) / gl.gridWidth; + invertedYRatio = gl.yRange / gl.gridWidth; + invertedXRatio = gl.xRange / gl.gridHeight; + zRatio = gl.zRange / gl.gridHeight * 16; + + if (!zRatio) { + zRatio = 1; + } + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + // Negative numbers present in series + gl.hasNegs = true; + } + + if (gl.isMultipleYAxis) { + baseLineY = []; // baseline variables is the 0 of the yaxis which will be needed when there are negatives + + for (var _i2 = 0; _i2 < yRatio.length; _i2++) { + baseLineY.push(-gl.minYArr[_i2] / yRatio[_i2]); + } + } else { + baseLineY.push(-gl.minY / yRatio[0]); + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + baseLineInvertedY = -gl.minY / invertedYRatio; // this is for bar chart + + baseLineX = gl.minX / xRatio; + } + } + + return { + yRatio: yRatio, + invertedYRatio: invertedYRatio, + zRatio: zRatio, + xRatio: xRatio, + initialXRatio: initialXRatio, + invertedXRatio: invertedXRatio, + baseLineInvertedY: baseLineInvertedY, + baseLineY: baseLineY, + baseLineX: baseLineX + }; + } + }, { + key: "getLogSeries", + value: function getLogSeries(series) { + var _this = this; + + var w = this.w; + w.globals.seriesLog = series.map(function (s, i) { + if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) { + return s.map(function (d) { + if (d === null) return null; + return _this.getLogVal(w.config.yaxis[i].logBase, d, i); + }); + } else { + return s; + } + }); + return w.globals.invalidLogScale ? series : w.globals.seriesLog; + } + }, { + key: "getBaseLog", + value: function getBaseLog(base, value) { + return Math.log(value) / Math.log(base); + } + }, { + key: "getLogVal", + value: function getLogVal(b, d, yIndex) { + if (d === 0) { + return 0; + } + + var w = this.w; + var min_log_val = w.globals.minYArr[yIndex] === 0 ? -1 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.minYArr[yIndex]); + var max_log_val = w.globals.maxYArr[yIndex] === 0 ? 0 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.maxYArr[yIndex]); + var number_of_height_levels = max_log_val - min_log_val; + if (d < 1) return d / number_of_height_levels; + var log_height_value = this.getBaseLog(b, d) - min_log_val; + return log_height_value / number_of_height_levels; + } + }, { + key: "getLogYRatios", + value: function getLogYRatios(yRatio) { + var _this2 = this; + + var w = this.w; + var gl = this.w.globals; + gl.yLogRatio = yRatio.slice(); + gl.logYRange = gl.yRange.map(function (yRange, i) { + if (w.config.yaxis[i] && _this2.w.config.yaxis[i].logarithmic) { + var maxY = -Number.MAX_VALUE; + var minY = Number.MIN_VALUE; + var range = 1; + gl.seriesLog.forEach(function (s, si) { + s.forEach(function (v) { + if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) { + maxY = Math.max(v, maxY); + minY = Math.min(v, minY); + } + }); + }); + range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]); + gl.yLogRatio[i] = range / gl.gridHeight; + return range; + } + }); + return gl.invalidLogScale ? yRatio.slice() : gl.yLogRatio; + } // Some config objects can be array - and we need to extend them correctly + + }], [{ + key: "checkComboSeries", + value: function checkComboSeries(series) { + var comboCharts = false; + var comboBarCount = 0; + var comboCount = 0; // if user specified a type in series too, turn on comboCharts flag + + if (series.length && typeof series[0].type !== 'undefined') { + series.forEach(function (s) { + if (s.type === 'bar' || s.type === 'column' || s.type === 'candlestick' || s.type === 'boxPlot') { + comboBarCount++; + } + + if (typeof s.type !== 'undefined') { + comboCount++; + } + }); + } + + if (comboCount > 0) { + comboCharts = true; + } + + return { + comboBarCount: comboBarCount, + comboCharts: comboCharts + }; + } + }, { + key: "extendArrayProps", + value: function extendArrayProps(configInstance, options, w) { + if (options.yaxis) { + options = configInstance.extendYAxis(options, w); + } + + if (options.annotations) { + if (options.annotations.yaxis) { + options = configInstance.extendYAxisAnnotations(options); + } + + if (options.annotations.xaxis) { + options = configInstance.extendXAxisAnnotations(options); + } + + if (options.annotations.points) { + options = configInstance.extendPointAnnotations(options); + } + } + + return options; + } + }]); + + return CoreUtils; + }(); + + var Helpers$4 = /*#__PURE__*/function () { + function Helpers(annoCtx) { + _classCallCheck(this, Helpers); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + } + + _createClass(Helpers, [{ + key: "setOrientations", + value: function setOrientations(anno) { + var annoIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var w = this.w; + + if (anno.label.orientation === 'vertical') { + var i = annoIndex !== null ? annoIndex : 0; + var xAnno = w.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(i, "']")); + + if (xAnno !== null) { + var xAnnoCoord = xAnno.getBoundingClientRect(); + xAnno.setAttribute('x', parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4); + + if (anno.label.position === 'top') { + xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width); + } else { + xAnno.setAttribute('y', parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width); + } + + var annoRotatingCenter = this.annoCtx.graphics.rotateAroundCenter(xAnno); + var x = annoRotatingCenter.x; + var y = annoRotatingCenter.y; + xAnno.setAttribute('transform', "rotate(-90 ".concat(x, " ").concat(y, ")")); + } + } + } + }, { + key: "addBackgroundToAnno", + value: function addBackgroundToAnno(annoEl, anno) { + var w = this.w; + if (!annoEl || typeof anno.label.text === 'undefined' || typeof anno.label.text !== 'undefined' && !String(anno.label.text).trim()) return null; + var elGridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid').getBoundingClientRect(); + var coords = annoEl.getBoundingClientRect(); + var pleft = anno.label.style.padding.left; + var pright = anno.label.style.padding.right; + var ptop = anno.label.style.padding.top; + var pbottom = anno.label.style.padding.bottom; + + if (anno.label.orientation === 'vertical') { + ptop = anno.label.style.padding.left; + pbottom = anno.label.style.padding.right; + pleft = anno.label.style.padding.top; + pright = anno.label.style.padding.bottom; + } + + var x1 = coords.left - elGridRect.left - pleft; + var y1 = coords.top - elGridRect.top - ptop; + var elRect = this.annoCtx.graphics.drawRect(x1 - w.globals.barPadForNumericAxis, y1, coords.width + pleft + pright, coords.height + ptop + pbottom, anno.label.borderRadius, anno.label.style.background, 1, anno.label.borderWidth, anno.label.borderColor, 0); + + if (anno.id) { + // don't escapeString for this ID as it causes duplicate rects + elRect.node.classList.add(anno.id); + } + + return elRect; + } + }, { + key: "annotationsBackground", + value: function annotationsBackground() { + var _this = this; + + var w = this.w; + + var add = function add(anno, i, type) { + var annoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(i, "']")); + + if (annoLabel) { + var parent = annoLabel.parentNode; + + var elRect = _this.addBackgroundToAnno(annoLabel, anno); + + if (elRect) { + parent.insertBefore(elRect.node, annoLabel); + + if (anno.label.mouseEnter) { + elRect.node.addEventListener('mouseenter', anno.label.mouseEnter.bind(_this, anno)); + } + + if (anno.label.mouseLeave) { + elRect.node.addEventListener('mouseleave', anno.label.mouseLeave.bind(_this, anno)); + } + + if (anno.label.click) { + elRect.node.addEventListener('click', anno.label.click.bind(_this, anno)); + } + } + } + }; + + w.config.annotations.xaxis.map(function (anno, i) { + add(anno, i, 'xaxis'); + }); + w.config.annotations.yaxis.map(function (anno, i) { + add(anno, i, 'yaxis'); + }); + w.config.annotations.points.map(function (anno, i) { + add(anno, i, 'point'); + }); + } + }, { + key: "getY1Y2", + value: function getY1Y2(type, anno) { + var y = type === 'y1' ? anno.y : anno.y2; + var yP; + var w = this.w; + + if (this.annoCtx.invertAxis) { + var catIndex = w.globals.labels.indexOf(y); + + if (w.config.xaxis.convertedCatToNumeric) { + catIndex = w.globals.categoryLabels.indexOf(y); + } + + var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')'); + + if (xLabel) { + yP = parseFloat(xLabel.getAttribute('y')); + } + } else { + var yPos; + + if (w.config.yaxis[anno.yAxisIndex].logarithmic) { + var coreUtils = new CoreUtils(this.annoCtx.ctx); + y = coreUtils.getLogVal(y, anno.yAxisIndex); + yPos = y / w.globals.yLogRatio[anno.yAxisIndex]; + } else { + yPos = (y - w.globals.minYArr[anno.yAxisIndex]) / (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight); + } + + yP = w.globals.gridHeight - yPos; + + if (anno.marker && (anno.y === undefined || anno.y === null)) { + // point annotation + yP = 0; + } + + if (w.config.yaxis[anno.yAxisIndex] && w.config.yaxis[anno.yAxisIndex].reversed) { + yP = yPos; + } + } + + if (typeof y === 'string' && y.indexOf('px') > -1) { + yP = parseFloat(y); + } + + return yP; + } + }, { + key: "getX1X2", + value: function getX1X2(type, anno) { + var w = this.w; + var min = this.annoCtx.invertAxis ? w.globals.minY : w.globals.minX; + var max = this.annoCtx.invertAxis ? w.globals.maxY : w.globals.maxX; + var range = this.annoCtx.invertAxis ? w.globals.yRange[0] : w.globals.xRange; + var x1 = (anno.x - min) / (range / w.globals.gridWidth); + + if (this.annoCtx.inversedReversedAxis) { + x1 = (max - anno.x) / (range / w.globals.gridWidth); + } + + if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.annoCtx.invertAxis && !w.globals.dataFormatXNumeric) { + x1 = this.getStringX(anno.x); + } + + var x2 = (anno.x2 - min) / (range / w.globals.gridWidth); + + if (this.annoCtx.inversedReversedAxis) { + x2 = (max - anno.x2) / (range / w.globals.gridWidth); + } + + if ((w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) && !this.annoCtx.invertAxis && !w.globals.dataFormatXNumeric) { + x2 = this.getStringX(anno.x2); + } + + if ((anno.x === undefined || anno.x === null) && anno.marker) { + // point annotation in a horizontal chart + x1 = w.globals.gridWidth; + } + + if (type === 'x1' && typeof anno.x === 'string' && anno.x.indexOf('px') > -1) { + x1 = parseFloat(anno.x); + } + + if (type === 'x2' && typeof anno.x2 === 'string' && anno.x2.indexOf('px') > -1) { + x2 = parseFloat(anno.x2); + } + + return type === 'x1' ? x1 : x2; + } + }, { + key: "getStringX", + value: function getStringX(x) { + var w = this.w; + var rX = x; + + if (w.config.xaxis.convertedCatToNumeric && w.globals.categoryLabels.length) { + x = w.globals.categoryLabels.indexOf(x) + 1; + } + + var catIndex = w.globals.labels.indexOf(x); + var xLabel = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')'); + + if (xLabel) { + rX = parseFloat(xLabel.getAttribute('x')); + } + + return rX; + } + }]); + + return Helpers; + }(); + + var XAnnotations = /*#__PURE__*/function () { + function XAnnotations(annoCtx) { + _classCallCheck(this, XAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.invertAxis = this.annoCtx.invertAxis; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(XAnnotations, [{ + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(anno, parent, index) { + var w = this.w; + var x1 = this.helpers.getX1X2('x1', anno); + var x2; + var text = anno.label.text; + var strokeDashArray = anno.strokeDashArray; + if (!Utils$1.isNumber(x1)) return; + + if (anno.x2 === null || typeof anno.x2 === 'undefined') { + var line = this.annoCtx.graphics.drawLine(x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x1 + anno.offsetX, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, //dashArray + anno.borderWidth); + parent.appendChild(line.node); + + if (anno.id) { + line.node.classList.add(anno.id); + } + } else { + x2 = this.helpers.getX1X2('x2', anno); + + if (x2 < x1) { + var temp = x1; + x1 = x2; + x2 = temp; + } + + var rect = this.annoCtx.graphics.drawRect(x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x2 - x1, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ); + rect.node.classList.add('apexcharts-annotation-rect'); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + parent.appendChild(rect.node); + + if (anno.id) { + rect.node.classList.add(anno.id); + } + } + + var textRects = this.annoCtx.graphics.getTextRects(text, parseFloat(anno.label.style.fontSize)); + var textY = anno.label.position === 'top' ? 4 : anno.label.position === 'center' ? w.globals.gridHeight / 2 + (anno.label.orientation === 'vertical' ? textRects.width / 2 : 0) : w.globals.gridHeight; + var elText = this.annoCtx.graphics.drawText({ + x: x1 + anno.label.offsetX, + y: textY + anno.label.offsetY - (anno.label.orientation === 'vertical' ? anno.label.position === 'top' ? textRects.width / 2 - 12 : -textRects.width / 2 : 0), + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-xaxis-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); // after placing the annotations on svg, set any vertically placed annotations + + this.annoCtx.helpers.setOrientations(anno, index); + } + }, { + key: "drawXAxisAnnotations", + value: function drawXAxisAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-xaxis-annotations' + }); + w.config.annotations.xaxis.map(function (anno, index) { + _this.addXaxisAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return XAnnotations; + }(); + + var YAnnotations = /*#__PURE__*/function () { + function YAnnotations(annoCtx) { + _classCallCheck(this, YAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(YAnnotations, [{ + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(anno, parent, index) { + var w = this.w; + var strokeDashArray = anno.strokeDashArray; + var y1 = this.helpers.getY1Y2('y1', anno); + var y2; + var text = anno.label.text; + + if (anno.y2 === null || typeof anno.y2 === 'undefined') { + var line = this.annoCtx.graphics.drawLine(0 + anno.offsetX, // x1 + y1 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, // dashArray + anno.borderWidth); + parent.appendChild(line.node); + + if (anno.id) { + line.node.classList.add(anno.id); + } + } else { + y2 = this.helpers.getY1Y2('y2', anno); + + if (y2 > y1) { + var temp = y1; + y1 = y2; + y2 = temp; + } + + var rect = this.annoCtx.graphics.drawRect(0 + anno.offsetX, // x1 + y2 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 - y2, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ); + rect.node.classList.add('apexcharts-annotation-rect'); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + parent.appendChild(rect.node); + + if (anno.id) { + rect.node.classList.add(anno.id); + } + } + + var textX = anno.label.position === 'right' ? w.globals.gridWidth : anno.label.position === 'center' ? w.globals.gridWidth / 2 : 0; + var elText = this.annoCtx.graphics.drawText({ + x: textX + anno.label.offsetX, + y: (y2 != null ? y2 : y1) + anno.label.offsetY - 3, + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-yaxis-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); + } + }, { + key: "_getYAxisAnnotationWidth", + value: function _getYAxisAnnotationWidth(anno) { + // issue apexcharts.js#2009 + var w = this.w; + var width = w.globals.gridWidth; + + if (anno.width.indexOf('%') > -1) { + width = w.globals.gridWidth * parseInt(anno.width, 10) / 100; + } else { + width = parseInt(anno.width, 10); + } + + return width + anno.offsetX; + } + }, { + key: "drawYAxisAnnotations", + value: function drawYAxisAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-yaxis-annotations' + }); + w.config.annotations.yaxis.map(function (anno, index) { + _this.addYaxisAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return YAnnotations; + }(); + + var PointAnnotations = /*#__PURE__*/function () { + function PointAnnotations(annoCtx) { + _classCallCheck(this, PointAnnotations); + + this.w = annoCtx.w; + this.annoCtx = annoCtx; + this.helpers = new Helpers$4(this.annoCtx); + } + + _createClass(PointAnnotations, [{ + key: "addPointAnnotation", + value: function addPointAnnotation(anno, parent, index) { + this.w; + var x = this.helpers.getX1X2('x1', anno); + var y = this.helpers.getY1Y2('y1', anno); + if (!Utils$1.isNumber(x)) return; + var optsPoints = { + pSize: anno.marker.size, + pointStrokeWidth: anno.marker.strokeWidth, + pointFillColor: anno.marker.fillColor, + pointStrokeColor: anno.marker.strokeColor, + shape: anno.marker.shape, + pRadius: anno.marker.radius, + class: "apexcharts-point-annotation-marker ".concat(anno.marker.cssClass, " ").concat(anno.id ? anno.id : '') + }; + var point = this.annoCtx.graphics.drawMarker(x + anno.marker.offsetX, y + anno.marker.offsetY, optsPoints); + parent.appendChild(point.node); + var text = anno.label.text ? anno.label.text : ''; + var elText = this.annoCtx.graphics.drawText({ + x: x + anno.label.offsetX, + y: y + anno.label.offsetY - anno.marker.size - parseFloat(anno.label.style.fontSize) / 1.6, + text: text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: "apexcharts-point-annotation-label ".concat(anno.label.style.cssClass, " ").concat(anno.id ? anno.id : '') + }); + elText.attr({ + rel: index + }); + parent.appendChild(elText.node); // TODO: deprecate this as we will use custom + + if (anno.customSVG.SVG) { + var g = this.annoCtx.graphics.group({ + class: 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass + }); + g.attr({ + transform: "translate(".concat(x + anno.customSVG.offsetX, ", ").concat(y + anno.customSVG.offsetY, ")") + }); + g.node.innerHTML = anno.customSVG.SVG; + parent.appendChild(g.node); + } + + if (anno.image.path) { + var imgWidth = anno.image.width ? anno.image.width : 20; + var imgHeight = anno.image.height ? anno.image.height : 20; + point = this.annoCtx.addImage({ + x: x + anno.image.offsetX - imgWidth / 2, + y: y + anno.image.offsetY - imgHeight / 2, + width: imgWidth, + height: imgHeight, + path: anno.image.path, + appendTo: '.apexcharts-point-annotations' + }); + } + + if (anno.mouseEnter) { + point.node.addEventListener('mouseenter', anno.mouseEnter.bind(this, anno)); + } + + if (anno.mouseLeave) { + point.node.addEventListener('mouseleave', anno.mouseLeave.bind(this, anno)); + } + + if (anno.click) { + point.node.addEventListener('click', anno.click.bind(this, anno)); + } + } + }, { + key: "drawPointAnnotations", + value: function drawPointAnnotations() { + var _this = this; + + var w = this.w; + var elg = this.annoCtx.graphics.group({ + class: 'apexcharts-point-annotations' + }); + w.config.annotations.points.map(function (anno, index) { + _this.addPointAnnotation(anno, elg.node, index); + }); + return elg; + } + }]); + + return PointAnnotations; + }(); + + const name = "en"; + const options = { + months: [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + shortMonths: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + days: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + shortDays: [ + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat" + ], + toolbar: { + exportToSVG: "Download SVG", + exportToPNG: "Download PNG", + exportToCSV: "Download CSV", + menu: "Menu", + selection: "Selection", + selectionZoom: "Selection Zoom", + zoomIn: "Zoom In", + zoomOut: "Zoom Out", + pan: "Panning", + reset: "Reset Zoom" + } + }; + var en = { + name: name, + options: options + }; + + var Options = /*#__PURE__*/function () { + function Options() { + _classCallCheck(this, Options); + + this.yAxis = { + show: true, + showAlways: false, + showForNullSeries: true, + seriesName: undefined, + opposite: false, + reversed: false, + logarithmic: false, + logBase: 10, + tickAmount: undefined, + forceNiceScale: false, + max: undefined, + min: undefined, + floating: false, + decimalsInFloat: undefined, + labels: { + show: true, + minWidth: 0, + maxWidth: 160, + offsetX: 0, + offsetY: 0, + align: undefined, + rotate: 0, + padding: 20, + style: { + colors: [], + fontSize: '11px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + formatter: undefined + }, + axisBorder: { + show: false, + color: '#e0e0e0', + width: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: false, + color: '#e0e0e0', + width: 6, + offsetX: 0, + offsetY: 0 + }, + title: { + text: undefined, + rotate: -90, + offsetY: 0, + offsetX: 0, + style: { + color: undefined, + fontSize: '11px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + tooltip: { + enabled: false, + offsetX: 0 + }, + crosshairs: { + show: true, + position: 'front', + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 0 + } + } + }; + this.pointAnnotation = { + id: undefined, + x: 0, + y: null, + yAxisIndex: 0, + seriesIndex: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + marker: { + size: 4, + fillColor: '#fff', + strokeWidth: 2, + strokeColor: '#333', + shape: 'circle', + offsetX: 0, + offsetY: 0, + radius: 2, + cssClass: '' + }, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + }, + customSVG: { + // this will be deprecated in the next major version as it is going to be replaced with a better alternative below + SVG: undefined, + cssClass: undefined, + offsetX: 0, + offsetY: 0 + }, + image: { + path: undefined, + width: 20, + height: 20, + offsetX: 0, + offsetY: 0 + } + }; + this.yAxisAnnotation = { + id: undefined, + y: 0, + y2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + width: '100%', + yAxisIndex: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'end', + position: 'right', + offsetX: 0, + offsetY: -3, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + }; + this.xAxisAnnotation = { + id: undefined, + x: 0, + x2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + orientation: 'vertical', + position: 'top', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + click: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + }; + this.text = { + x: 0, + y: 0, + text: '', + textAnchor: 'start', + foreColor: undefined, + fontSize: '13px', + fontFamily: undefined, + fontWeight: 400, + appendTo: '.apexcharts-annotations', + backgroundColor: 'transparent', + borderColor: '#c2c2c2', + borderRadius: 0, + borderWidth: 0, + paddingLeft: 4, + paddingRight: 4, + paddingTop: 2, + paddingBottom: 2 + }; + } + + _createClass(Options, [{ + key: "init", + value: function init() { + return { + annotations: { + position: 'front', + yaxis: [this.yAxisAnnotation], + xaxis: [this.xAxisAnnotation], + points: [this.pointAnnotation], + texts: [], + images: [], + shapes: [] + }, + chart: { + animations: { + enabled: true, + easing: 'easeinout', + // linear, easeout, easein, easeinout, swing, bounce, elastic + speed: 800, + animateGradually: { + delay: 150, + enabled: true + }, + dynamicAnimation: { + enabled: true, + speed: 350 + } + }, + background: 'transparent', + locales: [en], + defaultLocale: 'en', + dropShadow: { + enabled: false, + enabledOnSeries: undefined, + top: 2, + left: 2, + blur: 4, + color: '#000', + opacity: 0.35 + }, + events: { + animationEnd: undefined, + beforeMount: undefined, + mounted: undefined, + updated: undefined, + click: undefined, + mouseMove: undefined, + mouseLeave: undefined, + xAxisLabelClick: undefined, + legendClick: undefined, + markerClick: undefined, + selection: undefined, + dataPointSelection: undefined, + dataPointMouseEnter: undefined, + dataPointMouseLeave: undefined, + beforeZoom: undefined, + beforeResetZoom: undefined, + zoomed: undefined, + scrolled: undefined, + brushScrolled: undefined + }, + foreColor: '#373d3f', + fontFamily: 'Helvetica, Arial, sans-serif', + height: 'auto', + parentHeightOffset: 15, + redrawOnParentResize: true, + redrawOnWindowResize: true, + id: undefined, + group: undefined, + offsetX: 0, + offsetY: 0, + selection: { + enabled: false, + type: 'x', + // selectedPoints: undefined, // default datapoints that should be selected automatically + fill: { + color: '#24292e', + opacity: 0.1 + }, + stroke: { + width: 1, + color: '#24292e', + opacity: 0.4, + dashArray: 3 + }, + xaxis: { + min: undefined, + max: undefined + }, + yaxis: { + min: undefined, + max: undefined + } + }, + sparkline: { + enabled: false + }, + brush: { + enabled: false, + autoScaleYaxis: true, + target: undefined + }, + stacked: false, + stackType: 'normal', + toolbar: { + show: true, + offsetX: 0, + offsetY: 0, + tools: { + download: true, + selection: true, + zoom: true, + zoomin: true, + zoomout: true, + pan: true, + reset: true, + customIcons: [] + }, + export: { + csv: { + filename: undefined, + columnDelimiter: ',', + headerCategory: 'category', + headerValue: 'value', + dateFormatter: function dateFormatter(timestamp) { + return new Date(timestamp).toDateString(); + } + }, + png: { + filename: undefined + }, + svg: { + filename: undefined + } + }, + autoSelected: 'zoom' // accepts -> zoom, pan, selection + + }, + type: 'line', + width: '100%', + zoom: { + enabled: true, + type: 'x', + autoScaleYaxis: false, + zoomedArea: { + fill: { + color: '#90CAF9', + opacity: 0.4 + }, + stroke: { + color: '#0D47A1', + opacity: 0.4, + width: 1 + } + } + } + }, + plotOptions: { + area: { + fillTo: 'origin' + }, + bar: { + horizontal: false, + columnWidth: '70%', + // should be in percent 0 - 100 + barHeight: '70%', + // should be in percent 0 - 100 + distributed: false, + borderRadius: 0, + borderRadiusApplication: 'around', + // [around, end] + borderRadiusWhenStacked: 'last', + // [all, last] + rangeBarOverlap: true, + rangeBarGroupRows: false, + colors: { + ranges: [], + backgroundBarColors: [], + backgroundBarOpacity: 1, + backgroundBarRadius: 0 + }, + dataLabels: { + position: 'top', + // top, center, bottom + maxItems: 100, + hideOverflowingLabels: true, + orientation: 'horizontal', + total: { + enabled: false, + formatter: undefined, + offsetX: 0, + offsetY: 0, + style: { + color: '#373d3f', + fontSize: '12px', + fontFamily: undefined, + fontWeight: 600 + } + } + } + }, + bubble: { + zScaling: true, + minBubbleRadius: undefined, + maxBubbleRadius: undefined + }, + candlestick: { + colors: { + upward: '#00B746', + downward: '#EF403C' + }, + wick: { + useFillColor: true + } + }, + boxPlot: { + colors: { + upper: '#00E396', + lower: '#008FFB' + } + }, + heatmap: { + radius: 2, + enableShades: true, + shadeIntensity: 0.5, + reverseNegativeShade: false, + distributed: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + treemap: { + enableShades: true, + shadeIntensity: 0.5, + distributed: false, + reverseNegativeShade: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + radialBar: { + inverseOrder: false, + startAngle: 0, + endAngle: 360, + offsetX: 0, + offsetY: 0, + hollow: { + margin: 5, + size: '50%', + background: 'transparent', + image: undefined, + imageWidth: 150, + imageHeight: 150, + imageOffsetX: 0, + imageOffsetY: 0, + imageClipped: true, + position: 'front', + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + track: { + show: true, + startAngle: undefined, + endAngle: undefined, + background: '#f2f2f2', + strokeWidth: '97%', + opacity: 1, + margin: 5, + // margin is in pixels + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + dataLabels: { + show: true, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: 0, + formatter: function formatter(val) { + return val; + } + }, + value: { + show: true, + fontSize: '14px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 16, + formatter: function formatter(val) { + return val + '%'; + } + }, + total: { + show: false, + label: 'Total', + fontSize: '16px', + fontWeight: 600, + fontFamily: undefined, + color: undefined, + formatter: function formatter(w) { + return w.globals.seriesTotals.reduce(function (a, b) { + return a + b; + }, 0) / w.globals.series.length + '%'; + } + } + } + }, + pie: { + customScale: 1, + offsetX: 0, + offsetY: 0, + startAngle: 0, + endAngle: 360, + expandOnClick: true, + dataLabels: { + // These are the percentage values which are displayed on slice + offset: 0, + // offset by which labels will move outside + minAngleToShowLabel: 10 + }, + donut: { + size: '65%', + background: 'transparent', + labels: { + // These are the inner labels appearing inside donut + show: false, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: -10, + formatter: function formatter(val) { + return val; + } + }, + value: { + show: true, + fontSize: '20px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 10, + formatter: function formatter(val) { + return val; + } + }, + total: { + show: false, + showAlways: false, + label: 'Total', + fontSize: '16px', + fontWeight: 400, + fontFamily: undefined, + color: undefined, + formatter: function formatter(w) { + return w.globals.seriesTotals.reduce(function (a, b) { + return a + b; + }, 0); + } + } + } + } + }, + polarArea: { + rings: { + strokeWidth: 1, + strokeColor: '#e8e8e8' + }, + spokes: { + strokeWidth: 1, + connectorColors: '#e8e8e8' + } + }, + radar: { + size: undefined, + offsetX: 0, + offsetY: 0, + polygons: { + // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2 + strokeWidth: 1, + strokeColors: '#e8e8e8', + connectorColors: '#e8e8e8', + fill: { + colors: undefined + } + } + } + }, + colors: undefined, + dataLabels: { + enabled: true, + enabledOnSeries: undefined, + formatter: function formatter(val) { + return val !== null ? val : ''; + }, + textAnchor: 'middle', + distributed: false, + offsetX: 0, + offsetY: 0, + style: { + fontSize: '12px', + fontFamily: undefined, + fontWeight: 600, + colors: undefined + }, + background: { + enabled: true, + foreColor: '#fff', + borderRadius: 2, + padding: 4, + opacity: 0.9, + borderWidth: 1, + borderColor: '#fff', + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + fill: { + type: 'solid', + colors: undefined, + // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + }, + image: { + src: [], + width: undefined, + // optional + height: undefined // optional + + }, + pattern: { + style: 'squares', + // String | Array of Strings + width: 6, + height: 6, + strokeWidth: 2 + } + }, + forecastDataPoints: { + count: 0, + fillOpacity: 0.5, + strokeWidth: undefined, + dashArray: 4 + }, + grid: { + show: true, + borderColor: '#e0e0e0', + strokeDashArray: 0, + position: 'back', + xaxis: { + lines: { + show: false + } + }, + yaxis: { + lines: { + show: true + } + }, + row: { + colors: undefined, + // takes as array which will be repeated on rows + opacity: 0.5 + }, + column: { + colors: undefined, + // takes an array which will be repeated on columns + opacity: 0.5 + }, + padding: { + top: 0, + right: 10, + bottom: 0, + left: 12 + } + }, + labels: [], + legend: { + show: true, + showForSingleSeries: false, + showForNullSeries: true, + showForZeroSeries: true, + floating: false, + position: 'bottom', + // whether to position legends in 1 of 4 + // direction - top, bottom, left, right + horizontalAlign: 'center', + // when position top/bottom, you can specify whether to align legends left, right or center + inverseOrder: false, + fontSize: '12px', + fontFamily: undefined, + fontWeight: 400, + width: undefined, + height: undefined, + formatter: undefined, + tooltipHoverFormatter: undefined, + offsetX: -20, + offsetY: 4, + customLegendItems: [], + labels: { + colors: undefined, + useSeriesColors: false + }, + markers: { + width: 12, + height: 12, + strokeWidth: 0, + fillColors: undefined, + strokeColor: '#fff', + radius: 12, + customHTML: undefined, + offsetX: 0, + offsetY: 0, + onClick: undefined + }, + itemMargin: { + horizontal: 5, + vertical: 2 + }, + onItemClick: { + toggleDataSeries: true + }, + onItemHover: { + highlightDataSeries: true + } + }, + markers: { + discrete: [], + size: 0, + colors: undefined, + //strokeColor: '#fff', // TODO: deprecate in major version 4.0 + strokeColors: '#fff', + strokeWidth: 2, + strokeOpacity: 0.9, + strokeDashArray: 0, + fillOpacity: 1, + shape: 'circle', + width: 8, + // only applicable when shape is rect/square + height: 8, + // only applicable when shape is rect/square + radius: 2, + offsetX: 0, + offsetY: 0, + onClick: undefined, + onDblClick: undefined, + showNullDataPoints: true, + hover: { + size: undefined, + sizeOffset: 3 + } + }, + noData: { + text: undefined, + align: 'center', + verticalAlign: 'middle', + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '14px', + fontFamily: undefined + } + }, + responsive: [], + // breakpoints should follow ascending order 400, then 700, then 1000 + series: undefined, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'lighten', + value: 0.1 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'darken', + value: 0.5 + } + } + }, + title: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 0, + floating: false, + style: { + fontSize: '14px', + fontWeight: 900, + fontFamily: undefined, + color: undefined + } + }, + subtitle: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 30, + floating: false, + style: { + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + color: undefined + } + }, + stroke: { + show: true, + curve: 'smooth', + // "smooth" / "straight" / "stepline" + lineCap: 'butt', + // round, butt , square + width: 2, + colors: undefined, + // array of colors + dashArray: 0, + // single value or array of values + fill: { + type: 'solid', + colors: undefined, + // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + } + } + }, + tooltip: { + enabled: true, + enabledOnSeries: undefined, + shared: true, + followCursor: false, + // when disabled, the tooltip will show on top of the series instead of mouse position + intersect: false, + // when enabled, tooltip will only show when user directly hovers over point + inverseOrder: false, + custom: undefined, + fillSeriesColor: false, + theme: 'light', + cssClass: '', + style: { + fontSize: '12px', + fontFamily: undefined + }, + onDatasetHover: { + highlightDataSeries: false + }, + x: { + // x value + show: true, + format: 'dd MMM', + // dd/MM, dd MMM yy, dd MMM yyyy + formatter: undefined // a custom user supplied formatter function + + }, + y: { + formatter: undefined, + title: { + formatter: function formatter(seriesName) { + return seriesName ? seriesName + ': ' : ''; + } + } + }, + z: { + formatter: undefined, + title: 'Size: ' + }, + marker: { + show: true, + fillColors: undefined + }, + items: { + display: 'flex' + }, + fixed: { + enabled: false, + position: 'topRight', + // topRight, topLeft, bottomRight, bottomLeft + offsetX: 0, + offsetY: 0 + } + }, + xaxis: { + type: 'category', + categories: [], + convertedCatToNumeric: false, + // internal property which should not be altered outside + offsetX: 0, + offsetY: 0, + overwriteCategories: undefined, + labels: { + show: true, + rotate: -45, + rotateAlways: false, + hideOverlappingLabels: true, + trim: false, + minHeight: undefined, + maxHeight: 120, + showDuplicates: true, + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + offsetX: 0, + offsetY: 0, + format: undefined, + formatter: undefined, + // custom formatter function which will override format + datetimeUTC: true, + datetimeFormatter: { + year: 'yyyy', + month: "MMM 'yy", + day: 'dd MMM', + hour: 'HH:mm', + minute: 'HH:mm:ss', + second: 'HH:mm:ss' + } + }, + group: { + groups: [], + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + } + }, + axisBorder: { + show: true, + color: '#e0e0e0', + width: '100%', + height: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: true, + color: '#e0e0e0', + height: 6, + offsetX: 0, + offsetY: 0 + }, + tickAmount: undefined, + tickPlacement: 'on', + min: undefined, + max: undefined, + range: undefined, + floating: false, + decimalsInFloat: undefined, + position: 'bottom', + title: { + text: undefined, + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '12px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + crosshairs: { + show: true, + width: 1, + // tickWidth/barWidth or an integer + position: 'back', + opacity: 0.9, + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 3 + }, + fill: { + type: 'solid', + // solid, gradient + color: '#B1B9C4', + gradient: { + colorFrom: '#D8E3F0', + colorTo: '#BED1E6', + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5 + } + }, + dropShadow: { + enabled: false, + left: 0, + top: 0, + blur: 1, + opacity: 0.4 + } + }, + tooltip: { + enabled: true, + offsetY: 0, + formatter: undefined, + style: { + fontSize: '12px', + fontFamily: undefined + } + } + }, + yaxis: this.yAxis, + theme: { + mode: 'light', + palette: 'palette1', + // If defined, it will overwrite globals.colors variable + monochrome: { + // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected) + enabled: false, + color: '#008FFB', + shadeTo: 'light', + shadeIntensity: 0.65 + } + } + }; + } + }]); + + return Options; + }(); + + /** + * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis. + * + * @module Annotations + **/ + + var Annotations = /*#__PURE__*/function () { + function Annotations(ctx) { + _classCallCheck(this, Annotations); + + this.ctx = ctx; + this.w = ctx.w; + this.graphics = new Graphics(this.ctx); + + if (this.w.globals.isBarHorizontal) { + this.invertAxis = true; + } + + this.helpers = new Helpers$4(this); + this.xAxisAnnotations = new XAnnotations(this); + this.yAxisAnnotations = new YAnnotations(this); + this.pointsAnnotations = new PointAnnotations(this); + + if (this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed) { + this.inversedReversedAxis = true; + } + + this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints; + } + + _createClass(Annotations, [{ + key: "drawAxesAnnotations", + value: function drawAxesAnnotations() { + var w = this.w; + + if (w.globals.axisCharts) { + var yAnnotations = this.yAxisAnnotations.drawYAxisAnnotations(); + var xAnnotations = this.xAxisAnnotations.drawXAxisAnnotations(); + var pointAnnotations = this.pointsAnnotations.drawPointAnnotations(); + var initialAnim = w.config.chart.animations.enabled; + var annoArray = [yAnnotations, xAnnotations, pointAnnotations]; + var annoElArray = [xAnnotations.node, yAnnotations.node, pointAnnotations.node]; + + for (var i = 0; i < 3; i++) { + w.globals.dom.elGraphical.add(annoArray[i]); + + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + // fixes apexcharts/apexcharts.js#685 + if (w.config.chart.type !== 'scatter' && w.config.chart.type !== 'bubble' && w.globals.dataPoints > 1) { + annoElArray[i].classList.add('apexcharts-element-hidden'); + } + } + + w.globals.delayedElements.push({ + el: annoElArray[i], + index: 0 + }); + } // background sizes needs to be calculated after text is drawn, so calling them last + + + this.helpers.annotationsBackground(); + } + } + }, { + key: "drawImageAnnos", + value: function drawImageAnnos() { + var _this = this; + + var w = this.w; + w.config.annotations.images.map(function (s, index) { + _this.addImage(s, index); + }); + } + }, { + key: "drawTextAnnos", + value: function drawTextAnnos() { + var _this2 = this; + + var w = this.w; + w.config.annotations.texts.map(function (t, index) { + _this2.addText(t, index); + }); + } + }, { + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(anno, parent, index) { + this.xAxisAnnotations.addXaxisAnnotation(anno, parent, index); + } + }, { + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(anno, parent, index) { + this.yAxisAnnotations.addYaxisAnnotation(anno, parent, index); + } + }, { + key: "addPointAnnotation", + value: function addPointAnnotation(anno, parent, index) { + this.pointsAnnotations.addPointAnnotation(anno, parent, index); + } + }, { + key: "addText", + value: function addText(params, index) { + var x = params.x, + y = params.y, + text = params.text, + textAnchor = params.textAnchor, + foreColor = params.foreColor, + fontSize = params.fontSize, + fontFamily = params.fontFamily, + fontWeight = params.fontWeight, + cssClass = params.cssClass, + backgroundColor = params.backgroundColor, + borderWidth = params.borderWidth, + strokeDashArray = params.strokeDashArray, + borderRadius = params.borderRadius, + borderColor = params.borderColor, + _params$appendTo = params.appendTo, + appendTo = _params$appendTo === void 0 ? '.apexcharts-annotations' : _params$appendTo, + _params$paddingLeft = params.paddingLeft, + paddingLeft = _params$paddingLeft === void 0 ? 4 : _params$paddingLeft, + _params$paddingRight = params.paddingRight, + paddingRight = _params$paddingRight === void 0 ? 4 : _params$paddingRight, + _params$paddingBottom = params.paddingBottom, + paddingBottom = _params$paddingBottom === void 0 ? 2 : _params$paddingBottom, + _params$paddingTop = params.paddingTop, + paddingTop = _params$paddingTop === void 0 ? 2 : _params$paddingTop; + var w = this.w; + var elText = this.graphics.drawText({ + x: x, + y: y, + text: text, + textAnchor: textAnchor || 'start', + fontSize: fontSize || '12px', + fontWeight: fontWeight || 'regular', + fontFamily: fontFamily || w.config.chart.fontFamily, + foreColor: foreColor || w.config.chart.foreColor, + cssClass: 'apexcharts-text ' + cssClass ? cssClass : '' + }); + var parent = w.globals.dom.baseEl.querySelector(appendTo); + + if (parent) { + parent.appendChild(elText.node); + } + + var textRect = elText.bbox(); + + if (text) { + var elRect = this.graphics.drawRect(textRect.x - paddingLeft, textRect.y - paddingTop, textRect.width + paddingLeft + paddingRight, textRect.height + paddingBottom + paddingTop, borderRadius, backgroundColor ? backgroundColor : 'transparent', 1, borderWidth, borderColor, strokeDashArray); + parent.insertBefore(elRect.node, elText.node); + } + } + }, { + key: "addImage", + value: function addImage(params, index) { + var w = this.w; + var path = params.path, + _params$x = params.x, + x = _params$x === void 0 ? 0 : _params$x, + _params$y = params.y, + y = _params$y === void 0 ? 0 : _params$y, + _params$width = params.width, + width = _params$width === void 0 ? 20 : _params$width, + _params$height = params.height, + height = _params$height === void 0 ? 20 : _params$height, + _params$appendTo2 = params.appendTo, + appendTo = _params$appendTo2 === void 0 ? '.apexcharts-annotations' : _params$appendTo2; + var img = w.globals.dom.Paper.image(path); + img.size(width, height).move(x, y); + var parent = w.globals.dom.baseEl.querySelector(appendTo); + + if (parent) { + parent.appendChild(img.node); + } + + return img; + } // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method + + }, { + key: "addXaxisAnnotationExternal", + value: function addXaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'xaxis', + contextMethod: context.addXaxisAnnotation + }); + return context; + } + }, { + key: "addYaxisAnnotationExternal", + value: function addYaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'yaxis', + contextMethod: context.addYaxisAnnotation + }); + return context; + } + }, { + key: "addPointAnnotationExternal", + value: function addPointAnnotationExternal(params, pushToMemory, context) { + if (typeof this.invertAxis === 'undefined') { + this.invertAxis = context.w.globals.isBarHorizontal; + } + + this.addAnnotationExternal({ + params: params, + pushToMemory: pushToMemory, + context: context, + type: 'point', + contextMethod: context.addPointAnnotation + }); + return context; + } + }, { + key: "addAnnotationExternal", + value: function addAnnotationExternal(_ref) { + var params = _ref.params, + pushToMemory = _ref.pushToMemory, + context = _ref.context, + type = _ref.type, + contextMethod = _ref.contextMethod; + var me = context; + var w = me.w; + var parent = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations")); + var index = parent.childNodes.length + 1; + var options = new Options(); + var axesAnno = Object.assign({}, type === 'xaxis' ? options.xAxisAnnotation : type === 'yaxis' ? options.yAxisAnnotation : options.pointAnnotation); + var anno = Utils$1.extend(axesAnno, params); + + switch (type) { + case 'xaxis': + this.addXaxisAnnotation(anno, parent, index); + break; + + case 'yaxis': + this.addYaxisAnnotation(anno, parent, index); + break; + + case 'point': + this.addPointAnnotation(anno, parent, index); + break; + } // add background + + + var axesAnnoLabel = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-annotations .apexcharts-").concat(type, "-annotation-label[rel='").concat(index, "']")); + var elRect = this.helpers.addBackgroundToAnno(axesAnnoLabel, anno); + + if (elRect) { + parent.insertBefore(elRect.node, axesAnnoLabel); + } + + if (pushToMemory) { + w.globals.memory.methodsToExec.push({ + context: me, + id: anno.id ? anno.id : Utils$1.randomId(), + method: contextMethod, + label: 'addAnnotation', + params: params + }); + } + + return context; + } + }, { + key: "clearAnnotations", + value: function clearAnnotations(ctx) { + var w = ctx.w; + var annos = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations'); // annotations added externally should be cleared out too + + w.globals.memory.methodsToExec.map(function (m, i) { + if (m.label === 'addText' || m.label === 'addAnnotation') { + w.globals.memory.methodsToExec.splice(i, 1); + } + }); + annos = Utils$1.listToArray(annos); // delete the DOM elements + + Array.prototype.forEach.call(annos, function (a) { + while (a.firstChild) { + a.removeChild(a.firstChild); + } + }); + } + }, { + key: "removeAnnotation", + value: function removeAnnotation(ctx, id) { + var w = ctx.w; + var annos = w.globals.dom.baseEl.querySelectorAll(".".concat(id)); + + if (annos) { + w.globals.memory.methodsToExec.map(function (m, i) { + if (m.id === id) { + w.globals.memory.methodsToExec.splice(i, 1); + } + }); + Array.prototype.forEach.call(annos, function (a) { + a.parentElement.removeChild(a); + }); + } + } + }]); + + return Annotations; + }(); + + /** + * DateTime Class to manipulate datetime values. + * + * @module DateTime + **/ + + var DateTime = /*#__PURE__*/function () { + function DateTime(ctx) { + _classCallCheck(this, DateTime); + + this.ctx = ctx; + this.w = ctx.w; + this.months31 = [1, 3, 5, 7, 8, 10, 12]; + this.months30 = [2, 4, 6, 9, 11]; + this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; + } + + _createClass(DateTime, [{ + key: "isValidDate", + value: function isValidDate(date) { + return !isNaN(this.parseDate(date)); + } + }, { + key: "getTimeStamp", + value: function getTimeStamp(dateStr) { + if (!Date.parse(dateStr)) { + return dateStr; + } + + var utc = this.w.config.xaxis.labels.datetimeUTC; + return !utc ? new Date(dateStr).getTime() : new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime(); + } + }, { + key: "getDate", + value: function getDate(timestamp) { + var utc = this.w.config.xaxis.labels.datetimeUTC; + return utc ? new Date(new Date(timestamp).toUTCString()) : new Date(timestamp); + } + }, { + key: "parseDate", + value: function parseDate(dateStr) { + var parsed = Date.parse(dateStr); + + if (!isNaN(parsed)) { + return this.getTimeStamp(dateStr); + } + + var output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')); + output = this.getTimeStamp(output); + return output; + } // This fixes the difference of x-axis labels between chrome/safari + // Fixes #1726, #1544, #1485, #1255 + + }, { + key: "parseDateWithTimezone", + value: function parseDateWithTimezone(dateStr) { + return Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')); + } // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191 + + }, { + key: "formatDate", + value: function formatDate(date, format) { + var locale = this.w.globals.locale; + var utc = this.w.config.xaxis.labels.datetimeUTC; + var MMMM = ['\x00'].concat(_toConsumableArray(locale.months)); + var MMM = ['\x01'].concat(_toConsumableArray(locale.shortMonths)); + var dddd = ['\x02'].concat(_toConsumableArray(locale.days)); + var ddd = ['\x03'].concat(_toConsumableArray(locale.shortDays)); + + function ii(i, len) { + var s = i + ''; + len = len || 2; + + while (s.length < len) { + s = '0' + s; + } + + return s; + } + + var y = utc ? date.getUTCFullYear() : date.getFullYear(); + format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y); + format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2)); + format = format.replace(/(^|[^\\])y/g, '$1' + y); + var M = (utc ? date.getUTCMonth() : date.getMonth()) + 1; + format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]); + format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]); + format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M)); + format = format.replace(/(^|[^\\])M/g, '$1' + M); + var d = utc ? date.getUTCDate() : date.getDate(); + format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]); + format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]); + format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d)); + format = format.replace(/(^|[^\\])d/g, '$1' + d); + var H = utc ? date.getUTCHours() : date.getHours(); + format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H)); + format = format.replace(/(^|[^\\])H/g, '$1' + H); + var h = H > 12 ? H - 12 : H === 0 ? 12 : H; + format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h)); + format = format.replace(/(^|[^\\])h/g, '$1' + h); + var m = utc ? date.getUTCMinutes() : date.getMinutes(); + format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m)); + format = format.replace(/(^|[^\\])m/g, '$1' + m); + var s = utc ? date.getUTCSeconds() : date.getSeconds(); + format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s)); + format = format.replace(/(^|[^\\])s/g, '$1' + s); + var f = utc ? date.getUTCMilliseconds() : date.getMilliseconds(); + format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3)); + f = Math.round(f / 10); + format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f)); + f = Math.round(f / 10); + format = format.replace(/(^|[^\\])f/g, '$1' + f); + var T = H < 12 ? 'AM' : 'PM'; + format = format.replace(/(^|[^\\])TT+/g, '$1' + T); + format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0)); + var t = T.toLowerCase(); + format = format.replace(/(^|[^\\])tt+/g, '$1' + t); + format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0)); + var tz = -date.getTimezoneOffset(); + var K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-'; + + if (!utc) { + tz = Math.abs(tz); + var tzHrs = Math.floor(tz / 60); + var tzMin = tz % 60; + K += ii(tzHrs) + ':' + ii(tzMin); + } + + format = format.replace(/(^|[^\\])K/g, '$1' + K); + var day = (utc ? date.getUTCDay() : date.getDay()) + 1; + format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]); + format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]); + format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]); + format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]); + format = format.replace(/\\(.)/g, '$1'); + return format; + } + }, { + key: "getTimeUnitsfromTimestamp", + value: function getTimeUnitsfromTimestamp(minX, maxX, utc) { + var w = this.w; + + if (w.config.xaxis.min !== undefined) { + minX = w.config.xaxis.min; + } + + if (w.config.xaxis.max !== undefined) { + maxX = w.config.xaxis.max; + } + + var tsMin = this.getDate(minX); + var tsMax = this.getDate(maxX); + var minD = this.formatDate(tsMin, 'yyyy MM dd HH mm ss fff').split(' '); + var maxD = this.formatDate(tsMax, 'yyyy MM dd HH mm ss fff').split(' '); + return { + minMillisecond: parseInt(minD[6], 10), + maxMillisecond: parseInt(maxD[6], 10), + minSecond: parseInt(minD[5], 10), + maxSecond: parseInt(maxD[5], 10), + minMinute: parseInt(minD[4], 10), + maxMinute: parseInt(maxD[4], 10), + minHour: parseInt(minD[3], 10), + maxHour: parseInt(maxD[3], 10), + minDate: parseInt(minD[2], 10), + maxDate: parseInt(maxD[2], 10), + minMonth: parseInt(minD[1], 10) - 1, + maxMonth: parseInt(maxD[1], 10) - 1, + minYear: parseInt(minD[0], 10), + maxYear: parseInt(maxD[0], 10) + }; + } + }, { + key: "isLeapYear", + value: function isLeapYear(year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + } + }, { + key: "calculcateLastDaysOfMonth", + value: function calculcateLastDaysOfMonth(month, year, subtract) { + var days = this.determineDaysOfMonths(month, year); // whatever days we get, subtract the number of days asked + + return days - subtract; + } + }, { + key: "determineDaysOfYear", + value: function determineDaysOfYear(year) { + var days = 365; + + if (this.isLeapYear(year)) { + days = 366; + } + + return days; + } + }, { + key: "determineRemainingDaysOfYear", + value: function determineRemainingDaysOfYear(year, month, date) { + var dayOfYear = this.daysCntOfYear[month] + date; + if (month > 1 && this.isLeapYear()) dayOfYear++; + return dayOfYear; + } + }, { + key: "determineDaysOfMonths", + value: function determineDaysOfMonths(month, year) { + var days = 30; + month = Utils$1.monthMod(month); + + switch (true) { + case this.months30.indexOf(month) > -1: + if (month === 2) { + if (this.isLeapYear(year)) { + days = 29; + } else { + days = 28; + } + } + + break; + + case this.months31.indexOf(month) > -1: + days = 31; + break; + + default: + days = 31; + break; + } + + return days; + } + }]); + + return DateTime; + }(); + + /** + * ApexCharts Default Class for setting default options for all chart types. + * + * @module Defaults + **/ + + var getRangeValues = function getRangeValues(_ref) { + var _w$config$series$seri; + + var ctx = _ref.ctx, + seriesIndex = _ref.seriesIndex, + dataPointIndex = _ref.dataPointIndex, + y1 = _ref.y1, + y2 = _ref.y2, + w = _ref.w; + var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex]; + var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex]; + var ylabel = w.globals.labels[dataPointIndex]; + var seriesName = w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : ''; + var yLbFormatter = w.config.tooltip.y.formatter; + var yLbTitleFormatter = w.config.tooltip.y.title.formatter; + var opts = { + w: w, + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + start: start, + end: end + }; + + if (typeof yLbTitleFormatter === 'function') { + seriesName = yLbTitleFormatter(seriesName, opts); + } + + if ((_w$config$series$seri = w.config.series[seriesIndex].data[dataPointIndex]) !== null && _w$config$series$seri !== void 0 && _w$config$series$seri.x) { + ylabel = w.config.series[seriesIndex].data[dataPointIndex].x + ':'; + } + + if (typeof yLbFormatter === 'function') { + ylabel = yLbFormatter(ylabel, opts); + } + + if (Number.isFinite(y1) && Number.isFinite(y2)) { + start = y1; + end = y2; + } + + var startVal = ''; + var endVal = ''; + var color = w.globals.colors[seriesIndex]; + + if (w.config.tooltip.x.formatter === undefined) { + if (w.config.xaxis.type === 'datetime') { + var datetimeObj = new DateTime(ctx); + startVal = datetimeObj.formatDate(datetimeObj.getDate(start), w.config.tooltip.x.format); + endVal = datetimeObj.formatDate(datetimeObj.getDate(end), w.config.tooltip.x.format); + } else { + startVal = start; + endVal = end; + } + } else { + startVal = w.config.tooltip.x.formatter(start); + endVal = w.config.tooltip.x.formatter(end); + } + + return { + start: start, + end: end, + startVal: startVal, + endVal: endVal, + ylabel: ylabel, + color: color, + seriesName: seriesName + }; + }; + + var buildRangeTooltipHTML = function buildRangeTooltipHTML(opts) { + var color = opts.color, + seriesName = opts.seriesName, + ylabel = opts.ylabel, + start = opts.start, + end = opts.end, + seriesIndex = opts.seriesIndex, + dataPointIndex = opts.dataPointIndex; + var formatter = opts.ctx.tooltip.tooltipLabels.getFormatters(seriesIndex); + start = formatter.yLbFormatter(start); + end = formatter.yLbFormatter(end); + var val = formatter.yLbFormatter(opts.w.globals.series[seriesIndex][dataPointIndex]); + var valueHTML = ''; + var rangeValues = "\n ".concat(start, "\n - \n ").concat(end, "\n "); + + if (opts.w.globals.comboCharts) { + if (opts.w.config.series[seriesIndex].type === 'rangeArea' || opts.w.config.series[seriesIndex].type === 'rangeBar') { + valueHTML = rangeValues; + } else { + valueHTML = "".concat(val, ""); + } + } else { + valueHTML = rangeValues; + } + + return '
    ' + '
    ' + (seriesName ? seriesName : '') + '
    ' + '
    ' + ylabel + ' ' + valueHTML + '
    ' + '
    '; + }; + + var Defaults = /*#__PURE__*/function () { + function Defaults(opts) { + _classCallCheck(this, Defaults); + + this.opts = opts; + } + + _createClass(Defaults, [{ + key: "line", + value: function line() { + return { + chart: { + animations: { + easing: 'swing' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 5, + curve: 'straight' + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "sparkline", + value: function sparkline(defaults) { + this.opts.yaxis[0].show = false; + this.opts.yaxis[0].title.text = ''; + this.opts.yaxis[0].axisBorder.show = false; + this.opts.yaxis[0].axisTicks.show = false; + this.opts.yaxis[0].floating = true; + var ret = { + grid: { + show: false, + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + }, + legend: { + show: false + }, + xaxis: { + labels: { + show: false + }, + tooltip: { + enabled: false + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + chart: { + toolbar: { + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + } + }; + return Utils$1.extend(defaults, ret); + } + }, { + key: "bar", + value: function bar() { + return { + chart: { + stacked: false, + animations: { + easing: 'swing' + } + }, + plotOptions: { + bar: { + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + style: { + colors: ['#fff'] + }, + background: { + enabled: false + } + }, + stroke: { + width: 0, + lineCap: 'round' + }, + fill: { + opacity: 0.85 + }, + legend: { + markers: { + shape: 'square', + radius: 2, + size: 8 + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + tooltip: { + enabled: false + }, + tickPlacement: 'between', + crosshairs: { + width: 'barWidth', + position: 'back', + fill: { + type: 'gradient' + }, + dropShadow: { + enabled: false + }, + stroke: { + width: 0 + } + } + } + }; + } + }, { + key: "candlestick", + value: function candlestick() { + var _this = this; + + return { + stroke: { + width: 1, + colors: ['#333'] + }, + fill: { + opacity: 1 + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: function custom(_ref2) { + var seriesIndex = _ref2.seriesIndex, + dataPointIndex = _ref2.dataPointIndex, + w = _ref2.w; + return _this._getBoxTooltip(w, seriesIndex, dataPointIndex, ['Open', 'High', '', 'Low', 'Close'], 'candlestick'); + } + }, + states: { + active: { + filter: { + type: 'none' + } + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "boxPlot", + value: function boxPlot() { + var _this2 = this; + + return { + chart: { + animations: { + dynamicAnimation: { + enabled: false + } + } + }, + stroke: { + width: 1, + colors: ['#24292e'] + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: function custom(_ref3) { + var seriesIndex = _ref3.seriesIndex, + dataPointIndex = _ref3.dataPointIndex, + w = _ref3.w; + return _this2._getBoxTooltip(w, seriesIndex, dataPointIndex, ['Minimum', 'Q1', 'Median', 'Q3', 'Maximum'], 'boxPlot'); + } + }, + markers: { + size: 5, + strokeWidth: 1, + strokeColors: '#111' + }, + xaxis: { + crosshairs: { + width: 1 + } + } + }; + } + }, { + key: "rangeBar", + value: function rangeBar() { + var handleTimelineTooltip = function handleTimelineTooltip(opts) { + var _getRangeValues = getRangeValues(opts), + color = _getRangeValues.color, + seriesName = _getRangeValues.seriesName, + ylabel = _getRangeValues.ylabel, + startVal = _getRangeValues.startVal, + endVal = _getRangeValues.endVal; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: startVal, + end: endVal + })); + }; + + var handleRangeColumnTooltip = function handleRangeColumnTooltip(opts) { + var _getRangeValues2 = getRangeValues(opts), + color = _getRangeValues2.color, + seriesName = _getRangeValues2.seriesName, + ylabel = _getRangeValues2.ylabel, + start = _getRangeValues2.start, + end = _getRangeValues2.end; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: start, + end: end + })); + }; + + return { + stroke: { + width: 0, + lineCap: 'square' + }, + plotOptions: { + bar: { + borderRadius: 0, + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + enabled: false, + formatter: function formatter(val, _ref4) { + _ref4.ctx; + var seriesIndex = _ref4.seriesIndex, + dataPointIndex = _ref4.dataPointIndex, + w = _ref4.w; + + var getVal = function getVal() { + var start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex]; + var end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex]; + return end - start; + }; + + if (w.globals.comboCharts) { + if (w.config.series[seriesIndex].type === 'rangeBar' || w.config.series[seriesIndex].type === 'rangeArea') { + return getVal(); + } else { + return val; + } + } else { + return getVal(); + } + }, + background: { + enabled: false + }, + style: { + colors: ['#fff'] + } + }, + tooltip: { + shared: false, + followCursor: true, + custom: function custom(opts) { + if (opts.w.config.plotOptions && opts.w.config.plotOptions.bar && opts.w.config.plotOptions.bar.horizontal) { + return handleTimelineTooltip(opts); + } else { + return handleRangeColumnTooltip(opts); + } + } + }, + xaxis: { + tickPlacement: 'between', + tooltip: { + enabled: false + }, + crosshairs: { + stroke: { + width: 0 + } + } + } + }; + } + }, { + key: "area", + value: function area() { + return { + stroke: { + width: 4, + fill: { + type: 'solid', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + } + }, + fill: { + type: 'gradient', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + tooltip: { + followCursor: false + } + }; + } + }, { + key: "rangeArea", + value: function rangeArea() { + var handleRangeAreaTooltip = function handleRangeAreaTooltip(opts) { + var _getRangeValues3 = getRangeValues(opts), + color = _getRangeValues3.color, + seriesName = _getRangeValues3.seriesName, + ylabel = _getRangeValues3.ylabel, + start = _getRangeValues3.start, + end = _getRangeValues3.end; + + return buildRangeTooltipHTML(_objectSpread2(_objectSpread2({}, opts), {}, { + color: color, + seriesName: seriesName, + ylabel: ylabel, + start: start, + end: end + })); + }; + + return { + stroke: { + curve: 'straight', + width: 0 + }, + fill: { + type: 'solid', + opacity: 0.6 + }, + markers: { + size: 0 + }, + states: { + hover: { + filter: { + type: 'none' + } + }, + active: { + filter: { + type: 'none' + } + } + }, + tooltip: { + intersect: false, + shared: true, + followCursor: true, + custom: function custom(opts) { + return handleRangeAreaTooltip(opts); + } + } + }; + } + }, { + key: "brush", + value: function brush(defaults) { + var ret = { + chart: { + toolbar: { + autoSelected: 'selection', + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 1 + }, + tooltip: { + enabled: false + }, + xaxis: { + tooltip: { + enabled: false + } + } + }; + return Utils$1.extend(defaults, ret); + } + }, { + key: "stacked100", + value: function stacked100(opts) { + opts.dataLabels = opts.dataLabels || {}; + opts.dataLabels.formatter = opts.dataLabels.formatter || undefined; + var existingDataLabelFormatter = opts.dataLabels.formatter; + opts.yaxis.forEach(function (yaxe, index) { + opts.yaxis[index].min = 0; + opts.yaxis[index].max = 100; + }); + var isBar = opts.chart.type === 'bar'; + + if (isBar) { + opts.dataLabels.formatter = existingDataLabelFormatter || function (val) { + if (typeof val === 'number') { + return val ? val.toFixed(0) + '%' : val; + } + + return val; + }; + } + + return opts; + } // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area + + }, { + key: "convertCatToNumeric", + value: function convertCatToNumeric(opts) { + opts.xaxis.convertedCatToNumeric = true; + return opts; + } + }, { + key: "convertCatToNumericXaxis", + value: function convertCatToNumericXaxis(opts, ctx, cats) { + opts.xaxis.type = 'numeric'; + opts.xaxis.labels = opts.xaxis.labels || {}; + + opts.xaxis.labels.formatter = opts.xaxis.labels.formatter || function (val) { + return Utils$1.isNumber(val) ? Math.floor(val) : val; + }; + + var defaultFormatter = opts.xaxis.labels.formatter; + var labels = opts.xaxis.categories && opts.xaxis.categories.length ? opts.xaxis.categories : opts.labels; + + if (cats && cats.length) { + labels = cats.map(function (c) { + return Array.isArray(c) ? c : String(c); + }); + } + + if (labels && labels.length) { + opts.xaxis.labels.formatter = function (val) { + return Utils$1.isNumber(val) ? defaultFormatter(labels[Math.floor(val) - 1]) : defaultFormatter(val); + }; + } + + opts.xaxis.categories = []; + opts.labels = []; + opts.xaxis.tickAmount = opts.xaxis.tickAmount || 'dataPoints'; + return opts; + } + }, { + key: "bubble", + value: function bubble() { + return { + dataLabels: { + style: { + colors: ['#fff'] + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + crosshairs: { + width: 0 + } + }, + fill: { + type: 'solid', + gradient: { + shade: 'light', + inverse: true, + shadeIntensity: 0.55, + opacityFrom: 0.4, + opacityTo: 0.8 + } + } + }; + } + }, { + key: "scatter", + value: function scatter() { + return { + dataLabels: { + enabled: false + }, + tooltip: { + shared: false, + intersect: true + }, + markers: { + size: 6, + strokeWidth: 1, + hover: { + sizeOffset: 2 + } + } + }; + } + }, { + key: "heatmap", + value: function heatmap() { + return { + chart: { + stacked: false + }, + fill: { + opacity: 1 + }, + dataLabels: { + style: { + colors: ['#fff'] + } + }, + stroke: { + colors: ['#fff'] + }, + tooltip: { + followCursor: true, + marker: { + show: false + }, + x: { + show: false + } + }, + legend: { + position: 'top', + markers: { + shape: 'square', + size: 10, + offsetY: 2 + } + }, + grid: { + padding: { + right: 20 + } + } + }; + } + }, { + key: "treemap", + value: function treemap() { + return { + chart: { + zoom: { + enabled: false + } + }, + dataLabels: { + style: { + fontSize: 14, + fontWeight: 600, + colors: ['#fff'] + } + }, + stroke: { + show: true, + width: 2, + colors: ['#fff'] + }, + legend: { + show: false + }, + fill: { + gradient: { + stops: [0, 100] + } + }, + tooltip: { + followCursor: true, + x: { + show: false + } + }, + grid: { + padding: { + left: 0, + right: 0 + } + }, + xaxis: { + crosshairs: { + show: false + }, + tooltip: { + enabled: false + } + } + }; + } + }, { + key: "pie", + value: function pie() { + return { + chart: { + toolbar: { + show: false + } + }, + plotOptions: { + pie: { + donut: { + labels: { + show: false + } + } + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + stops: [0, 100] + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "donut", + value: function donut() { + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + shadeIntensity: 0.35, + stops: [80, 100], + opacityFrom: 1, + opacityTo: 1 + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "polarArea", + value: function polarArea() { + this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount ? this.opts.yaxis[0].tickAmount : 6; + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter: function formatter(val) { + return val.toFixed(1) + '%'; + }, + enabled: false + }, + stroke: { + show: true, + width: 2 + }, + fill: { + opacity: 0.7 + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + }; + } + }, { + key: "radar", + value: function radar() { + this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY ? this.opts.yaxis[0].labels.offsetY : 6; + return { + dataLabels: { + enabled: false, + style: { + fontSize: '11px' + } + }, + stroke: { + width: 2 + }, + markers: { + size: 3, + strokeWidth: 1, + strokeOpacity: 1 + }, + fill: { + opacity: 0.2 + }, + tooltip: { + shared: false, + intersect: true, + followCursor: true + }, + grid: { + show: false + }, + xaxis: { + labels: { + formatter: function formatter(val) { + return val; + }, + style: { + colors: ['#a8a8a8'], + fontSize: '11px' + } + }, + tooltip: { + enabled: false + }, + crosshairs: { + show: false + } + } + }; + } + }, { + key: "radialBar", + value: function radialBar() { + return { + chart: { + animations: { + dynamicAnimation: { + enabled: true, + speed: 800 + } + }, + toolbar: { + show: false + } + }, + fill: { + gradient: { + shade: 'dark', + shadeIntensity: 0.4, + inverseColors: false, + type: 'diagonal2', + opacityFrom: 1, + opacityTo: 1, + stops: [70, 98, 100] + } + }, + legend: { + show: false, + position: 'right' + }, + tooltip: { + enabled: false, + fillSeriesColor: true + } + }; + } + }, { + key: "_getBoxTooltip", + value: function _getBoxTooltip(w, seriesIndex, dataPointIndex, labels, chartType) { + var o = w.globals.seriesCandleO[seriesIndex][dataPointIndex]; + var h = w.globals.seriesCandleH[seriesIndex][dataPointIndex]; + var m = w.globals.seriesCandleM[seriesIndex][dataPointIndex]; + var l = w.globals.seriesCandleL[seriesIndex][dataPointIndex]; + var c = w.globals.seriesCandleC[seriesIndex][dataPointIndex]; + + if (w.config.series[seriesIndex].type && w.config.series[seriesIndex].type !== chartType) { + return "
    \n ".concat(w.config.series[seriesIndex].name ? w.config.series[seriesIndex].name : 'series-' + (seriesIndex + 1), ": ").concat(w.globals.series[seriesIndex][dataPointIndex], "\n
    "); + } else { + return "
    ") + "
    ".concat(labels[0], ": ") + o + '
    ' + "
    ".concat(labels[1], ": ") + h + '
    ' + (m ? "
    ".concat(labels[2], ": ") + m + '
    ' : '') + "
    ".concat(labels[3], ": ") + l + '
    ' + "
    ".concat(labels[4], ": ") + c + '
    ' + '
    '; + } + } + }]); + + return Defaults; + }(); + + /** + * ApexCharts Config Class for extending user options with pre-defined ApexCharts config. + * + * @module Config + **/ + + var Config = /*#__PURE__*/function () { + function Config(opts) { + _classCallCheck(this, Config); + + this.opts = opts; + } + + _createClass(Config, [{ + key: "init", + value: function init(_ref) { + var responsiveOverride = _ref.responsiveOverride; + var opts = this.opts; + var options = new Options(); + var defaults = new Defaults(opts); + this.chartType = opts.chart.type; + + if (this.chartType === 'histogram') { + // technically, a histogram can be drawn by a column chart with no spaces in between + opts.chart.type = 'bar'; + opts = Utils$1.extend({ + plotOptions: { + bar: { + columnWidth: '99.99%' + } + } + }, opts); + } + + opts = this.extendYAxis(opts); + opts = this.extendAnnotations(opts); + var config = options.init(); + var newDefaults = {}; + + if (opts && _typeof(opts) === 'object') { + var chartDefaults = {}; + var chartTypes = ['line', 'area', 'bar', 'candlestick', 'boxPlot', 'rangeBar', 'rangeArea', 'histogram', 'bubble', 'scatter', 'heatmap', 'treemap', 'pie', 'polarArea', 'donut', 'radar', 'radialBar']; + + if (chartTypes.indexOf(opts.chart.type) !== -1) { + chartDefaults = defaults[opts.chart.type](); + } else { + chartDefaults = defaults.line(); + } + + if (opts.chart.brush && opts.chart.brush.enabled) { + chartDefaults = defaults.brush(chartDefaults); + } + + if (opts.chart.stacked && opts.chart.stackType === '100%') { + opts = defaults.stacked100(opts); + } // If user has specified a dark theme, make the tooltip dark too + + + this.checkForDarkTheme(window.Apex); // check global window Apex options + + this.checkForDarkTheme(opts); // check locally passed options + + opts.xaxis = opts.xaxis || window.Apex.xaxis || {}; // an important boolean needs to be set here + // otherwise all the charts will have this flag set to true window.Apex.xaxis is set globally + + if (!responsiveOverride) { + opts.xaxis.convertedCatToNumeric = false; + } + + opts = this.checkForCatToNumericXAxis(this.chartType, chartDefaults, opts); + + if (opts.chart.sparkline && opts.chart.sparkline.enabled || window.Apex.chart && window.Apex.chart.sparkline && window.Apex.chart.sparkline.enabled) { + chartDefaults = defaults.sparkline(chartDefaults); + } + + newDefaults = Utils$1.extend(config, chartDefaults); + } // config should cascade in this fashion + // default-config < global-apex-variable-config < user-defined-config + // get GLOBALLY defined options and merge with the default config + + + var mergedWithDefaultConfig = Utils$1.extend(newDefaults, window.Apex); // get the merged config and extend with user defined config + + config = Utils$1.extend(mergedWithDefaultConfig, opts); // some features are not supported. those mismatches should be handled + + config = this.handleUserInputErrors(config); + return config; + } + }, { + key: "checkForCatToNumericXAxis", + value: function checkForCatToNumericXAxis(chartType, chartDefaults, opts) { + var defaults = new Defaults(opts); + var isBarHorizontal = (chartType === 'bar' || chartType === 'boxPlot') && opts.plotOptions && opts.plotOptions.bar && opts.plotOptions.bar.horizontal; + var unsupportedZoom = chartType === 'pie' || chartType === 'polarArea' || chartType === 'donut' || chartType === 'radar' || chartType === 'radialBar' || chartType === 'heatmap'; + var notNumericXAxis = opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric'; + var tickPlacement = opts.xaxis.tickPlacement ? opts.xaxis.tickPlacement : chartDefaults.xaxis && chartDefaults.xaxis.tickPlacement; + + if (!isBarHorizontal && !unsupportedZoom && notNumericXAxis && tickPlacement !== 'between') { + opts = defaults.convertCatToNumeric(opts); + } + + return opts; + } + }, { + key: "extendYAxis", + value: function extendYAxis(opts, w) { + var options = new Options(); + + if (typeof opts.yaxis === 'undefined' || !opts.yaxis || Array.isArray(opts.yaxis) && opts.yaxis.length === 0) { + opts.yaxis = {}; + } // extend global yaxis config (only if object is provided / not an array) + + + if (opts.yaxis.constructor !== Array && window.Apex.yaxis && window.Apex.yaxis.constructor !== Array) { + opts.yaxis = Utils$1.extend(opts.yaxis, window.Apex.yaxis); + } // as we can't extend nested object's array with extend, we need to do it first + // user can provide either an array or object in yaxis config + + + if (opts.yaxis.constructor !== Array) { + // convert the yaxis to array if user supplied object + opts.yaxis = [Utils$1.extend(options.yAxis, opts.yaxis)]; + } else { + opts.yaxis = Utils$1.extendArray(opts.yaxis, options.yAxis); + } + + var isLogY = false; + opts.yaxis.forEach(function (y) { + if (y.logarithmic) { + isLogY = true; + } + }); + var series = opts.series; + + if (w && !series) { + series = w.config.series; + } // A logarithmic chart works correctly when each series has a corresponding y-axis + // If this is not the case, we manually create yaxis for multi-series log chart + + + if (isLogY && series.length !== opts.yaxis.length && series.length) { + opts.yaxis = series.map(function (s, i) { + if (!s.name) { + series[i].name = "series-".concat(i + 1); + } + + if (opts.yaxis[i]) { + opts.yaxis[i].seriesName = series[i].name; + return opts.yaxis[i]; + } else { + var newYaxis = Utils$1.extend(options.yAxis, opts.yaxis[0]); + newYaxis.show = false; + return newYaxis; + } + }); + } + + if (isLogY && series.length > 1 && series.length !== opts.yaxis.length) { + console.warn('A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both.'); + } + + return opts; + } // annotations also accepts array, so we need to extend them manually + + }, { + key: "extendAnnotations", + value: function extendAnnotations(opts) { + if (typeof opts.annotations === 'undefined') { + opts.annotations = {}; + opts.annotations.yaxis = []; + opts.annotations.xaxis = []; + opts.annotations.points = []; + } + + opts = this.extendYAxisAnnotations(opts); + opts = this.extendXAxisAnnotations(opts); + opts = this.extendPointAnnotations(opts); + return opts; + } + }, { + key: "extendYAxisAnnotations", + value: function extendYAxisAnnotations(opts) { + var options = new Options(); + opts.annotations.yaxis = Utils$1.extendArray(typeof opts.annotations.yaxis !== 'undefined' ? opts.annotations.yaxis : [], options.yAxisAnnotation); + return opts; + } + }, { + key: "extendXAxisAnnotations", + value: function extendXAxisAnnotations(opts) { + var options = new Options(); + opts.annotations.xaxis = Utils$1.extendArray(typeof opts.annotations.xaxis !== 'undefined' ? opts.annotations.xaxis : [], options.xAxisAnnotation); + return opts; + } + }, { + key: "extendPointAnnotations", + value: function extendPointAnnotations(opts) { + var options = new Options(); + opts.annotations.points = Utils$1.extendArray(typeof opts.annotations.points !== 'undefined' ? opts.annotations.points : [], options.pointAnnotation); + return opts; + } + }, { + key: "checkForDarkTheme", + value: function checkForDarkTheme(opts) { + if (opts.theme && opts.theme.mode === 'dark') { + if (!opts.tooltip) { + opts.tooltip = {}; + } + + if (opts.tooltip.theme !== 'light') { + opts.tooltip.theme = 'dark'; + } + + if (!opts.chart.foreColor) { + opts.chart.foreColor = '#f6f7f8'; + } + + if (!opts.chart.background) { + opts.chart.background = '#424242'; + } + + if (!opts.theme.palette) { + opts.theme.palette = 'palette4'; + } + } + } + }, { + key: "handleUserInputErrors", + value: function handleUserInputErrors(opts) { + var config = opts; // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it + + if (config.tooltip.shared && config.tooltip.intersect) { + throw new Error('tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.'); + } + + if (config.chart.type === 'bar' && config.plotOptions.bar.horizontal) { + // No multiple yaxis for bars + if (config.yaxis.length > 1) { + throw new Error('Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false'); + } // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side + + + if (config.yaxis[0].reversed) { + config.yaxis[0].opposite = true; + } + + config.xaxis.tooltip.enabled = false; // no xaxis tooltip for horizontal bar + + config.yaxis[0].tooltip.enabled = false; // no xaxis tooltip for horizontal bar + + config.chart.zoom.enabled = false; // no zooming for horz bars + } + + if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') { + if (config.tooltip.shared) { + if (config.xaxis.crosshairs.width === 'barWidth' && config.series.length > 1) { + config.xaxis.crosshairs.width = 'tickWidth'; + } + } + } + + if (config.chart.type === 'candlestick' || config.chart.type === 'boxPlot') { + if (config.yaxis[0].reversed) { + console.warn("Reversed y-axis in ".concat(config.chart.type, " chart is not supported.")); + config.yaxis[0].reversed = false; + } + } + + return config; + } + }]); + + return Config; + }(); + + var Globals = /*#__PURE__*/function () { + function Globals() { + _classCallCheck(this, Globals); + } + + _createClass(Globals, [{ + key: "initGlobalVars", + value: function initGlobalVars(gl) { + gl.series = []; // the MAIN series array (y values) + + gl.seriesCandleO = []; + gl.seriesCandleH = []; + gl.seriesCandleM = []; + gl.seriesCandleL = []; + gl.seriesCandleC = []; + gl.seriesRangeStart = []; + gl.seriesRangeEnd = []; + gl.seriesRange = []; + gl.seriesPercent = []; + gl.seriesGoals = []; + gl.seriesX = []; + gl.seriesZ = []; + gl.seriesNames = []; + gl.seriesTotals = []; + gl.seriesLog = []; + gl.seriesColors = []; + gl.stackedSeriesTotals = []; + gl.seriesXvalues = []; // we will need this in tooltip (it's x position) + // when we will have unequal x values, we will need + // some way to get x value depending on mouse pointer + + gl.seriesYvalues = []; // we will need this when deciding which series + // user hovered on + + gl.labels = []; + gl.hasGroups = false; + gl.groups = []; + gl.categoryLabels = []; + gl.timescaleLabels = []; + gl.noLabelsProvided = false; + gl.resizeTimer = null; + gl.selectionResizeTimer = null; + gl.delayedElements = []; + gl.pointsArray = []; + gl.dataLabelsRects = []; + gl.isXNumeric = false; + gl.xaxisLabelsCount = 0; + gl.skipLastTimelinelabel = false; + gl.skipFirstTimelinelabel = false; + gl.isDataXYZ = false; + gl.isMultiLineX = false; + gl.isMultipleYAxis = false; + gl.maxY = -Number.MAX_VALUE; + gl.minY = Number.MIN_VALUE; + gl.minYArr = []; + gl.maxYArr = []; + gl.maxX = -Number.MAX_VALUE; + gl.minX = Number.MAX_VALUE; + gl.initialMaxX = -Number.MAX_VALUE; + gl.initialMinX = Number.MAX_VALUE; + gl.maxDate = 0; + gl.minDate = Number.MAX_VALUE; + gl.minZ = Number.MAX_VALUE; + gl.maxZ = -Number.MAX_VALUE; + gl.minXDiff = Number.MAX_VALUE; + gl.yAxisScale = []; + gl.xAxisScale = null; + gl.xAxisTicksPositions = []; + gl.yLabelsCoords = []; + gl.yTitleCoords = []; + gl.barPadForNumericAxis = 0; + gl.padHorizontal = 0; + gl.xRange = 0; + gl.yRange = []; + gl.zRange = 0; + gl.dataPoints = 0; + gl.xTickAmount = 0; + } + }, { + key: "globalVars", + value: function globalVars(config) { + return { + chartID: null, + // chart ID - apexcharts-cuid + cuid: null, + // chart ID - random numbers excluding "apexcharts" part + events: { + beforeMount: [], + mounted: [], + updated: [], + clicked: [], + selection: [], + dataPointSelection: [], + zoomed: [], + scrolled: [] + }, + colors: [], + clientX: null, + clientY: null, + fill: { + colors: [] + }, + stroke: { + colors: [] + }, + dataLabels: { + style: { + colors: [] + } + }, + radarPolygons: { + fill: { + colors: [] + } + }, + markers: { + colors: [], + size: config.markers.size, + largestSize: 0 + }, + animationEnded: false, + isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints, + isDirty: false, + // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update + isExecCalled: false, + // whether user updated the chart through the exec method + initialConfig: null, + // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it + initialSeries: [], + lastXAxis: [], + lastYAxis: [], + columnSeries: null, + labels: [], + // store the text to draw on x axis + // Don't mutate the labels, many things including tooltips depends on it! + timescaleLabels: [], + // store the timescaleLabels Labels in another variable + noLabelsProvided: false, + // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4... + allSeriesCollapsed: false, + collapsedSeries: [], + // when user collapses a series, it goes into this array + collapsedSeriesIndices: [], + // this stores the index of the collapsedSeries instead of whole object for quick access + ancillaryCollapsedSeries: [], + // when user collapses an "alwaysVisible" series, it goes into this array + ancillaryCollapsedSeriesIndices: [], + // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible + risingSeries: [], + // when user re-opens a collapsed series, it goes here + dataFormatXNumeric: false, + // boolean value to indicate user has passed numeric x values + capturedSeriesIndex: -1, + capturedDataPointIndex: -1, + selectedDataPoints: [], + goldenPadding: 35, + // this value is used at a lot of places for spacing purpose + invalidLogScale: false, + // if a user enabled log scale but the data provided is not valid to generate a log scale, turn on this flag + ignoreYAxisIndexes: [], + // when series are being collapsed in multiple y axes, ignore certain index + yAxisSameScaleIndices: [], + maxValsInArrayIndex: 0, + radialSize: 0, + selection: undefined, + zoomEnabled: config.chart.toolbar.autoSelected === 'zoom' && config.chart.toolbar.tools.zoom && config.chart.zoom.enabled, + panEnabled: config.chart.toolbar.autoSelected === 'pan' && config.chart.toolbar.tools.pan, + selectionEnabled: config.chart.toolbar.autoSelected === 'selection' && config.chart.toolbar.tools.selection, + yaxis: null, + mousedown: false, + lastClientPosition: {}, + // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning + visibleXRange: undefined, + yValueDecimal: 0, + // are there floating numbers in the series. If yes, this represent the len of the decimals + total: 0, + SVGNS: 'http://www.w3.org/2000/svg', + // svg namespace + svgWidth: 0, + // the whole svg width + svgHeight: 0, + // the whole svg height + noData: false, + // whether there is any data to display or not + locale: {}, + // the current locale values will be preserved here for global access + dom: {}, + // for storing all dom nodes in this particular property + memory: { + methodsToExec: [] + }, + shouldAnimate: true, + skipLastTimelinelabel: false, + // when last label is cropped, skip drawing it + skipFirstTimelinelabel: false, + // when first label is cropped, skip drawing it + delayedElements: [], + // element which appear after animation has finished + axisCharts: true, + // chart type = line or area or bar + // (refer them also as plot charts in the code) + isDataXYZ: false, + // bool: data was provided in a {[x,y,z]} pattern + resized: false, + // bool: user has resized + resizeTimer: null, + // timeout function to make a small delay before + // drawing when user resized + comboCharts: false, + // bool: whether it's a combination of line/column + dataChanged: false, + // bool: has data changed dynamically + previousPaths: [], + // array: when data is changed, it will animate from + // previous paths + allSeriesHasEqualX: true, + pointsArray: [], + // store the points positions here to draw later on hover + // format is - [[x,y],[x,y]... [x,y]] + dataLabelsRects: [], + // store the positions of datalabels to prevent collision + lastDrawnDataLabelsIndexes: [], + hasNullValues: false, + // bool: whether series contains null values + easing: null, + // function: animation effect to apply + zoomed: false, + // whether user has zoomed or not + gridWidth: 0, + // drawable width of actual graphs (series paths) + gridHeight: 0, + // drawable height of actual graphs (series paths) + rotateXLabels: false, + defaultLabels: false, + xLabelFormatter: undefined, + // formatter for x axis labels + yLabelFormatters: [], + xaxisTooltipFormatter: undefined, + // formatter for x axis tooltip + ttKeyFormatter: undefined, + ttVal: undefined, + ttZFormatter: undefined, + LINE_HEIGHT_RATIO: 1.618, + xAxisLabelsHeight: 0, + xAxisGroupLabelsHeight: 0, + xAxisLabelsWidth: 0, + yAxisLabelsWidth: 0, + scaleX: 1, + scaleY: 1, + translateX: 0, + translateY: 0, + translateYAxisX: [], + yAxisWidths: [], + translateXAxisY: 0, + translateXAxisX: 0, + tooltip: null + }; + } + }, { + key: "init", + value: function init(config) { + var globals = this.globalVars(config); + this.initGlobalVars(globals); + globals.initialConfig = Utils$1.extend({}, config); + globals.initialSeries = Utils$1.clone(config.series); + globals.lastXAxis = Utils$1.clone(globals.initialConfig.xaxis); + globals.lastYAxis = Utils$1.clone(globals.initialConfig.yaxis); + return globals; + } + }]); + + return Globals; + }(); + + /** + * ApexCharts Base Class for extending user options with pre-defined ApexCharts config. + * + * @module Base + **/ + + var Base = /*#__PURE__*/function () { + function Base(opts) { + _classCallCheck(this, Base); + + this.opts = opts; + } + + _createClass(Base, [{ + key: "init", + value: function init() { + var config = new Config(this.opts).init({ + responsiveOverride: false + }); + var globals = new Globals().init(config); + var w = { + config: config, + globals: globals + }; + return w; + } + }]); + + return Base; + }(); + + /** + * ApexCharts Fill Class for setting fill options of the paths. + * + * @module Fill + **/ + + var Fill = /*#__PURE__*/function () { + function Fill(ctx) { + _classCallCheck(this, Fill); + + this.ctx = ctx; + this.w = ctx.w; + this.opts = null; + this.seriesIndex = 0; + } + + _createClass(Fill, [{ + key: "clippedImgArea", + value: function clippedImgArea(params) { + var w = this.w; + var cnf = w.config; + var svgW = parseInt(w.globals.gridWidth, 10); + var svgH = parseInt(w.globals.gridHeight, 10); + var size = svgW > svgH ? svgW : svgH; + var fillImg = params.image; + var imgWidth = 0; + var imgHeight = 0; + + if (typeof params.width === 'undefined' && typeof params.height === 'undefined') { + if (cnf.fill.image.width !== undefined && cnf.fill.image.height !== undefined) { + imgWidth = cnf.fill.image.width + 1; + imgHeight = cnf.fill.image.height; + } else { + imgWidth = size + 1; + imgHeight = size; + } + } else { + imgWidth = params.width; + imgHeight = params.height; + } + + var elPattern = document.createElementNS(w.globals.SVGNS, 'pattern'); + Graphics.setAttrs(elPattern, { + id: params.patternID, + patternUnits: params.patternUnits ? params.patternUnits : 'userSpaceOnUse', + width: imgWidth + 'px', + height: imgHeight + 'px' + }); + var elImage = document.createElementNS(w.globals.SVGNS, 'image'); + elPattern.appendChild(elImage); + elImage.setAttributeNS(window.SVG.xlink, 'href', fillImg); + Graphics.setAttrs(elImage, { + x: 0, + y: 0, + preserveAspectRatio: 'none', + width: imgWidth + 'px', + height: imgHeight + 'px' + }); + elImage.style.opacity = params.opacity; + w.globals.dom.elDefs.node.appendChild(elPattern); + } + }, { + key: "getSeriesIndex", + value: function getSeriesIndex(opts) { + var w = this.w; + + if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.chart.type === 'heatmap' || w.config.chart.type === 'treemap') { + this.seriesIndex = opts.seriesNumber; + } else { + this.seriesIndex = opts.seriesNumber % w.globals.series.length; + } + + return this.seriesIndex; + } + }, { + key: "fillPath", + value: function fillPath(opts) { + var w = this.w; + this.opts = opts; + var cnf = this.w.config; + var pathFill; + var patternFill, gradientFill; + this.seriesIndex = this.getSeriesIndex(opts); + var fillColors = this.getFillColors(); + var fillColor = fillColors[this.seriesIndex]; //override fillcolor if user inputted color with data + + if (w.globals.seriesColors[this.seriesIndex] !== undefined) { + fillColor = w.globals.seriesColors[this.seriesIndex]; + } + + if (typeof fillColor === 'function') { + fillColor = fillColor({ + seriesIndex: this.seriesIndex, + dataPointIndex: opts.dataPointIndex, + value: opts.value, + w: w + }); + } + + var fillType = opts.fillType ? opts.fillType : this.getFillType(this.seriesIndex); + var fillOpacity = Array.isArray(cnf.fill.opacity) ? cnf.fill.opacity[this.seriesIndex] : cnf.fill.opacity; + + if (opts.color) { + fillColor = opts.color; + } + + var defaultColor = fillColor; + + if (fillColor.indexOf('rgb') === -1) { + if (fillColor.length < 9) { + // if the hex contains alpha and is of 9 digit, skip the opacity + defaultColor = Utils$1.hexToRgba(fillColor, fillOpacity); + } + } else { + if (fillColor.indexOf('rgba') > -1) { + fillOpacity = Utils$1.getOpacityFromRGBA(fillColor); + } + } + + if (opts.opacity) fillOpacity = opts.opacity; + + if (fillType === 'pattern') { + patternFill = this.handlePatternFill({ + fillConfig: opts.fillConfig, + patternFill: patternFill, + fillColor: fillColor, + fillOpacity: fillOpacity, + defaultColor: defaultColor + }); + } + + if (fillType === 'gradient') { + gradientFill = this.handleGradientFill({ + fillConfig: opts.fillConfig, + fillColor: fillColor, + fillOpacity: fillOpacity, + i: this.seriesIndex + }); + } + + if (fillType === 'image') { + var imgSrc = cnf.fill.image.src; + var patternID = opts.patternID ? opts.patternID : ''; + this.clippedImgArea({ + opacity: fillOpacity, + image: Array.isArray(imgSrc) ? opts.seriesNumber < imgSrc.length ? imgSrc[opts.seriesNumber] : imgSrc[0] : imgSrc, + width: opts.width ? opts.width : undefined, + height: opts.height ? opts.height : undefined, + patternUnits: opts.patternUnits, + patternID: "pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID) + }); + pathFill = "url(#pattern".concat(w.globals.cuid).concat(opts.seriesNumber + 1).concat(patternID, ")"); + } else if (fillType === 'gradient') { + pathFill = gradientFill; + } else if (fillType === 'pattern') { + pathFill = patternFill; + } else { + pathFill = defaultColor; + } // override pattern/gradient if opts.solid is true + + + if (opts.solid) { + pathFill = defaultColor; + } + + return pathFill; + } + }, { + key: "getFillType", + value: function getFillType(seriesIndex) { + var w = this.w; + + if (Array.isArray(w.config.fill.type)) { + return w.config.fill.type[seriesIndex]; + } else { + return w.config.fill.type; + } + } + }, { + key: "getFillColors", + value: function getFillColors() { + var w = this.w; + var cnf = w.config; + var opts = this.opts; + var fillColors = []; + + if (w.globals.comboCharts) { + if (w.config.series[this.seriesIndex].type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors; + } else { + fillColors.push(w.globals.stroke.colors); + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors; + } else { + fillColors.push(w.globals.fill.colors); + } + } + } else { + if (cnf.chart.type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors; + } else { + fillColors.push(w.globals.stroke.colors); + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors; + } else { + fillColors.push(w.globals.fill.colors); + } + } + } // colors passed in arguments + + + if (typeof opts.fillColors !== 'undefined') { + fillColors = []; + + if (Array.isArray(opts.fillColors)) { + fillColors = opts.fillColors.slice(); + } else { + fillColors.push(opts.fillColors); + } + } + + return fillColors; + } + }, { + key: "handlePatternFill", + value: function handlePatternFill(_ref) { + var fillConfig = _ref.fillConfig, + patternFill = _ref.patternFill, + fillColor = _ref.fillColor, + fillOpacity = _ref.fillOpacity, + defaultColor = _ref.defaultColor; + var fillCnf = this.w.config.fill; + + if (fillConfig) { + fillCnf = fillConfig; + } + + var opts = this.opts; + var graphics = new Graphics(this.ctx); + var patternStrokeWidth = Array.isArray(fillCnf.pattern.strokeWidth) ? fillCnf.pattern.strokeWidth[this.seriesIndex] : fillCnf.pattern.strokeWidth; + var patternLineColor = fillColor; + + if (Array.isArray(fillCnf.pattern.style)) { + if (typeof fillCnf.pattern.style[opts.seriesNumber] !== 'undefined') { + var pf = graphics.drawPattern(fillCnf.pattern.style[opts.seriesNumber], fillCnf.pattern.width, fillCnf.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity); + patternFill = pf; + } else { + patternFill = defaultColor; + } + } else { + patternFill = graphics.drawPattern(fillCnf.pattern.style, fillCnf.pattern.width, fillCnf.pattern.height, patternLineColor, patternStrokeWidth, fillOpacity); + } + + return patternFill; + } + }, { + key: "handleGradientFill", + value: function handleGradientFill(_ref2) { + var fillColor = _ref2.fillColor, + fillOpacity = _ref2.fillOpacity, + fillConfig = _ref2.fillConfig, + i = _ref2.i; + var fillCnf = this.w.config.fill; + + if (fillConfig) { + fillCnf = _objectSpread2(_objectSpread2({}, fillCnf), fillConfig); + } + + var opts = this.opts; + var graphics = new Graphics(this.ctx); + var utils = new Utils$1(); + var type = fillCnf.gradient.type; + var gradientFrom = fillColor; + var gradientTo; + var opacityFrom = fillCnf.gradient.opacityFrom === undefined ? fillOpacity : Array.isArray(fillCnf.gradient.opacityFrom) ? fillCnf.gradient.opacityFrom[i] : fillCnf.gradient.opacityFrom; + + if (gradientFrom.indexOf('rgba') > -1) { + opacityFrom = Utils$1.getOpacityFromRGBA(gradientFrom); + } + + var opacityTo = fillCnf.gradient.opacityTo === undefined ? fillOpacity : Array.isArray(fillCnf.gradient.opacityTo) ? fillCnf.gradient.opacityTo[i] : fillCnf.gradient.opacityTo; + + if (fillCnf.gradient.gradientToColors === undefined || fillCnf.gradient.gradientToColors.length === 0) { + if (fillCnf.gradient.shade === 'dark') { + gradientTo = utils.shadeColor(parseFloat(fillCnf.gradient.shadeIntensity) * -1, fillColor.indexOf('rgb') > -1 ? Utils$1.rgb2hex(fillColor) : fillColor); + } else { + gradientTo = utils.shadeColor(parseFloat(fillCnf.gradient.shadeIntensity), fillColor.indexOf('rgb') > -1 ? Utils$1.rgb2hex(fillColor) : fillColor); + } + } else { + if (fillCnf.gradient.gradientToColors[opts.seriesNumber]) { + var gToColor = fillCnf.gradient.gradientToColors[opts.seriesNumber]; + gradientTo = gToColor; + + if (gToColor.indexOf('rgba') > -1) { + opacityTo = Utils$1.getOpacityFromRGBA(gToColor); + } + } else { + gradientTo = fillColor; + } + } + + if (fillCnf.gradient.gradientFrom) { + gradientFrom = fillCnf.gradient.gradientFrom; + } + + if (fillCnf.gradient.gradientTo) { + gradientTo = fillCnf.gradient.gradientTo; + } + + if (fillCnf.gradient.inverseColors) { + var t = gradientFrom; + gradientFrom = gradientTo; + gradientTo = t; + } + + if (gradientFrom.indexOf('rgb') > -1) { + gradientFrom = Utils$1.rgb2hex(gradientFrom); + } + + if (gradientTo.indexOf('rgb') > -1) { + gradientTo = Utils$1.rgb2hex(gradientTo); + } + + return graphics.drawGradient(type, gradientFrom, gradientTo, opacityFrom, opacityTo, opts.size, fillCnf.gradient.stops, fillCnf.gradient.colorStops, i); + } + }]); + + return Fill; + }(); + + /** + * ApexCharts Markers Class for drawing points on y values in axes charts. + * + * @module Markers + **/ + + var Markers = /*#__PURE__*/function () { + function Markers(ctx, opts) { + _classCallCheck(this, Markers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Markers, [{ + key: "setGlobalMarkerSize", + value: function setGlobalMarkerSize() { + var w = this.w; + w.globals.markers.size = Array.isArray(w.config.markers.size) ? w.config.markers.size : [w.config.markers.size]; + + if (w.globals.markers.size.length > 0) { + if (w.globals.markers.size.length < w.globals.series.length + 1) { + for (var i = 0; i <= w.globals.series.length; i++) { + if (typeof w.globals.markers.size[i] === 'undefined') { + w.globals.markers.size.push(w.globals.markers.size[0]); + } + } + } + } else { + w.globals.markers.size = w.config.series.map(function (s) { + return w.config.markers.size; + }); + } + } + }, { + key: "plotChartMarkers", + value: function plotChartMarkers(pointsPos, seriesIndex, j, pSize) { + var alwaysDrawMarker = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + var w = this.w; + var i = seriesIndex; + var p = pointsPos; + var elPointsWrap = null; + var graphics = new Graphics(this.ctx); + var point; + var hasDiscreteMarkers = w.config.markers.discrete && w.config.markers.discrete.length; + + if (w.globals.markers.size[seriesIndex] > 0 || alwaysDrawMarker || hasDiscreteMarkers) { + elPointsWrap = graphics.group({ + class: alwaysDrawMarker || hasDiscreteMarkers ? '' : 'apexcharts-series-markers' + }); + elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")")); + } + + if (Array.isArray(p.x)) { + for (var q = 0; q < p.x.length; q++) { + var dataPointIndex = j; // a small hack as we have 2 points for the first val to connect it + + if (j === 1 && q === 0) dataPointIndex = 0; + if (j === 1 && q === 1) dataPointIndex = 1; + var PointClasses = 'apexcharts-marker'; + + if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) { + PointClasses += ' no-pointer-events'; + } + + var shouldMarkerDraw = Array.isArray(w.config.markers.size) ? w.globals.markers.size[seriesIndex] > 0 : w.config.markers.size > 0; + + if (shouldMarkerDraw || alwaysDrawMarker || hasDiscreteMarkers) { + if (Utils$1.isNumber(p.y[q])) { + PointClasses += " w".concat(Utils$1.randomId()); + } else { + PointClasses = 'apexcharts-nullpoint'; + } + + var opts = this.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex + }); + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + opts.pointFillColor = w.config.series[i].data[dataPointIndex].fillColor; + } + + if (w.config.series[i].data[dataPointIndex].strokeColor) { + opts.pointStrokeColor = w.config.series[i].data[dataPointIndex].strokeColor; + } + } + + if (pSize) { + opts.pSize = pSize; + } + + point = graphics.drawMarker(p.x[q], p.y[q], opts); + point.attr('rel', dataPointIndex); + point.attr('j', dataPointIndex); + point.attr('index', seriesIndex); + point.node.setAttribute('default-marker-size', opts.pSize); + var filters = new Filters(this.ctx); + filters.setSelectionFilter(point, seriesIndex, dataPointIndex); + this.addEvents(point); + + if (elPointsWrap) { + elPointsWrap.add(point); + } + } else { + // dynamic array creation - multidimensional + if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') w.globals.pointsArray[seriesIndex] = []; + w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]); + } + } + } + + return elPointsWrap; + } + }, { + key: "getMarkerConfig", + value: function getMarkerConfig(_ref) { + var cssClass = _ref.cssClass, + seriesIndex = _ref.seriesIndex, + _ref$dataPointIndex = _ref.dataPointIndex, + dataPointIndex = _ref$dataPointIndex === void 0 ? null : _ref$dataPointIndex, + _ref$finishRadius = _ref.finishRadius, + finishRadius = _ref$finishRadius === void 0 ? null : _ref$finishRadius; + var w = this.w; + var pStyle = this.getMarkerStyle(seriesIndex); + var pSize = w.globals.markers.size[seriesIndex]; + var m = w.config.markers; // discrete markers is an option where user can specify a particular marker with different shape, size and color + + if (dataPointIndex !== null && m.discrete.length) { + m.discrete.map(function (marker) { + if (marker.seriesIndex === seriesIndex && marker.dataPointIndex === dataPointIndex) { + pStyle.pointStrokeColor = marker.strokeColor; + pStyle.pointFillColor = marker.fillColor; + pSize = marker.size; + pStyle.pointShape = marker.shape; + } + }); + } + + return { + pSize: finishRadius === null ? pSize : finishRadius, + pRadius: m.radius, + width: Array.isArray(m.width) ? m.width[seriesIndex] : m.width, + height: Array.isArray(m.height) ? m.height[seriesIndex] : m.height, + pointStrokeWidth: Array.isArray(m.strokeWidth) ? m.strokeWidth[seriesIndex] : m.strokeWidth, + pointStrokeColor: pStyle.pointStrokeColor, + pointFillColor: pStyle.pointFillColor, + shape: pStyle.pointShape || (Array.isArray(m.shape) ? m.shape[seriesIndex] : m.shape), + class: cssClass, + pointStrokeOpacity: Array.isArray(m.strokeOpacity) ? m.strokeOpacity[seriesIndex] : m.strokeOpacity, + pointStrokeDashArray: Array.isArray(m.strokeDashArray) ? m.strokeDashArray[seriesIndex] : m.strokeDashArray, + pointFillOpacity: Array.isArray(m.fillOpacity) ? m.fillOpacity[seriesIndex] : m.fillOpacity, + seriesIndex: seriesIndex + }; + } + }, { + key: "addEvents", + value: function addEvents(circle) { + var w = this.w; + var graphics = new Graphics(this.ctx); + circle.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this.ctx, circle)); + circle.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this.ctx, circle)); + circle.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this.ctx, circle)); + circle.node.addEventListener('click', w.config.markers.onClick); + circle.node.addEventListener('dblclick', w.config.markers.onDblClick); + circle.node.addEventListener('touchstart', graphics.pathMouseDown.bind(this.ctx, circle), { + passive: true + }); + } + }, { + key: "getMarkerStyle", + value: function getMarkerStyle(seriesIndex) { + var w = this.w; + var colors = w.globals.markers.colors; + var strokeColors = w.config.markers.strokeColor || w.config.markers.strokeColors; + var pointStrokeColor = Array.isArray(strokeColors) ? strokeColors[seriesIndex] : strokeColors; + var pointFillColor = Array.isArray(colors) ? colors[seriesIndex] : colors; + return { + pointStrokeColor: pointStrokeColor, + pointFillColor: pointFillColor + }; + } + }]); + + return Markers; + }(); + + /** + * ApexCharts Scatter Class. + * This Class also handles bubbles chart as currently there is no major difference in drawing them, + * @module Scatter + **/ + + var Scatter = /*#__PURE__*/function () { + function Scatter(ctx) { + _classCallCheck(this, Scatter); + + this.ctx = ctx; + this.w = ctx.w; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + } + + _createClass(Scatter, [{ + key: "draw", + value: function draw(elSeries, j, opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var realIndex = opts.realIndex; + var pointsPos = opts.pointsPos; + var zRatio = opts.zRatio; + var elPointsMain = opts.elParent; + var elPointsWrap = graphics.group({ + class: "apexcharts-series-markers apexcharts-series-".concat(w.config.chart.type) + }); + elPointsWrap.attr('clip-path', "url(#gridRectMarkerMask".concat(w.globals.cuid, ")")); + + if (Array.isArray(pointsPos.x)) { + for (var q = 0; q < pointsPos.x.length; q++) { + var dataPointIndex = j + 1; + var shouldDraw = true; // a small hack as we have 2 points for the first val to connect it + + if (j === 0 && q === 0) dataPointIndex = 0; + if (j === 0 && q === 1) dataPointIndex = 1; + var radius = 0; + var finishRadius = w.globals.markers.size[realIndex]; + + if (zRatio !== Infinity) { + // means we have a bubble + var bubble = w.config.plotOptions.bubble; + finishRadius = w.globals.seriesZ[realIndex][dataPointIndex]; + + if (bubble.zScaling) { + finishRadius /= zRatio; + } + + if (bubble.minBubbleRadius && finishRadius < bubble.minBubbleRadius) { + finishRadius = bubble.minBubbleRadius; + } + + if (bubble.maxBubbleRadius && finishRadius > bubble.maxBubbleRadius) { + finishRadius = bubble.maxBubbleRadius; + } + } + + if (!w.config.chart.animations.enabled) { + radius = finishRadius; + } + + var x = pointsPos.x[q]; + var y = pointsPos.y[q]; + radius = radius || 0; + + if (y === null || typeof w.globals.series[realIndex][dataPointIndex] === 'undefined') { + shouldDraw = false; + } + + if (shouldDraw) { + var point = this.drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j); + elPointsWrap.add(point); + } + + elPointsMain.add(elPointsWrap); + } + } + } + }, { + key: "drawPoint", + value: function drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) { + var w = this.w; + var i = realIndex; + var anim = new Animations(this.ctx); + var filters = new Filters(this.ctx); + var fill = new Fill(this.ctx); + var markers = new Markers(this.ctx); + var graphics = new Graphics(this.ctx); + var markerConfig = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex: dataPointIndex, + finishRadius: w.config.chart.type === 'bubble' || w.globals.comboCharts && w.config.series[realIndex] && w.config.series[realIndex].type === 'bubble' ? finishRadius : null + }); + finishRadius = markerConfig.pSize; + var pathFillCircle = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex: dataPointIndex, + color: markerConfig.pointFillColor, + patternUnits: 'objectBoundingBox', + value: w.globals.series[realIndex][j] + }); + var el; + + if (markerConfig.shape === 'circle') { + el = graphics.drawCircle(radius); + } else if (markerConfig.shape === 'square' || markerConfig.shape === 'rect') { + el = graphics.drawRect(0, 0, markerConfig.width - markerConfig.pointStrokeWidth / 2, markerConfig.height - markerConfig.pointStrokeWidth / 2, markerConfig.pRadius); + } + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor; + } + } + + el.attr({ + x: x - markerConfig.width / 2 - markerConfig.pointStrokeWidth / 2, + y: y - markerConfig.height / 2 - markerConfig.pointStrokeWidth / 2, + cx: x, + cy: y, + fill: pathFillCircle, + 'fill-opacity': markerConfig.pointFillOpacity, + stroke: markerConfig.pointStrokeColor, + r: finishRadius, + 'stroke-width': markerConfig.pointStrokeWidth, + 'stroke-dasharray': markerConfig.pointStrokeDashArray, + 'stroke-opacity': markerConfig.pointStrokeOpacity + }); + + if (w.config.chart.dropShadow.enabled) { + var dropShadow = w.config.chart.dropShadow; + filters.dropShadow(el, dropShadow, realIndex); + } + + if (this.initialAnim && !w.globals.dataChanged && !w.globals.resized) { + var speed = w.config.chart.animations.speed; + anim.animateMarker(el, 0, markerConfig.shape === 'circle' ? finishRadius : { + width: markerConfig.width, + height: markerConfig.height + }, speed, w.globals.easing, function () { + window.setTimeout(function () { + anim.animationCompleted(el); + }, 100); + }); + } else { + w.globals.animationEnded = true; + } + + if (w.globals.dataChanged && markerConfig.shape === 'circle') { + if (this.dynamicAnim) { + var _speed = w.config.chart.animations.dynamicAnimation.speed; + var prevX, prevY, prevR; + var prevPathJ = null; + prevPathJ = w.globals.previousPaths[realIndex] && w.globals.previousPaths[realIndex][j]; + + if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) { + // series containing less elements will ignore these values and revert to 0 + prevX = prevPathJ.x; + prevY = prevPathJ.y; + prevR = typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius; + } + + for (var cs = 0; cs < w.globals.collapsedSeries.length; cs++) { + if (w.globals.collapsedSeries[cs].index === realIndex) { + _speed = 1; + finishRadius = 0; + } + } + + if (x === 0 && y === 0) finishRadius = 0; + anim.animateCircle(el, { + cx: prevX, + cy: prevY, + r: prevR + }, { + cx: x, + cy: y, + r: finishRadius + }, _speed, w.globals.easing); + } else { + el.attr({ + r: finishRadius + }); + } + } + + el.attr({ + rel: dataPointIndex, + j: dataPointIndex, + index: realIndex, + 'default-marker-size': finishRadius + }); + filters.setSelectionFilter(el, realIndex, dataPointIndex); + markers.addEvents(el); + el.node.classList.add('apexcharts-marker'); + return el; + } + }, { + key: "centerTextInBubble", + value: function centerTextInBubble(y) { + var w = this.w; + y = y + parseInt(w.config.dataLabels.style.fontSize, 10) / 4; + return { + y: y + }; + } + }]); + + return Scatter; + }(); + + /** + * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts. + * + * @module DataLabels + **/ + + var DataLabels = /*#__PURE__*/function () { + function DataLabels(ctx) { + _classCallCheck(this, DataLabels); + + this.ctx = ctx; + this.w = ctx.w; + } // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that + // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again + + + _createClass(DataLabels, [{ + key: "dataLabelsCorrection", + value: function dataLabelsCorrection(x, y, val, i, dataPointIndex, alwaysDrawDataLabel, fontSize) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var drawnextLabel = false; // + + var textRects = graphics.getTextRects(val, fontSize); + var width = textRects.width; + var height = textRects.height; + if (y < 0) y = 0; + if (y > w.globals.gridHeight + height) y = w.globals.gridHeight + height / 2; // first value in series, so push an empty array + + if (typeof w.globals.dataLabelsRects[i] === 'undefined') w.globals.dataLabelsRects[i] = []; // then start pushing actual rects in that sub-array + + w.globals.dataLabelsRects[i].push({ + x: x, + y: y, + width: width, + height: height + }); + var len = w.globals.dataLabelsRects[i].length - 2; + var lastDrawnIndex = typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' ? w.globals.lastDrawnDataLabelsIndexes[i][w.globals.lastDrawnDataLabelsIndexes[i].length - 1] : 0; + + if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') { + var lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex]; + + if ( // next label forward and x not intersecting + x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || x + width < lastDataLabelRect.x // next label is going to be drawn backwards + ) { + // the 2 indexes don't override, so OK to draw next label + drawnextLabel = true; + } + } + + if (dataPointIndex === 0 || alwaysDrawDataLabel) { + drawnextLabel = true; + } + + return { + x: x, + y: y, + textRects: textRects, + drawnextLabel: drawnextLabel + }; + } + }, { + key: "drawDataLabel", + value: function drawDataLabel(_ref) { + var _this = this; + + var type = _ref.type, + pos = _ref.pos, + i = _ref.i, + j = _ref.j, + isRangeStart = _ref.isRangeStart, + _ref$strokeWidth = _ref.strokeWidth, + strokeWidth = _ref$strokeWidth === void 0 ? 2 : _ref$strokeWidth; + // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions + // all other charts like radar / bars / heatmaps will define their own drawDataLabel routine + var w = this.w; + var graphics = new Graphics(this.ctx); + var dataLabelsConfig = w.config.dataLabels; + var x = 0; + var y = 0; + var dataPointIndex = j; + var elDataLabelsWrap = null; + + if (!dataLabelsConfig.enabled || !Array.isArray(pos.x)) { + return elDataLabelsWrap; + } + + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + + for (var q = 0; q < pos.x.length; q++) { + x = pos.x[q] + dataLabelsConfig.offsetX; + y = pos.y[q] + dataLabelsConfig.offsetY + strokeWidth; + + if (!isNaN(x)) { + // a small hack as we have 2 points for the first val to connect it + if (j === 1 && q === 0) dataPointIndex = 0; + if (j === 1 && q === 1) dataPointIndex = 1; + var val = w.globals.series[i][dataPointIndex]; + + if (type === 'rangeArea') { + if (isRangeStart) { + val = w.globals.seriesRangeStart[i][dataPointIndex]; + } else { + val = w.globals.seriesRangeEnd[i][dataPointIndex]; + } + } + + var text = ''; + + var getText = function getText(v) { + return w.config.dataLabels.formatter(v, { + ctx: _this.ctx, + seriesIndex: i, + dataPointIndex: dataPointIndex, + w: w + }); + }; + + if (w.config.chart.type === 'bubble') { + val = w.globals.seriesZ[i][dataPointIndex]; + text = getText(val); + y = pos.y[q]; + var scatter = new Scatter(this.ctx); + var centerTextInBubbleCoords = scatter.centerTextInBubble(y, i, dataPointIndex); + y = centerTextInBubbleCoords.y; + } else { + if (typeof val !== 'undefined') { + text = getText(val); + } + } + + this.plotDataLabelsText({ + x: x, + y: y, + text: text, + i: i, + j: dataPointIndex, + parent: elDataLabelsWrap, + offsetCorrection: true, + dataLabelsConfig: w.config.dataLabels + }); + } + } + + return elDataLabelsWrap; + } + }, { + key: "plotDataLabelsText", + value: function plotDataLabelsText(opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var x = opts.x, + y = opts.y, + i = opts.i, + j = opts.j, + text = opts.text, + textAnchor = opts.textAnchor, + fontSize = opts.fontSize, + parent = opts.parent, + dataLabelsConfig = opts.dataLabelsConfig, + color = opts.color, + alwaysDrawDataLabel = opts.alwaysDrawDataLabel, + offsetCorrection = opts.offsetCorrection; + + if (Array.isArray(w.config.dataLabels.enabledOnSeries)) { + if (w.config.dataLabels.enabledOnSeries.indexOf(i) < 0) { + return; + } + } + + var correctedLabels = { + x: x, + y: y, + drawnextLabel: true, + textRects: null + }; + + if (offsetCorrection) { + correctedLabels = this.dataLabelsCorrection(x, y, text, i, j, alwaysDrawDataLabel, parseInt(dataLabelsConfig.style.fontSize, 10)); + } // when zoomed, we don't need to correct labels offsets, + // but if normally, labels get cropped, correct them + + + if (!w.globals.zoomed) { + x = correctedLabels.x; + y = correctedLabels.y; + } + + if (correctedLabels.textRects) { + // fixes #2264 + if (x < -10 - correctedLabels.textRects.width || x > w.globals.gridWidth + correctedLabels.textRects.width + 10) { + // datalabels fall outside drawing area, so draw a blank label + text = ''; + } + } + + var dataLabelColor = w.globals.dataLabels.style.colors[i]; + + if ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && w.config.plotOptions.bar.distributed || w.config.dataLabels.distributed) { + dataLabelColor = w.globals.dataLabels.style.colors[j]; + } + + if (typeof dataLabelColor === 'function') { + dataLabelColor = dataLabelColor({ + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + if (color) { + dataLabelColor = color; + } + + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + + if (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') { + // for certain chart types, we handle offsets while calculating datalabels pos + // why? because bars/column may have negative values and based on that + // offsets becomes reversed + offX = 0; + offY = 0; + } + + if (correctedLabels.drawnextLabel) { + var dataLabelText = graphics.drawText({ + width: 100, + height: parseInt(dataLabelsConfig.style.fontSize, 10), + x: x + offX, + y: y + offY, + foreColor: dataLabelColor, + textAnchor: textAnchor || dataLabelsConfig.textAnchor, + text: text, + fontSize: fontSize || dataLabelsConfig.style.fontSize, + fontFamily: dataLabelsConfig.style.fontFamily, + fontWeight: dataLabelsConfig.style.fontWeight || 'normal' + }); + dataLabelText.attr({ + class: 'apexcharts-datalabel', + cx: x, + cy: y + }); + + if (dataLabelsConfig.dropShadow.enabled) { + var textShadow = dataLabelsConfig.dropShadow; + var filters = new Filters(this.ctx); + filters.dropShadow(dataLabelText, textShadow); + } + + parent.add(dataLabelText); + + if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') { + w.globals.lastDrawnDataLabelsIndexes[i] = []; + } + + w.globals.lastDrawnDataLabelsIndexes[i].push(j); + } + } + }, { + key: "addBackgroundToDataLabel", + value: function addBackgroundToDataLabel(el, coords) { + var w = this.w; + var bCnf = w.config.dataLabels.background; + var paddingH = bCnf.padding; + var paddingV = bCnf.padding / 2; + var width = coords.width; + var height = coords.height; + var graphics = new Graphics(this.ctx); + var elRect = graphics.drawRect(coords.x - paddingH, coords.y - paddingV / 2, width + paddingH * 2, height + paddingV, bCnf.borderRadius, w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background, bCnf.opacity, bCnf.borderWidth, bCnf.borderColor); + + if (bCnf.dropShadow.enabled) { + var filters = new Filters(this.ctx); + filters.dropShadow(elRect, bCnf.dropShadow); + } + + return elRect; + } + }, { + key: "dataLabelsBackground", + value: function dataLabelsBackground() { + var w = this.w; + if (w.config.chart.type === 'bubble') return; + var elDataLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-datalabels text'); + + for (var i = 0; i < elDataLabels.length; i++) { + var el = elDataLabels[i]; + var coords = el.getBBox(); + var elRect = null; + + if (coords.width && coords.height) { + elRect = this.addBackgroundToDataLabel(el, coords); + } + + if (elRect) { + el.parentNode.insertBefore(elRect.node, el); + var background = el.getAttribute('fill'); + var shouldAnim = w.config.chart.animations.enabled && !w.globals.resized && !w.globals.dataChanged; + + if (shouldAnim) { + elRect.animate().attr({ + fill: background + }); + } else { + elRect.attr({ + fill: background + }); + } + + el.setAttribute('fill', w.config.dataLabels.background.foreColor); + } + } + } + }, { + key: "bringForward", + value: function bringForward() { + var w = this.w; + var elDataLabelsNodes = w.globals.dom.baseEl.querySelectorAll('.apexcharts-datalabels'); + var elSeries = w.globals.dom.baseEl.querySelector('.apexcharts-plot-series:last-child'); + + for (var i = 0; i < elDataLabelsNodes.length; i++) { + if (elSeries) { + elSeries.insertBefore(elDataLabelsNodes[i], elSeries.nextSibling); + } + } + } + }]); + + return DataLabels; + }(); + + /** + * ApexCharts Series Class for interaction with the Series of the chart. + * + * @module Series + **/ + + var Series = /*#__PURE__*/function () { + function Series(ctx) { + _classCallCheck(this, Series); + + this.ctx = ctx; + this.w = ctx.w; + this.legendInactiveClass = 'legend-mouseover-inactive'; + } + + _createClass(Series, [{ + key: "getAllSeriesEls", + value: function getAllSeriesEls() { + return this.w.globals.dom.baseEl.getElementsByClassName("apexcharts-series"); + } + }, { + key: "getSeriesByName", + value: function getSeriesByName(seriesName) { + return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner .apexcharts-series[seriesName='".concat(Utils$1.escapeString(seriesName), "']")); + } + }, { + key: "isSeriesHidden", + value: function isSeriesHidden(seriesName) { + var targetElement = this.getSeriesByName(seriesName); + var realIndex = parseInt(targetElement.getAttribute('data:realIndex'), 10); + var isHidden = targetElement.classList.contains('apexcharts-series-collapsed'); + return { + isHidden: isHidden, + realIndex: realIndex + }; + } + }, { + key: "addCollapsedClassToSeries", + value: function addCollapsedClassToSeries(elSeries, index) { + var w = this.w; + + function iterateOnAllCollapsedSeries(series) { + for (var cs = 0; cs < series.length; cs++) { + if (series[cs].index === index) { + elSeries.node.classList.add('apexcharts-series-collapsed'); + } + } + } + + iterateOnAllCollapsedSeries(w.globals.collapsedSeries); + iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries); + } + }, { + key: "toggleSeries", + value: function toggleSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, isSeriesHidden.isHidden); + return isSeriesHidden.isHidden; + } + }, { + key: "showSeries", + value: function showSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + + if (isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, true); + } + } + }, { + key: "hideSeries", + value: function hideSeries(seriesName) { + var isSeriesHidden = this.isSeriesHidden(seriesName); + + if (!isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries(isSeriesHidden.realIndex, false); + } + } + }, { + key: "resetSeries", + value: function resetSeries() { + var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var shouldResetZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var shouldResetCollapsed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var w = this.w; + var series = Utils$1.clone(w.globals.initialSeries); + w.globals.previousPaths = []; + + if (shouldResetCollapsed) { + w.globals.collapsedSeries = []; + w.globals.ancillaryCollapsedSeries = []; + w.globals.collapsedSeriesIndices = []; + w.globals.ancillaryCollapsedSeriesIndices = []; + } else { + series = this.emptyCollapsedSeries(series); + } + + w.config.series = series; + + if (shouldUpdateChart) { + if (shouldResetZoom) { + w.globals.zoomed = false; + this.ctx.updateHelpers.revertDefaultAxisMinMax(); + } + + this.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + } + }, { + key: "emptyCollapsedSeries", + value: function emptyCollapsedSeries(series) { + var w = this.w; + + for (var i = 0; i < series.length; i++) { + if (w.globals.collapsedSeriesIndices.indexOf(i) > -1) { + series[i].data = []; + } + } + + return series; + } + }, { + key: "toggleSeriesOnHover", + value: function toggleSeriesOnHover(e, targetElement) { + var w = this.w; + if (!targetElement) targetElement = e.target; + var allSeriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels"); + + if (e.type === 'mousemove') { + var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1; + var seriesEl = null; + var dataLabelEl = null; + + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']")); + dataLabelEl = w.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(seriesCnt, "']")); + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']")); + } + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "'] path")); + } + + for (var se = 0; se < allSeriesEls.length; se++) { + allSeriesEls[se].classList.add(this.legendInactiveClass); + } + + if (seriesEl !== null) { + if (!w.globals.axisCharts) { + seriesEl.parentNode.classList.remove(this.legendInactiveClass); + } + + seriesEl.classList.remove(this.legendInactiveClass); + + if (dataLabelEl !== null) { + dataLabelEl.classList.remove(this.legendInactiveClass); + } + } + } else if (e.type === 'mouseout') { + for (var _se = 0; _se < allSeriesEls.length; _se++) { + allSeriesEls[_se].classList.remove(this.legendInactiveClass); + } + } + } + }, { + key: "highlightRangeInSeries", + value: function highlightRangeInSeries(e, targetElement) { + var _this = this; + + var w = this.w; + var allHeatMapElements = w.globals.dom.baseEl.getElementsByClassName('apexcharts-heatmap-rect'); + + var activeInactive = function activeInactive(action) { + for (var i = 0; i < allHeatMapElements.length; i++) { + allHeatMapElements[i].classList[action](_this.legendInactiveClass); + } + }; + + var removeInactiveClassFromHoveredRange = function removeInactiveClassFromHoveredRange(range) { + for (var i = 0; i < allHeatMapElements.length; i++) { + var val = parseInt(allHeatMapElements[i].getAttribute('val'), 10); + + if (val >= range.from && val <= range.to) { + allHeatMapElements[i].classList.remove(_this.legendInactiveClass); + } + } + }; + + if (e.type === 'mousemove') { + var seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1; + activeInactive('add'); + var range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt]; + removeInactiveClassFromHoveredRange(range); + } else if (e.type === 'mouseout') { + activeInactive('remove'); + } + } + }, { + key: "getActiveConfigSeriesIndex", + value: function getActiveConfigSeriesIndex() { + var order = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'asc'; + var chartTypes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + var w = this.w; + var activeIndex = 0; + + if (w.config.series.length > 1) { + // active series flag is required to know if user has not deactivated via legend click + var activeSeriesIndex = w.config.series.map(function (s, index) { + var checkChartType = function checkChartType() { + if (w.globals.comboCharts) { + return chartTypes.length === 0 || chartTypes.length && chartTypes.indexOf(w.config.series[index].type) > -1; + } + + return true; + }; + + var hasData = s.data && s.data.length > 0 && w.globals.collapsedSeriesIndices.indexOf(index) === -1; + return hasData && checkChartType() ? index : -1; + }); + + for (var a = order === 'asc' ? 0 : activeSeriesIndex.length - 1; order === 'asc' ? a < activeSeriesIndex.length : a >= 0; order === 'asc' ? a++ : a--) { + if (activeSeriesIndex[a] !== -1) { + activeIndex = activeSeriesIndex[a]; + break; + } + } + } + + return activeIndex; + } + }, { + key: "getBarSeriesIndices", + value: function getBarSeriesIndices() { + var w = this.w; + + if (w.globals.comboCharts) { + return this.w.config.series.map(function (s, i) { + return s.type === 'bar' || s.type === 'column' ? i : -1; + }).filter(function (i) { + return i !== -1; + }); + } + + return this.w.config.series.map(function (s, i) { + return i; + }); + } + }, { + key: "getPreviousPaths", + value: function getPreviousPaths() { + var w = this.w; + w.globals.previousPaths = []; + + function pushPaths(seriesEls, i, type) { + var paths = seriesEls[i].childNodes; + var dArr = { + type: type, + paths: [], + realIndex: seriesEls[i].getAttribute('data:realIndex') + }; + + for (var j = 0; j < paths.length; j++) { + if (paths[j].hasAttribute('pathTo')) { + var d = paths[j].getAttribute('pathTo'); + dArr.paths.push({ + d: d + }); + } + } + + w.globals.previousPaths.push(dArr); + } + + var getPaths = function getPaths(chartType) { + return w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(chartType, "-series .apexcharts-series")); + }; + + var chartTypes = ['line', 'area', 'bar', 'rangebar', 'rangeArea', 'candlestick', 'radar']; + chartTypes.forEach(function (type) { + var paths = getPaths(type); + + for (var p = 0; p < paths.length; p++) { + pushPaths(paths, p, type); + } + }); + this.handlePrevBubbleScatterPaths('bubble'); + this.handlePrevBubbleScatterPaths('scatter'); + var heatTreeSeries = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(w.config.chart.type, " .apexcharts-series")); + + if (heatTreeSeries.length > 0) { + var _loop = function _loop(h) { + var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(w.config.chart.type, " .apexcharts-series[data\\:realIndex='").concat(h, "'] rect")); + var dArr = []; + + var _loop2 = function _loop2(i) { + var getAttr = function getAttr(x) { + return seriesEls[i].getAttribute(x); + }; + + var rect = { + x: parseFloat(getAttr('x')), + y: parseFloat(getAttr('y')), + width: parseFloat(getAttr('width')), + height: parseFloat(getAttr('height')) + }; + dArr.push({ + rect: rect, + color: seriesEls[i].getAttribute('color') + }); + }; + + for (var i = 0; i < seriesEls.length; i++) { + _loop2(i); + } + + w.globals.previousPaths.push(dArr); + }; + + for (var h = 0; h < heatTreeSeries.length; h++) { + _loop(h); + } + } + + if (!w.globals.axisCharts) { + // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series) + w.globals.previousPaths = w.globals.series; + } + } + }, { + key: "handlePrevBubbleScatterPaths", + value: function handlePrevBubbleScatterPaths(type) { + var w = this.w; + var paths = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(type, "-series .apexcharts-series")); + + if (paths.length > 0) { + for (var s = 0; s < paths.length; s++) { + var seriesEls = w.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(type, "-series .apexcharts-series[data\\:realIndex='").concat(s, "'] circle")); + var dArr = []; + + for (var i = 0; i < seriesEls.length; i++) { + dArr.push({ + x: seriesEls[i].getAttribute('cx'), + y: seriesEls[i].getAttribute('cy'), + r: seriesEls[i].getAttribute('r') + }); + } + + w.globals.previousPaths.push(dArr); + } + } + } + }, { + key: "clearPreviousPaths", + value: function clearPreviousPaths() { + var w = this.w; + w.globals.previousPaths = []; + w.globals.allSeriesCollapsed = false; + } + }, { + key: "handleNoData", + value: function handleNoData() { + var w = this.w; + var me = this; + var noDataOpts = w.config.noData; + var graphics = new Graphics(me.ctx); + var x = w.globals.svgWidth / 2; + var y = w.globals.svgHeight / 2; + var textAnchor = 'middle'; + w.globals.noData = true; + w.globals.animationEnded = true; + + if (noDataOpts.align === 'left') { + x = 10; + textAnchor = 'start'; + } else if (noDataOpts.align === 'right') { + x = w.globals.svgWidth - 10; + textAnchor = 'end'; + } + + if (noDataOpts.verticalAlign === 'top') { + y = 50; + } else if (noDataOpts.verticalAlign === 'bottom') { + y = w.globals.svgHeight - 50; + } + + x = x + noDataOpts.offsetX; + y = y + parseInt(noDataOpts.style.fontSize, 10) + 2 + noDataOpts.offsetY; + + if (noDataOpts.text !== undefined && noDataOpts.text !== '') { + var titleText = graphics.drawText({ + x: x, + y: y, + text: noDataOpts.text, + textAnchor: textAnchor, + fontSize: noDataOpts.style.fontSize, + fontFamily: noDataOpts.style.fontFamily, + foreColor: noDataOpts.style.color, + opacity: 1, + class: 'apexcharts-text-nodata' + }); + w.globals.dom.Paper.add(titleText); + } + } // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0] + // This is because we don't want to alter the series' length as it is used at many places + + }, { + key: "setNullSeriesToZeroValues", + value: function setNullSeriesToZeroValues(series) { + var w = this.w; + + for (var sl = 0; sl < series.length; sl++) { + if (series[sl].length === 0) { + for (var j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) { + series[sl].push(0); + } + } + } + + return series; + } + }, { + key: "hasAllSeriesEqualX", + value: function hasAllSeriesEqualX() { + var equalLen = true; + var w = this.w; + var filteredSerX = this.filteredSeriesX(); + + for (var i = 0; i < filteredSerX.length - 1; i++) { + if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) { + equalLen = false; + break; + } + } + + w.globals.allSeriesHasEqualX = equalLen; + return equalLen; + } + }, { + key: "filteredSeriesX", + value: function filteredSeriesX() { + var w = this.w; + var filteredSeriesX = w.globals.seriesX.map(function (ser) { + return ser.length > 0 ? ser : []; + }); + return filteredSeriesX; + } + }]); + + return Series; + }(); + + var Data = /*#__PURE__*/function () { + function Data(ctx) { + _classCallCheck(this, Data); + + this.ctx = ctx; + this.w = ctx.w; + this.twoDSeries = []; + this.threeDSeries = []; + this.twoDSeriesX = []; + this.seriesGoals = []; + this.coreUtils = new CoreUtils(this.ctx); + } + + _createClass(Data, [{ + key: "isMultiFormat", + value: function isMultiFormat() { + return this.isFormatXY() || this.isFormat2DArray(); + } // given format is [{x, y}, {x, y}] + + }, { + key: "isFormatXY", + value: function isFormatXY() { + var series = this.w.config.series.slice(); + var sr = new Series(this.ctx); + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && series[this.activeSeriesIndex].data[0] !== null && typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null) { + return true; + } + } // given format is [[x, y], [x, y]] + + }, { + key: "isFormat2DArray", + value: function isFormat2DArray() { + var series = this.w.config.series.slice(); + var sr = new Series(this.ctx); + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (typeof series[this.activeSeriesIndex].data !== 'undefined' && series[this.activeSeriesIndex].data.length > 0 && typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && series[this.activeSeriesIndex].data[0] !== null && series[this.activeSeriesIndex].data[0].constructor === Array) { + return true; + } + } + }, { + key: "handleFormat2DArray", + value: function handleFormat2DArray(ser, i) { + var cnf = this.w.config; + var gl = this.w.globals; + var isBoxPlot = cnf.chart.type === 'boxPlot' || cnf.series[i].type === 'boxPlot'; + + for (var j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j][1] !== 'undefined') { + if (Array.isArray(ser[i].data[j][1]) && ser[i].data[j][1].length === 4 && !isBoxPlot) { + // candlestick nested ohlc format + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][1][3])); + } else if (ser[i].data[j].length >= 5) { + // candlestick non-nested ohlc format + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][4])); + } else { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j][1])); + } + + gl.dataFormatXNumeric = true; + } + + if (cnf.xaxis.type === 'datetime') { + // if timestamps are provided and xaxis type is datetime, + var ts = new Date(ser[i].data[j][0]); + ts = new Date(ts).getTime(); + this.twoDSeriesX.push(ts); + } else { + this.twoDSeriesX.push(ser[i].data[j][0]); + } + } + + for (var _j = 0; _j < ser[i].data.length; _j++) { + if (typeof ser[i].data[_j][2] !== 'undefined') { + this.threeDSeries.push(ser[i].data[_j][2]); + gl.isDataXYZ = true; + } + } + } + }, { + key: "handleFormatXY", + value: function handleFormatXY(ser, i) { + var cnf = this.w.config; + var gl = this.w.globals; + var dt = new DateTime(this.ctx); + var activeI = i; + + if (gl.collapsedSeriesIndices.indexOf(i) > -1) { + // fix #368 + activeI = this.activeSeriesIndex; + } // get series + + + for (var j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j].y !== 'undefined') { + if (Array.isArray(ser[i].data[j].y)) { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1])); + } else { + this.twoDSeries.push(Utils$1.parseNumber(ser[i].data[j].y)); + } + } + + if (typeof ser[i].data[j].goals !== 'undefined' && Array.isArray(ser[i].data[j].goals)) { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = []; + } + + this.seriesGoals[i].push(ser[i].data[j].goals); + } else { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = []; + } + + this.seriesGoals[i].push(null); + } + } // get seriesX + + + for (var _j2 = 0; _j2 < ser[activeI].data.length; _j2++) { + var isXString = typeof ser[activeI].data[_j2].x === 'string'; + var isXArr = Array.isArray(ser[activeI].data[_j2].x); + var isXDate = !isXArr && !!dt.isValidDate(ser[activeI].data[_j2].x.toString()); + + if (isXString || isXDate) { + // user supplied '01/01/2017' or a date string (a JS date object is not supported) + if (isXString || cnf.xaxis.convertedCatToNumeric) { + var isRangeColumn = gl.isBarHorizontal && gl.isRangeData; + + if (cnf.xaxis.type === 'datetime' && !isRangeColumn) { + this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x)); + } else { + // a category and not a numeric x value + this.fallbackToCategory = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } + } else { + if (cnf.xaxis.type === 'datetime') { + this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[_j2].x.toString())); + } else { + gl.dataFormatXNumeric = true; + gl.isXNumeric = true; + this.twoDSeriesX.push(parseFloat(ser[activeI].data[_j2].x)); + } + } + } else if (isXArr) { + // a multiline label described in array format + this.fallbackToCategory = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } else { + // a numeric value in x property + gl.isXNumeric = true; + gl.dataFormatXNumeric = true; + this.twoDSeriesX.push(ser[activeI].data[_j2].x); + } + } + + if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') { + for (var t = 0; t < ser[i].data.length; t++) { + this.threeDSeries.push(ser[i].data[t].z); + } + + gl.isDataXYZ = true; + } + } + }, { + key: "handleRangeData", + value: function handleRangeData(ser, i) { + var gl = this.w.globals; + var range = {}; + + if (this.isFormat2DArray()) { + range = this.handleRangeDataFormat('array', ser, i); + } else if (this.isFormatXY()) { + range = this.handleRangeDataFormat('xy', ser, i); + } + + gl.seriesRangeStart.push(range.start); + gl.seriesRangeEnd.push(range.end); + gl.seriesRange.push(range.rangeUniques); // check for overlaps to avoid clashes in a timeline chart + + gl.seriesRange.forEach(function (sr, si) { + if (sr) { + sr.forEach(function (sarr, sarri) { + sarr.y.forEach(function (arr, arri) { + for (var sri = 0; sri < sarr.y.length; sri++) { + if (arri !== sri) { + var range1y1 = arr.y1; + var range1y2 = arr.y2; + var range2y1 = sarr.y[sri].y1; + var range2y2 = sarr.y[sri].y2; + + if (range1y1 <= range2y2 && range2y1 <= range1y2) { + if (sarr.overlaps.indexOf(arr.rangeName) < 0) { + sarr.overlaps.push(arr.rangeName); + } + + if (sarr.overlaps.indexOf(sarr.y[sri].rangeName) < 0) { + sarr.overlaps.push(sarr.y[sri].rangeName); + } + } + } + } + }); + }); + } + }); + return range; + } + }, { + key: "handleCandleStickBoxData", + value: function handleCandleStickBoxData(ser, i) { + var gl = this.w.globals; + var ohlc = {}; + + if (this.isFormat2DArray()) { + ohlc = this.handleCandleStickBoxDataFormat('array', ser, i); + } else if (this.isFormatXY()) { + ohlc = this.handleCandleStickBoxDataFormat('xy', ser, i); + } + + gl.seriesCandleO[i] = ohlc.o; + gl.seriesCandleH[i] = ohlc.h; + gl.seriesCandleM[i] = ohlc.m; + gl.seriesCandleL[i] = ohlc.l; + gl.seriesCandleC[i] = ohlc.c; + return ohlc; + } + }, { + key: "handleRangeDataFormat", + value: function handleRangeDataFormat(format, ser, i) { + var rangeStart = []; + var rangeEnd = []; + var uniqueKeys = ser[i].data.filter(function (thing, index, self) { + return index === self.findIndex(function (t) { + return t.x === thing.x; + }); + }).map(function (r, index) { + return { + x: r.x, + overlaps: [], + y: [] + }; + }); + + if (format === 'array') { + for (var j = 0; j < ser[i].data.length; j++) { + if (Array.isArray(ser[i].data[j])) { + rangeStart.push(ser[i].data[j][1][0]); + rangeEnd.push(ser[i].data[j][1][1]); + } else { + rangeStart.push(ser[i].data[j]); + rangeEnd.push(ser[i].data[j]); + } + } + } else if (format === 'xy') { + var _loop = function _loop(_j3) { + var isDataPoint2D = Array.isArray(ser[i].data[_j3].y); + var id = Utils$1.randomId(); + var x = ser[i].data[_j3].x; + var y = { + y1: isDataPoint2D ? ser[i].data[_j3].y[0] : ser[i].data[_j3].y, + y2: isDataPoint2D ? ser[i].data[_j3].y[1] : ser[i].data[_j3].y, + rangeName: id + }; // mutating config object by adding a new property + // TODO: As this is specifically for timeline rangebar charts, update the docs mentioning the series only supports xy format + + ser[i].data[_j3].rangeName = id; + var uI = uniqueKeys.findIndex(function (t) { + return t.x === x; + }); + uniqueKeys[uI].y.push(y); + rangeStart.push(y.y1); + rangeEnd.push(y.y2); + }; + + for (var _j3 = 0; _j3 < ser[i].data.length; _j3++) { + _loop(_j3); + } + } + + return { + start: rangeStart, + end: rangeEnd, + rangeUniques: uniqueKeys + }; + } + }, { + key: "handleCandleStickBoxDataFormat", + value: function handleCandleStickBoxDataFormat(format, ser, i) { + var w = this.w; + var isBoxPlot = w.config.chart.type === 'boxPlot' || w.config.series[i].type === 'boxPlot'; + var serO = []; + var serH = []; + var serM = []; + var serL = []; + var serC = []; + + if (format === 'array') { + if (isBoxPlot && ser[i].data[0].length === 6 || !isBoxPlot && ser[i].data[0].length === 5) { + for (var j = 0; j < ser[i].data.length; j++) { + serO.push(ser[i].data[j][1]); + serH.push(ser[i].data[j][2]); + + if (isBoxPlot) { + serM.push(ser[i].data[j][3]); + serL.push(ser[i].data[j][4]); + serC.push(ser[i].data[j][5]); + } else { + serL.push(ser[i].data[j][3]); + serC.push(ser[i].data[j][4]); + } + } + } else { + for (var _j4 = 0; _j4 < ser[i].data.length; _j4++) { + if (Array.isArray(ser[i].data[_j4][1])) { + serO.push(ser[i].data[_j4][1][0]); + serH.push(ser[i].data[_j4][1][1]); + + if (isBoxPlot) { + serM.push(ser[i].data[_j4][1][2]); + serL.push(ser[i].data[_j4][1][3]); + serC.push(ser[i].data[_j4][1][4]); + } else { + serL.push(ser[i].data[_j4][1][2]); + serC.push(ser[i].data[_j4][1][3]); + } + } + } + } + } else if (format === 'xy') { + for (var _j5 = 0; _j5 < ser[i].data.length; _j5++) { + if (Array.isArray(ser[i].data[_j5].y)) { + serO.push(ser[i].data[_j5].y[0]); + serH.push(ser[i].data[_j5].y[1]); + + if (isBoxPlot) { + serM.push(ser[i].data[_j5].y[2]); + serL.push(ser[i].data[_j5].y[3]); + serC.push(ser[i].data[_j5].y[4]); + } else { + serL.push(ser[i].data[_j5].y[2]); + serC.push(ser[i].data[_j5].y[3]); + } + } + } + } + + return { + o: serO, + h: serH, + m: serM, + l: serL, + c: serC + }; + } + }, { + key: "parseDataAxisCharts", + value: function parseDataAxisCharts(ser) { + var _this = this; + + var ctx = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.ctx; + var cnf = this.w.config; + var gl = this.w.globals; + var dt = new DateTime(ctx); + var xlabels = cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice(); + gl.isRangeBar = cnf.chart.type === 'rangeBar' && gl.isBarHorizontal; + gl.hasGroups = cnf.xaxis.type === 'category' && cnf.xaxis.group.groups.length > 0; + + if (gl.hasGroups) { + gl.groups = cnf.xaxis.group.groups; + } + + var handleDates = function handleDates() { + for (var j = 0; j < xlabels.length; j++) { + if (typeof xlabels[j] === 'string') { + // user provided date strings + var isDate = dt.isValidDate(xlabels[j]); + + if (isDate) { + _this.twoDSeriesX.push(dt.parseDate(xlabels[j])); + } else { + throw new Error('You have provided invalid Date format. Please provide a valid JavaScript Date'); + } + } else { + // user provided timestamps + _this.twoDSeriesX.push(xlabels[j]); + } + } + }; + + for (var i = 0; i < ser.length; i++) { + this.twoDSeries = []; + this.twoDSeriesX = []; + this.threeDSeries = []; + + if (typeof ser[i].data === 'undefined') { + console.error("It is a possibility that you may have not included 'data' property in series."); + return; + } + + if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea' || ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') { + gl.isRangeData = true; + + if (gl.isComboCharts) { + if (ser[i].type === 'rangeBar' || ser[i].type === 'rangeArea') { + this.handleRangeData(ser, i); + } + } else if (cnf.chart.type === 'rangeBar' || cnf.chart.type === 'rangeArea') { + this.handleRangeData(ser, i); + } + } + + if (this.isMultiFormat()) { + if (this.isFormat2DArray()) { + this.handleFormat2DArray(ser, i); + } else if (this.isFormatXY()) { + this.handleFormatXY(ser, i); + } + + if (cnf.chart.type === 'candlestick' || ser[i].type === 'candlestick' || cnf.chart.type === 'boxPlot' || ser[i].type === 'boxPlot') { + this.handleCandleStickBoxData(ser, i); + } + + gl.series.push(this.twoDSeries); + gl.labels.push(this.twoDSeriesX); + gl.seriesX.push(this.twoDSeriesX); + gl.seriesGoals = this.seriesGoals; + + if (i === this.activeSeriesIndex && !this.fallbackToCategory) { + gl.isXNumeric = true; + } + } else { + if (cnf.xaxis.type === 'datetime') { + // user didn't supplied [{x,y}] or [[x,y]], but single array in data. + // Also labels/categories were supplied differently + gl.isXNumeric = true; + handleDates(); + gl.seriesX.push(this.twoDSeriesX); + } else if (cnf.xaxis.type === 'numeric') { + gl.isXNumeric = true; + + if (xlabels.length > 0) { + this.twoDSeriesX = xlabels; + gl.seriesX.push(this.twoDSeriesX); + } + } + + gl.labels.push(this.twoDSeriesX); + var singleArray = ser[i].data.map(function (d) { + return Utils$1.parseNumber(d); + }); + gl.series.push(singleArray); + } + + gl.seriesZ.push(this.threeDSeries); + + if (ser[i].name !== undefined) { + gl.seriesNames.push(ser[i].name); + } else { + gl.seriesNames.push('series-' + parseInt(i + 1, 10)); + } // overrided default color if user inputs color with series data + + + if (ser[i].color !== undefined) { + gl.seriesColors.push(ser[i].color); + } else { + gl.seriesColors.push(undefined); + } + } + + return this.w; + } + }, { + key: "parseDataNonAxisCharts", + value: function parseDataNonAxisCharts(ser) { + var gl = this.w.globals; + var cnf = this.w.config; + gl.series = ser.slice(); + gl.seriesNames = cnf.labels.slice(); + + for (var i = 0; i < gl.series.length; i++) { + if (gl.seriesNames[i] === undefined) { + gl.seriesNames.push('series-' + (i + 1)); + } + } + + return this.w; + } + /** User possibly set string categories in xaxis.categories or labels prop + * Or didn't set xaxis labels at all - in which case we manually do it. + * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }], + * this shouldn't be called + * @param {array} ser - the series which user passed to the config + */ + + }, { + key: "handleExternalLabelsData", + value: function handleExternalLabelsData(ser) { + var cnf = this.w.config; + var gl = this.w.globals; + + if (cnf.xaxis.categories.length > 0) { + // user provided labels in xaxis.category prop + gl.labels = cnf.xaxis.categories; + } else if (cnf.labels.length > 0) { + // user provided labels in labels props + gl.labels = cnf.labels.slice(); + } else if (this.fallbackToCategory) { + // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array + gl.labels = gl.labels[0]; + + if (gl.seriesRange.length) { + gl.seriesRange.map(function (srt) { + srt.forEach(function (sr) { + if (gl.labels.indexOf(sr.x) < 0 && sr.x) { + gl.labels.push(sr.x); + } + }); + }); + gl.labels = gl.labels.filter(function (elem, pos, arr) { + return arr.indexOf(elem) === pos; + }); + } + + if (cnf.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(cnf); + defaults.convertCatToNumericXaxis(cnf, this.ctx, gl.seriesX[0]); + + this._generateExternalLabels(ser); + } + } else { + this._generateExternalLabels(ser); + } + } + }, { + key: "_generateExternalLabels", + value: function _generateExternalLabels(ser) { + var gl = this.w.globals; + var cnf = this.w.config; // user didn't provided any labels, fallback to 1-2-3-4-5 + + var labelArr = []; + + if (gl.axisCharts) { + if (gl.series.length > 0) { + if (this.isFormatXY()) { + // in case there is a combo chart (boxplot/scatter) + // and there are duplicated x values, we need to eliminate duplicates + var seriesDataFiltered = cnf.series.map(function (serie, s) { + return serie.data.filter(function (v, i, a) { + return a.findIndex(function (t) { + return t.x === v.x; + }) === i; + }); + }); + var len = seriesDataFiltered.reduce(function (p, c, i, a) { + return a[p].length > c.length ? p : i; + }, 0); + + for (var i = 0; i < seriesDataFiltered[len].length; i++) { + labelArr.push(i + 1); + } + } else { + for (var _i = 0; _i < gl.series[gl.maxValsInArrayIndex].length; _i++) { + labelArr.push(_i + 1); + } + } + } + + gl.seriesX = []; // create gl.seriesX as it will be used in calculations of x positions + + for (var _i2 = 0; _i2 < ser.length; _i2++) { + gl.seriesX.push(labelArr); + } // turn on the isXNumeric flag to allow minX and maxX to function properly + + + gl.isXNumeric = true; + } // no series to pull labels from, put a 0-10 series + // possibly, user collapsed all series. Hence we can't work with above calc + + + if (labelArr.length === 0) { + labelArr = gl.axisCharts ? [] : gl.series.map(function (gls, glsi) { + return glsi + 1; + }); + + for (var _i3 = 0; _i3 < ser.length; _i3++) { + gl.seriesX.push(labelArr); + } + } // Finally, pass the labelArr in gl.labels which will be printed on x-axis + + + gl.labels = labelArr; + + if (cnf.xaxis.convertedCatToNumeric) { + gl.categoryLabels = labelArr.map(function (l) { + return cnf.xaxis.labels.formatter(l); + }); + } // Turn on this global flag to indicate no labels were provided by user + + + gl.noLabelsProvided = true; + } // Segregate user provided data into appropriate vars + + }, { + key: "parseData", + value: function parseData(ser) { + var w = this.w; + var cnf = w.config; + var gl = w.globals; + this.excludeCollapsedSeriesInYAxis(); // If we detected string in X prop of series, we fallback to category x-axis + + this.fallbackToCategory = false; + this.ctx.core.resetGlobals(); + this.ctx.core.isMultipleY(); + + if (gl.axisCharts) { + // axisCharts includes line / area / column / scatter + this.parseDataAxisCharts(ser); + this.coreUtils.getLargestSeries(); + } else { + // non-axis charts are pie / donut + this.parseDataNonAxisCharts(ser); + } // set Null values to 0 in all series when user hides/shows some series + + + if (cnf.chart.type === 'bar' && cnf.chart.stacked) { + var series = new Series(this.ctx); + gl.series = series.setNullSeriesToZeroValues(gl.series); + } + + this.coreUtils.getSeriesTotals(); + + if (gl.axisCharts) { + gl.stackedSeriesTotals = this.coreUtils.getStackedSeriesTotals(); + } + + this.coreUtils.getPercentSeries(); + + if (!gl.dataFormatXNumeric && (!gl.isXNumeric || cnf.xaxis.type === 'numeric' && cnf.labels.length === 0 && cnf.xaxis.categories.length === 0)) { + // x-axis labels couldn't be detected; hence try searching every option in config + this.handleExternalLabelsData(ser); + } // check for multiline xaxis + + + var catLabels = this.coreUtils.getCategoryLabels(gl.labels); + + for (var l = 0; l < catLabels.length; l++) { + if (Array.isArray(catLabels[l])) { + gl.isMultiLineX = true; + break; + } + } + } + }, { + key: "excludeCollapsedSeriesInYAxis", + value: function excludeCollapsedSeriesInYAxis() { + var _this2 = this; + + var w = this.w; + w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map(function (collapsed, i) { + // fix issue #1215 + // if stacked, not returning collapsed.index to preserve yaxis + if (_this2.w.globals.isMultipleYAxis && !w.config.chart.stacked) { + return collapsed.index; + } + }); + } + }]); + + return Data; + }(); + + /** + * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips. + * + * @module Formatters + **/ + + var Formatters = /*#__PURE__*/function () { + function Formatters(ctx) { + _classCallCheck(this, Formatters); + + this.ctx = ctx; + this.w = ctx.w; + this.tooltipKeyFormat = 'dd MMM'; + } + + _createClass(Formatters, [{ + key: "xLabelFormat", + value: function xLabelFormat(fn, val, timestamp, opts) { + var w = this.w; + + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.labels.formatter === undefined) { + // if user has not specified a custom formatter, use the default tooltip.x.format + if (w.config.tooltip.x.formatter === undefined) { + var datetimeObj = new DateTime(this.ctx); + return datetimeObj.formatDate(datetimeObj.getDate(val), w.config.tooltip.x.format); + } + } + } + + return fn(val, timestamp, opts); + } + }, { + key: "defaultGeneralFormatter", + value: function defaultGeneralFormatter(val) { + if (Array.isArray(val)) { + return val.map(function (v) { + return v; + }); + } else { + return val; + } + } + }, { + key: "defaultYFormatter", + value: function defaultYFormatter(v, yaxe, i) { + var w = this.w; + + if (Utils$1.isNumber(v)) { + if (w.globals.yValueDecimal !== 0) { + v = v.toFixed(yaxe.decimalsInFloat !== undefined ? yaxe.decimalsInFloat : w.globals.yValueDecimal); + } else if (w.globals.maxYArr[i] - w.globals.minYArr[i] < 5) { + v = v.toFixed(1); + } else { + v = v.toFixed(0); + } + } + + return v; + } + }, { + key: "setLabelFormatters", + value: function setLabelFormatters() { + var _this = this; + + var w = this.w; + + w.globals.xaxisTooltipFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; + + w.globals.ttKeyFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; + + w.globals.ttZFormatter = function (val) { + return val; + }; + + w.globals.legendFormatter = function (val) { + return _this.defaultGeneralFormatter(val); + }; // formatter function will always overwrite format property + + + if (w.config.xaxis.labels.formatter !== undefined) { + w.globals.xLabelFormatter = w.config.xaxis.labels.formatter; + } else { + w.globals.xLabelFormatter = function (val) { + if (Utils$1.isNumber(val)) { + if (!w.config.xaxis.convertedCatToNumeric && w.config.xaxis.type === 'numeric') { + if (Utils$1.isNumber(w.config.xaxis.decimalsInFloat)) { + return val.toFixed(w.config.xaxis.decimalsInFloat); + } else { + var diff = w.globals.maxX - w.globals.minX; + + if (diff > 0 && diff < 100) { + return val.toFixed(1); + } + + return val.toFixed(0); + } + } + + if (w.globals.isBarHorizontal) { + var range = w.globals.maxY - w.globals.minYArr; + + if (range < 4) { + return val.toFixed(1); + } + } + + return val.toFixed(0); + } + + return val; + }; + } + + if (typeof w.config.tooltip.x.formatter === 'function') { + w.globals.ttKeyFormatter = w.config.tooltip.x.formatter; + } else { + w.globals.ttKeyFormatter = w.globals.xLabelFormatter; + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter; + } + + if (Array.isArray(w.config.tooltip.y)) { + w.globals.ttVal = w.config.tooltip.y; + } else { + if (w.config.tooltip.y.formatter !== undefined) { + w.globals.ttVal = w.config.tooltip.y; + } + } + + if (w.config.tooltip.z.formatter !== undefined) { + w.globals.ttZFormatter = w.config.tooltip.z.formatter; + } // legend formatter - if user wants to append any global values of series to legend text + + + if (w.config.legend.formatter !== undefined) { + w.globals.legendFormatter = w.config.legend.formatter; + } // formatter function will always overwrite format property + + + w.config.yaxis.forEach(function (yaxe, i) { + if (yaxe.labels.formatter !== undefined) { + w.globals.yLabelFormatters[i] = yaxe.labels.formatter; + } else { + w.globals.yLabelFormatters[i] = function (val) { + if (!w.globals.xyCharts) return val; + + if (Array.isArray(val)) { + return val.map(function (v) { + return _this.defaultYFormatter(v, yaxe, i); + }); + } else { + return _this.defaultYFormatter(val, yaxe, i); + } + }; + } + }); + return w.globals; + } + }, { + key: "heatmapLabelFormatters", + value: function heatmapLabelFormatters() { + var w = this.w; + + if (w.config.chart.type === 'heatmap') { + w.globals.yAxisScale[0].result = w.globals.seriesNames.slice(); // get the longest string from the labels array and also apply label formatter to it + + var longest = w.globals.seriesNames.reduce(function (a, b) { + return a.length > b.length ? a : b; + }, 0); + w.globals.yAxisScale[0].niceMax = longest; + w.globals.yAxisScale[0].niceMin = longest; + } + } + }]); + + return Formatters; + }(); + + var AxesUtils = /*#__PURE__*/function () { + function AxesUtils(ctx) { + _classCallCheck(this, AxesUtils); + + this.ctx = ctx; + this.w = ctx.w; + } // Based on the formatter function, get the label text and position + + + _createClass(AxesUtils, [{ + key: "getLabel", + value: function getLabel(labels, timescaleLabels, x, i) { + var drawnLabels = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : []; + var fontSize = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '12px'; + var isLeafGroup = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true; + var w = this.w; + var rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i]; + var label = rawLabel; + var xlbFormatter = w.globals.xLabelFormatter; + var customFormatter = w.config.xaxis.labels.formatter; + var isBold = false; + var xFormat = new Formatters(this.ctx); + var timestamp = rawLabel; + + if (isLeafGroup) { + label = xFormat.xLabelFormat(xlbFormatter, rawLabel, timestamp, { + i: i, + dateFormatter: new DateTime(this.ctx).formatDate, + w: w + }); + + if (customFormatter !== undefined) { + label = customFormatter(rawLabel, labels[i], { + i: i, + dateFormatter: new DateTime(this.ctx).formatDate, + w: w + }); + } + } + + var determineHighestUnit = function determineHighestUnit(unit) { + var highestUnit = null; + timescaleLabels.forEach(function (t) { + if (t.unit === 'month') { + highestUnit = 'year'; + } else if (t.unit === 'day') { + highestUnit = 'month'; + } else if (t.unit === 'hour') { + highestUnit = 'day'; + } else if (t.unit === 'minute') { + highestUnit = 'hour'; + } + }); + return highestUnit === unit; + }; + + if (timescaleLabels.length > 0) { + isBold = determineHighestUnit(timescaleLabels[i].unit); + x = timescaleLabels[i].position; + label = timescaleLabels[i].value; + } else { + if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) { + label = ''; + } + } + + if (typeof label === 'undefined') label = ''; + label = Array.isArray(label) ? label : label.toString(); + var graphics = new Graphics(this.ctx); + var textRect = {}; + + if (w.globals.rotateXLabels && isLeafGroup) { + textRect = graphics.getTextRects(label, parseInt(fontSize, 10), null, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false); + } else { + textRect = graphics.getTextRects(label, parseInt(fontSize, 10)); + } + + var allowDuplicatesInTimeScale = !w.config.xaxis.labels.showDuplicates && this.ctx.timeScale; + + if (!Array.isArray(label) && (label.indexOf('NaN') === 0 || label.toLowerCase().indexOf('invalid') === 0 || label.toLowerCase().indexOf('infinity') >= 0 || drawnLabels.indexOf(label) >= 0 && allowDuplicatesInTimeScale)) { + label = ''; + } + + return { + x: x, + text: label, + textRect: textRect, + isBold: isBold + }; + } + }, { + key: "checkLabelBasedOnTickamount", + value: function checkLabelBasedOnTickamount(i, label, labelsLen) { + var w = this.w; + var ticks = w.config.xaxis.tickAmount; + if (ticks === 'dataPoints') ticks = Math.round(w.globals.gridWidth / 120); + if (ticks > labelsLen) return label; + var tickMultiple = Math.round(labelsLen / (ticks + 1)); + + if (i % tickMultiple === 0) { + return label; + } else { + label.text = ''; + } + + return label; + } + }, { + key: "checkForOverflowingLabels", + value: function checkForOverflowingLabels(i, label, labelsLen, drawnLabels, drawnLabelsRects) { + var w = this.w; + + if (i === 0) { + // check if first label is being truncated + if (w.globals.skipFirstTimelinelabel) { + label.text = ''; + } + } + + if (i === labelsLen - 1) { + // check if last label is being truncated + if (w.globals.skipLastTimelinelabel) { + label.text = ''; + } + } + + if (w.config.xaxis.labels.hideOverlappingLabels && drawnLabels.length > 0) { + var prev = drawnLabelsRects[drawnLabelsRects.length - 1]; + + if (label.x < prev.textRect.width / (w.globals.rotateXLabels ? Math.abs(w.config.xaxis.labels.rotate) / 12 : 1.01) + prev.x) { + label.text = ''; + } + } + + return label; + } + }, { + key: "checkForReversedLabels", + value: function checkForReversedLabels(i, labels) { + var w = this.w; + + if (w.config.yaxis[i] && w.config.yaxis[i].reversed) { + labels.reverse(); + } + + return labels; + } + }, { + key: "isYAxisHidden", + value: function isYAxisHidden(index) { + var w = this.w; + var coreUtils = new CoreUtils(this.ctx); + return !w.config.yaxis[index].show || !w.config.yaxis[index].showForNullSeries && coreUtils.isSeriesNull(index) && w.globals.collapsedSeriesIndices.indexOf(index) === -1; + } // get the label color for y-axis + // realIndex is the actual series index, while i is the tick Index + + }, { + key: "getYAxisForeColor", + value: function getYAxisForeColor(yColors, realIndex) { + var w = this.w; + + if (Array.isArray(yColors) && w.globals.yAxisScale[realIndex]) { + this.ctx.theme.pushExtraColors(yColors, w.globals.yAxisScale[realIndex].result.length, false); + } + + return yColors; + } + }, { + key: "drawYAxisTicks", + value: function drawYAxisTicks(x, tickAmount, axisBorder, axisTicks, realIndex, labelsDivider, elYaxis) { + var w = this.w; + var graphics = new Graphics(this.ctx); // initial label position = 0; + + var t = w.globals.translateY; + + if (axisTicks.show && tickAmount > 0) { + if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width; + + for (var i = tickAmount; i >= 0; i--) { + var tY = t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1; + + if (w.globals.isBarHorizontal) { + tY = labelsDivider * i; + } + + if (w.config.chart.type === 'heatmap') { + tY = tY + labelsDivider / 2; + } + + var elTick = graphics.drawLine(x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, tY + axisTicks.offsetY, x + axisBorder.offsetX + axisTicks.offsetX, tY + axisTicks.offsetY, axisTicks.color); + elYaxis.add(elTick); + t = t + labelsDivider; + } + } + } + }]); + + return AxesUtils; + }(); + + var Exports = /*#__PURE__*/function () { + function Exports(ctx) { + _classCallCheck(this, Exports); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Exports, [{ + key: "scaleSvgNode", + value: function scaleSvgNode(svg, scale) { + // get current both width and height of the svg + var svgWidth = parseFloat(svg.getAttributeNS(null, 'width')); + var svgHeight = parseFloat(svg.getAttributeNS(null, 'height')); // set new width and height based on the scale + + svg.setAttributeNS(null, 'width', svgWidth * scale); + svg.setAttributeNS(null, 'height', svgHeight * scale); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + svgWidth + ' ' + svgHeight); + } + }, { + key: "fixSvgStringForIe11", + value: function fixSvgStringForIe11(svgData) { + // IE11 generates broken SVG that we have to fix by using regex + if (!Utils$1.isIE11()) { + // not IE11 - noop + return svgData.replace(/ /g, ' '); + } // replace second occurrence of "xmlns" attribute with "xmlns:xlink" with correct url + add xmlns:svgjs + + + var nXmlnsSeen = 0; + var result = svgData.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, function (match) { + nXmlnsSeen++; + return nXmlnsSeen === 2 ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"' : match; + }); // remove the invalid empty namespace declarations + + result = result.replace(/xmlns:NS\d+=""/g, ''); // remove these broken namespaces from attributes + + result = result.replace(/NS\d+:(\w+:\w+=")/g, '$1'); + return result; + } + }, { + key: "getSvgString", + value: function getSvgString(scale) { + if (scale == undefined) { + scale = 1; // if no scale is specified, don't scale... + } + + var svgString = this.w.globals.dom.Paper.svg(); // in case the scale is different than 1, the svg needs to be rescaled + + if (scale !== 1) { + // clone the svg node so it remains intact in the UI + var svgNode = this.w.globals.dom.Paper.node.cloneNode(true); // scale the image + + this.scaleSvgNode(svgNode, scale); // get the string representation of the svgNode + + svgString = new XMLSerializer().serializeToString(svgNode); + } + + return this.fixSvgStringForIe11(svgString); + } + }, { + key: "cleanup", + value: function cleanup() { + var w = this.w; // hide some elements to avoid printing them on exported svg + + var xcrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-xcrosshairs'); + var ycrosshairs = w.globals.dom.baseEl.getElementsByClassName('apexcharts-ycrosshairs'); + var zoomSelectionRects = w.globals.dom.baseEl.querySelectorAll('.apexcharts-zoom-rect, .apexcharts-selection-rect'); + Array.prototype.forEach.call(zoomSelectionRects, function (z) { + z.setAttribute('width', 0); + }); + + if (xcrosshairs && xcrosshairs[0]) { + xcrosshairs[0].setAttribute('x', -500); + xcrosshairs[0].setAttribute('x1', -500); + xcrosshairs[0].setAttribute('x2', -500); + } + + if (ycrosshairs && ycrosshairs[0]) { + ycrosshairs[0].setAttribute('y', -100); + ycrosshairs[0].setAttribute('y1', -100); + ycrosshairs[0].setAttribute('y2', -100); + } + } + }, { + key: "svgUrl", + value: function svgUrl() { + this.cleanup(); + var svgData = this.getSvgString(); + var svgBlob = new Blob([svgData], { + type: 'image/svg+xml;charset=utf-8' + }); + return URL.createObjectURL(svgBlob); + } + }, { + key: "dataURI", + value: function dataURI(options) { + var _this = this; + + return new Promise(function (resolve) { + var w = _this.w; + var scale = options ? options.scale || options.width / w.globals.svgWidth : 1; + + _this.cleanup(); + + var canvas = document.createElement('canvas'); + canvas.width = w.globals.svgWidth * scale; + canvas.height = parseInt(w.globals.dom.elWrap.style.height, 10) * scale; // because of resizeNonAxisCharts + + var canvasBg = w.config.chart.background === 'transparent' ? '#fff' : w.config.chart.background; + var ctx = canvas.getContext('2d'); + ctx.fillStyle = canvasBg; + ctx.fillRect(0, 0, canvas.width * scale, canvas.height * scale); + + var svgData = _this.getSvgString(scale); + + if (window.canvg && Utils$1.isIE11()) { + // use canvg as a polyfill to workaround ie11 considering a canvas with loaded svg 'unsafe' + // without ignoreClear we lose our background color; without ignoreDimensions some grid lines become invisible + var v = window.canvg.Canvg.fromString(ctx, svgData, { + ignoreClear: true, + ignoreDimensions: true + }); // render the svg to canvas + + v.start(); + var blob = canvas.msToBlob(); // dispose - missing this will cause a memory leak + + v.stop(); + resolve({ + blob: blob + }); + } else { + var svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData); + var img = new Image(); + img.crossOrigin = 'anonymous'; + + img.onload = function () { + ctx.drawImage(img, 0, 0); + + if (canvas.msToBlob) { + // IE and Edge can't navigate to data urls, so we return the blob instead + var _blob = canvas.msToBlob(); + + resolve({ + blob: _blob + }); + } else { + var imgURI = canvas.toDataURL('image/png'); + resolve({ + imgURI: imgURI + }); + } + }; + + img.src = svgUrl; + } + }); + } + }, { + key: "exportToSVG", + value: function exportToSVG() { + this.triggerDownload(this.svgUrl(), this.w.config.chart.toolbar.export.svg.filename, '.svg'); + } + }, { + key: "exportToPng", + value: function exportToPng() { + var _this2 = this; + + this.dataURI().then(function (_ref) { + var imgURI = _ref.imgURI, + blob = _ref.blob; + + if (blob) { + navigator.msSaveOrOpenBlob(blob, _this2.w.globals.chartID + '.png'); + } else { + _this2.triggerDownload(imgURI, _this2.w.config.chart.toolbar.export.png.filename, '.png'); + } + }); + } + }, { + key: "exportToCSV", + value: function exportToCSV(_ref2) { + var _this3 = this; + + var series = _ref2.series, + fileName = _ref2.fileName, + _ref2$columnDelimiter = _ref2.columnDelimiter, + columnDelimiter = _ref2$columnDelimiter === void 0 ? ',' : _ref2$columnDelimiter, + _ref2$lineDelimiter = _ref2.lineDelimiter, + lineDelimiter = _ref2$lineDelimiter === void 0 ? '\n' : _ref2$lineDelimiter; + var w = this.w; + if (!series) series = w.config.series; + var columns = []; + var rows = []; + var result = ''; + var universalBOM = "\uFEFF"; + var gSeries = w.globals.series.map(function (s, i) { + return w.globals.collapsedSeriesIndices.indexOf(i) === -1 ? s : []; + }); + + var isTimeStamp = function isTimeStamp(num) { + return w.config.xaxis.type === 'datetime' && String(num).length >= 10; + }; + + var seriesMaxDataLength = Math.max.apply(Math, _toConsumableArray(series.map(function (s) { + return s.data ? s.data.length : 0; + }))); + var dataFormat = new Data(this.ctx); + var axesUtils = new AxesUtils(this.ctx); + + var getCat = function getCat(i) { + var cat = ''; // pie / donut/ radial + + if (!w.globals.axisCharts) { + cat = w.config.labels[i]; + } else { + // xy charts + // non datetime + if (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) { + if (w.globals.isBarHorizontal) { + var lbFormatter = w.globals.yLabelFormatters[0]; + var sr = new Series(_this3.ctx); + var activeSeries = sr.getActiveConfigSeriesIndex(); + cat = lbFormatter(w.globals.labels[i], { + seriesIndex: activeSeries, + dataPointIndex: i, + w: w + }); + } else { + cat = axesUtils.getLabel(w.globals.labels, w.globals.timescaleLabels, 0, i).text; + } + } // datetime, but labels specified in categories or labels + + + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.categories.length) { + cat = w.config.xaxis.categories[i]; + } else if (w.config.labels.length) { + cat = w.config.labels[i]; + } + } + } + + if (Array.isArray(cat)) { + cat = cat.join(' '); + } + + return Utils$1.isNumber(cat) ? cat : cat.split(columnDelimiter).join(''); + }; // Fix https://github.com/apexcharts/apexcharts.js/issues/3365 + + + var getEmptyDataForCsvColumn = function getEmptyDataForCsvColumn() { + return _toConsumableArray(Array(seriesMaxDataLength)).map(function () { + return ''; + }); + }; + + var handleAxisRowsColumns = function handleAxisRowsColumns(s, sI) { + if (columns.length && sI === 0) { + // It's the first series. Go ahead and create the first row with header information. + rows.push(columns.join(columnDelimiter)); + } + + if (s.data) { + // Use the data we have, or generate a properly sized empty array with empty data if some data is missing. + s.data = s.data.length && s.data || getEmptyDataForCsvColumn(); + + for (var i = 0; i < s.data.length; i++) { + // Reset the columns array so that we can start building columns for this row. + columns = []; + var cat = getCat(i); + + if (!cat) { + if (dataFormat.isFormatXY()) { + cat = series[sI].data[i].x; + } else if (dataFormat.isFormat2DArray()) { + cat = series[sI].data[i] ? series[sI].data[i][0] : ''; + } + } + + if (sI === 0) { + // It's the first series. Also handle the category. + columns.push(isTimeStamp(cat) ? w.config.chart.toolbar.export.csv.dateFormatter(cat) : Utils$1.isNumber(cat) ? cat : cat.split(columnDelimiter).join('')); + + for (var ci = 0; ci < w.globals.series.length; ci++) { + if (dataFormat.isFormatXY()) { + columns.push(series[ci].data[i].y); + } else { + columns.push(gSeries[ci][i]); + } + } + } + + if (w.config.chart.type === 'candlestick' || s.type && s.type === 'candlestick') { + columns.pop(); + columns.push(w.globals.seriesCandleO[sI][i]); + columns.push(w.globals.seriesCandleH[sI][i]); + columns.push(w.globals.seriesCandleL[sI][i]); + columns.push(w.globals.seriesCandleC[sI][i]); + } + + if (w.config.chart.type === 'boxPlot' || s.type && s.type === 'boxPlot') { + columns.pop(); + columns.push(w.globals.seriesCandleO[sI][i]); + columns.push(w.globals.seriesCandleH[sI][i]); + columns.push(w.globals.seriesCandleM[sI][i]); + columns.push(w.globals.seriesCandleL[sI][i]); + columns.push(w.globals.seriesCandleC[sI][i]); + } + + if (w.config.chart.type === 'rangeBar') { + columns.pop(); + columns.push(w.globals.seriesRangeStart[sI][i]); + columns.push(w.globals.seriesRangeEnd[sI][i]); + } + + if (columns.length) { + rows.push(columns.join(columnDelimiter)); + } + } + } + }; + + columns.push(w.config.chart.toolbar.export.csv.headerCategory); + + if (w.config.chart.type === 'boxPlot') { + columns.push('minimum'); + columns.push('q1'); + columns.push('median'); + columns.push('q3'); + columns.push('maximum'); + } else if (w.config.chart.type === 'candlestick') { + columns.push('open'); + columns.push('high'); + columns.push('low'); + columns.push('close'); + } else if (w.config.chart.type === 'rangeBar') { + columns.push('minimum'); + columns.push('maximum'); + } else { + series.map(function (s, sI) { + var sname = s.name ? s.name : "series-".concat(sI); + + if (w.globals.axisCharts) { + columns.push(sname.split(columnDelimiter).join('') ? sname.split(columnDelimiter).join('') : "series-".concat(sI)); + } + }); + } + + if (!w.globals.axisCharts) { + columns.push(w.config.chart.toolbar.export.csv.headerValue); + rows.push(columns.join(columnDelimiter)); + } + + series.map(function (s, sI) { + if (w.globals.axisCharts) { + handleAxisRowsColumns(s, sI); + } else { + columns = []; + columns.push(w.globals.labels[sI].split(columnDelimiter).join('')); + columns.push(gSeries[sI]); + rows.push(columns.join(columnDelimiter)); + } + }); + result += rows.join(lineDelimiter); + this.triggerDownload('data:text/csv; charset=utf-8,' + encodeURIComponent(universalBOM + result), fileName ? fileName : w.config.chart.toolbar.export.csv.filename, '.csv'); + } + }, { + key: "triggerDownload", + value: function triggerDownload(href, filename, ext) { + var downloadLink = document.createElement('a'); + downloadLink.href = href; + downloadLink.download = (filename ? filename : this.w.globals.chartID) + ext; + document.body.appendChild(downloadLink); + downloadLink.click(); + document.body.removeChild(downloadLink); + } + }]); + + return Exports; + }(); + + /** + * ApexCharts XAxis Class for drawing X-Axis. + * + * @module XAxis + **/ + + var XAxis = /*#__PURE__*/function () { + function XAxis(ctx, elgrid) { + _classCallCheck(this, XAxis); + + this.ctx = ctx; + this.elgrid = elgrid; + this.w = ctx.w; + var w = this.w; + this.axesUtils = new AxesUtils(ctx); + this.xaxisLabels = w.globals.labels.slice(); + + if (w.globals.timescaleLabels.length > 0 && !w.globals.isBarHorizontal) { + // timeline labels are there and chart is not rangeabr timeline + this.xaxisLabels = w.globals.timescaleLabels.slice(); + } + + if (w.config.xaxis.overwriteCategories) { + this.xaxisLabels = w.config.xaxis.overwriteCategories; + } + + this.drawnLabels = []; + this.drawnLabelsRects = []; + + if (w.config.xaxis.position === 'top') { + this.offY = 0; + } else { + this.offY = w.globals.gridHeight + 1; + } + + this.offY = this.offY + w.config.xaxis.axisBorder.offsetY; + this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal; + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize; + this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily; + this.xaxisForeColors = w.config.xaxis.labels.style.colors; + this.xaxisBorderWidth = w.config.xaxis.axisBorder.width; + + if (this.isCategoryBarHorizontal) { + this.xaxisBorderWidth = w.config.yaxis[0].axisBorder.width.toString(); + } + + if (this.xaxisBorderWidth.indexOf('%') > -1) { + this.xaxisBorderWidth = w.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10) / 100; + } else { + this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10); + } + + this.xaxisBorderHeight = w.config.xaxis.axisBorder.height; // For bars, we will only consider single y xais, + // as we are not providing multiple yaxis for bar charts + + this.yaxis = w.config.yaxis[0]; + } + + _createClass(XAxis, [{ + key: "drawXaxis", + value: function drawXaxis() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var elXaxis = graphics.group({ + class: 'apexcharts-xaxis', + transform: "translate(".concat(w.config.xaxis.offsetX, ", ").concat(w.config.xaxis.offsetY, ")") + }); + var elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")") + }); + elXaxis.add(elXaxisTexts); + var labels = []; + + for (var i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]); + } + + this.drawXAxisLabelAndGroup(true, graphics, elXaxisTexts, labels, w.globals.isXNumeric, function (i, colWidth) { + return colWidth; + }); + + if (w.globals.hasGroups) { + var labelsGroup = w.globals.groups; + labels = []; + + for (var _i = 0; _i < labelsGroup.length; _i++) { + labels.push(labelsGroup[_i].title); + } + + var overwriteStyles = {}; + + if (w.config.xaxis.group.style) { + overwriteStyles.xaxisFontSize = w.config.xaxis.group.style.fontSize; + overwriteStyles.xaxisFontFamily = w.config.xaxis.group.style.fontFamily; + overwriteStyles.xaxisForeColors = w.config.xaxis.group.style.colors; + overwriteStyles.fontWeight = w.config.xaxis.group.style.fontWeight; + overwriteStyles.cssClass = w.config.xaxis.group.style.cssClass; + } + + this.drawXAxisLabelAndGroup(false, graphics, elXaxisTexts, labels, false, function (i, colWidth) { + return labelsGroup[i].cols * colWidth; + }, overwriteStyles); + } + + if (w.config.xaxis.title.text !== undefined) { + var elXaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title' + }); + var elXAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: this.offY + parseFloat(this.xaxisFontSize) + (w.config.xaxis.title.position === 'bottom' ? w.globals.xAxisLabelsHeight : -w.globals.xAxisLabelsHeight - 10) + w.config.xaxis.title.offsetY, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }); + elXaxisTitle.add(elXAxisTitleText); + elXaxis.add(elXaxisTitle); + } + + if (w.config.xaxis.axisBorder.show) { + var offX = w.globals.barPadForNumericAxis; + var elHorzLine = graphics.drawLine(w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX - offX, this.offY, this.xaxisBorderWidth + offX, this.offY, w.config.xaxis.axisBorder.color, 0, this.xaxisBorderHeight); + + if (this.elgrid && this.elgrid.elGridBorders) { + this.elgrid.elGridBorders.add(elHorzLine); + } else { + elXaxis.add(elHorzLine); + } + } + + return elXaxis; + } + }, { + key: "drawXAxisLabelAndGroup", + value: function drawXAxisLabelAndGroup(isLeafGroup, graphics, elXaxisTexts, labels, isXNumeric, colWidthCb) { + var _this = this; + + var overwriteStyles = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {}; + var drawnLabels = []; + var drawnLabelsRects = []; + var w = this.w; + var xaxisFontSize = overwriteStyles.xaxisFontSize || this.xaxisFontSize; + var xaxisFontFamily = overwriteStyles.xaxisFontFamily || this.xaxisFontFamily; + var xaxisForeColors = overwriteStyles.xaxisForeColors || this.xaxisForeColors; + var fontWeight = overwriteStyles.fontWeight || w.config.xaxis.labels.style.fontWeight; + var cssClass = overwriteStyles.cssClass || w.config.xaxis.labels.style.cssClass; + var colWidth; // initial x Position (keep adding column width in the loop) + + var xPos = w.globals.padHorizontal; + var labelsLen = labels.length; + /** + * labelsLen can be different (whether you are drawing x-axis labels or x-axis group labels) + * hence, we introduce dataPoints to be consistent. + * Also, in datetime/numeric xaxis, dataPoints can be misleading, so we resort to labelsLen for such xaxis type + */ + + var dataPoints = w.config.xaxis.type === 'category' ? w.globals.dataPoints : labelsLen; // when all series are collapsed, fixes #3381 + + if (dataPoints === 0 && labelsLen > dataPoints) dataPoints = labelsLen; + + if (isXNumeric) { + var len = dataPoints > 1 ? dataPoints - 1 : dataPoints; + colWidth = w.globals.gridWidth / len; + xPos = xPos + colWidthCb(0, colWidth) / 2 + w.config.xaxis.labels.offsetX; + } else { + colWidth = w.globals.gridWidth / dataPoints; + xPos = xPos + colWidthCb(0, colWidth) + w.config.xaxis.labels.offsetX; + } + + var _loop = function _loop(i) { + var x = xPos - colWidthCb(i, colWidth) / 2 + w.config.xaxis.labels.offsetX; + + if (i === 0 && labelsLen === 1 && colWidth / 2 === xPos && dataPoints === 1) { + // single datapoint + x = w.globals.gridWidth / 2; + } + + var label = _this.axesUtils.getLabel(labels, w.globals.timescaleLabels, x, i, drawnLabels, xaxisFontSize, isLeafGroup); + + var offsetYCorrection = 28; + + if (w.globals.rotateXLabels && isLeafGroup) { + offsetYCorrection = 22; + } + + if (w.config.xaxis.title.text && w.config.xaxis.position === 'top') { + offsetYCorrection += parseFloat(w.config.xaxis.title.style.fontSize) + 2; + } + + if (!isLeafGroup) { + offsetYCorrection = offsetYCorrection + parseFloat(xaxisFontSize) + (w.globals.xAxisLabelsHeight - w.globals.xAxisGroupLabelsHeight) + (w.globals.rotateXLabels ? 10 : 0); + } + + var isCategoryTickAmounts = typeof w.config.xaxis.tickAmount !== 'undefined' && w.config.xaxis.tickAmount !== 'dataPoints' && w.config.xaxis.type !== 'datetime'; + + if (isCategoryTickAmounts) { + label = _this.axesUtils.checkLabelBasedOnTickamount(i, label, labelsLen); + } else { + label = _this.axesUtils.checkForOverflowingLabels(i, label, labelsLen, drawnLabels, drawnLabelsRects); + } + + var getCatForeColor = function getCatForeColor() { + return isLeafGroup && w.config.xaxis.convertedCatToNumeric ? xaxisForeColors[w.globals.minX + i - 1] : xaxisForeColors[i]; + }; + + if (isLeafGroup && label.text) { + w.globals.xaxisLabelsCount++; + } + + if (w.config.xaxis.labels.show) { + var elText = graphics.drawText({ + x: label.x, + y: _this.offY + w.config.xaxis.labels.offsetY + offsetYCorrection - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0), + text: label.text, + textAnchor: 'middle', + fontWeight: label.isBold ? 600 : fontWeight, + fontSize: xaxisFontSize, + fontFamily: xaxisFontFamily, + foreColor: Array.isArray(xaxisForeColors) ? getCatForeColor() : xaxisForeColors, + isPlainText: false, + cssClass: (isLeafGroup ? 'apexcharts-xaxis-label ' : 'apexcharts-xaxis-group-label ') + cssClass + }); + elXaxisTexts.add(elText); + elText.on('click', function (e) { + if (typeof w.config.chart.events.xAxisLabelClick === 'function') { + var opts = Object.assign({}, w, { + labelIndex: i + }); + w.config.chart.events.xAxisLabelClick(e, _this.ctx, opts); + } + }); + + if (isLeafGroup) { + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(label.text) ? label.text.join(' ') : label.text; + elText.node.appendChild(elTooltipTitle); + + if (label.text !== '') { + drawnLabels.push(label.text); + drawnLabelsRects.push(label); + } + } + } + + if (i < labelsLen - 1) { + xPos = xPos + colWidthCb(i + 1, colWidth); + } + }; + + for (var i = 0; i <= labelsLen - 1; i++) { + _loop(i); + } + } // this actually becomes the vertical axis (for bar charts) + + }, { + key: "drawXaxisInversed", + value: function drawXaxisInversed(realIndex) { + var _this2 = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var translateYAxisX = w.config.yaxis[0].opposite ? w.globals.translateYAxisX[realIndex] : 0; + var elYaxis = graphics.group({ + class: 'apexcharts-yaxis apexcharts-xaxis-inversed', + rel: realIndex + }); + var elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g', + transform: 'translate(' + translateYAxisX + ', 0)' + }); + elYaxis.add(elYaxisTexts); + var colHeight; // initial x Position (keep adding column width in the loop) + + var yPos; + var labels = []; + + if (w.config.yaxis[realIndex].show) { + for (var i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]); + } + } + + colHeight = w.globals.gridHeight / labels.length; + yPos = -(colHeight / 2.2); + var lbFormatter = w.globals.yLabelFormatters[0]; + var ylabels = w.config.yaxis[0].labels; + + if (ylabels.show) { + var _loop2 = function _loop2(_i2) { + var label = typeof labels[_i2] === 'undefined' ? '' : labels[_i2]; + label = lbFormatter(label, { + seriesIndex: realIndex, + dataPointIndex: _i2, + w: w + }); + + var yColors = _this2.axesUtils.getYAxisForeColor(ylabels.style.colors, realIndex); + + var getForeColor = function getForeColor() { + return Array.isArray(yColors) ? yColors[_i2] : yColors; + }; + + var multiY = 0; + + if (Array.isArray(label)) { + multiY = label.length / 2 * parseInt(ylabels.style.fontSize, 10); + } + + var elLabel = graphics.drawText({ + x: ylabels.offsetX - 15, + y: yPos + colHeight + ylabels.offsetY - multiY, + text: label, + textAnchor: _this2.yaxis.opposite ? 'start' : 'end', + foreColor: getForeColor(), + fontSize: ylabels.style.fontSize, + fontFamily: ylabels.style.fontFamily, + fontWeight: ylabels.style.fontWeight, + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass, + maxWidth: ylabels.maxWidth + }); + elYaxisTexts.add(elLabel); + elLabel.on('click', function (e) { + if (typeof w.config.chart.events.xAxisLabelClick === 'function') { + var opts = Object.assign({}, w, { + labelIndex: _i2 + }); + w.config.chart.events.xAxisLabelClick(e, _this2.ctx, opts); + } + }); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(label) ? label.join(' ') : label; + elLabel.node.appendChild(elTooltipTitle); + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + var labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node); + elLabel.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " 0 ").concat(labelRotatingCenter.y, ")")); + } + + yPos = yPos + colHeight; + }; + + for (var _i2 = 0; _i2 <= labels.length - 1; _i2++) { + _loop2(_i2); + } + } + + if (w.config.yaxis[0].title.text !== undefined) { + var elXaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed', + transform: 'translate(' + translateYAxisX + ', 0)' + }); + var elXAxisTitleText = graphics.drawText({ + x: w.config.yaxis[0].title.offsetX, + y: w.globals.gridHeight / 2 + w.config.yaxis[0].title.offsetY, + text: w.config.yaxis[0].title.text, + textAnchor: 'middle', + foreColor: w.config.yaxis[0].title.style.color, + fontSize: w.config.yaxis[0].title.style.fontSize, + fontWeight: w.config.yaxis[0].title.style.fontWeight, + fontFamily: w.config.yaxis[0].title.style.fontFamily, + cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[0].title.style.cssClass + }); + elXaxisTitle.add(elXAxisTitleText); + elYaxis.add(elXaxisTitle); + } + + var offX = 0; + + if (this.isCategoryBarHorizontal && w.config.yaxis[0].opposite) { + offX = w.globals.gridWidth; + } + + var axisBorder = w.config.xaxis.axisBorder; + + if (axisBorder.show) { + var elVerticalLine = graphics.drawLine(w.globals.padHorizontal + axisBorder.offsetX + offX, 1 + axisBorder.offsetY, w.globals.padHorizontal + axisBorder.offsetX + offX, w.globals.gridHeight + axisBorder.offsetY, axisBorder.color, 0); + + if (this.elgrid && this.elgrid.elGridBorders) { + this.elgrid.elGridBorders.add(elVerticalLine); + } else { + elYaxis.add(elVerticalLine); + } + } + + if (w.config.yaxis[0].axisTicks.show) { + this.axesUtils.drawYAxisTicks(offX, labels.length, w.config.yaxis[0].axisBorder, w.config.yaxis[0].axisTicks, 0, colHeight, elYaxis); + } + + return elYaxis; + } + }, { + key: "drawXaxisTicks", + value: function drawXaxisTicks(x1, y2, appendToElement) { + var w = this.w; + var x2 = x1; + if (x1 < 0 || x1 - 2 > w.globals.gridWidth) return; + var y1 = this.offY + w.config.xaxis.axisTicks.offsetY; + y2 = y2 + y1 + w.config.xaxis.axisTicks.height; + + if (w.config.xaxis.position === 'top') { + y2 = y1 - w.config.xaxis.axisTicks.height; + } + + if (w.config.xaxis.axisTicks.show) { + var graphics = new Graphics(this.ctx); + var line = graphics.drawLine(x1 + w.config.xaxis.axisTicks.offsetX, y1 + w.config.xaxis.offsetY, x2 + w.config.xaxis.axisTicks.offsetX, y2 + w.config.xaxis.offsetY, w.config.xaxis.axisTicks.color); // we are not returning anything, but appending directly to the element passed in param + + appendToElement.add(line); + line.node.classList.add('apexcharts-xaxis-tick'); + } + } + }, { + key: "getXAxisTicksPositions", + value: function getXAxisTicksPositions() { + var w = this.w; + var xAxisTicksPositions = []; + var xCount = this.xaxisLabels.length; + var x1 = w.globals.padHorizontal; + + if (w.globals.timescaleLabels.length > 0) { + for (var i = 0; i < xCount; i++) { + x1 = this.xaxisLabels[i].position; + xAxisTicksPositions.push(x1); + } + } else { + var xCountForCategoryCharts = xCount; + + for (var _i3 = 0; _i3 < xCountForCategoryCharts; _i3++) { + var x1Count = xCountForCategoryCharts; + + if (w.globals.isXNumeric && w.config.chart.type !== 'bar') { + x1Count -= 1; + } + + x1 = x1 + w.globals.gridWidth / x1Count; + xAxisTicksPositions.push(x1); + } + } + + return xAxisTicksPositions; + } // to rotate x-axis labels or to put ... for longer text in xaxis + + }, { + key: "xAxisLabelCorrections", + value: function xAxisLabelCorrections() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g'); + var xAxisTexts = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)'); + var yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxis-inversed text'); + var xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll('.apexcharts-xaxis-inversed-texts-g text tspan'); + + if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) { + for (var xat = 0; xat < xAxisTexts.length; xat++) { + var textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]); + textRotatingCenter.y = textRotatingCenter.y - 1; // + tickWidth/4; + + textRotatingCenter.x = textRotatingCenter.x + 1; + xAxisTexts[xat].setAttribute('transform', "rotate(".concat(w.config.xaxis.labels.rotate, " ").concat(textRotatingCenter.x, " ").concat(textRotatingCenter.y, ")")); + xAxisTexts[xat].setAttribute('text-anchor', "end"); + var offsetHeight = 10; + xAxis.setAttribute('transform', "translate(0, ".concat(-offsetHeight, ")")); + var tSpan = xAxisTexts[xat].childNodes; + + if (w.config.xaxis.labels.trim) { + Array.prototype.forEach.call(tSpan, function (ts) { + graphics.placeTextWithEllipsis(ts, ts.textContent, w.globals.xAxisLabelsHeight - (w.config.legend.position === 'bottom' ? 20 : 10)); + }); + } + } + } else { + (function () { + var width = w.globals.gridWidth / (w.globals.labels.length + 1); + + for (var _xat = 0; _xat < xAxisTexts.length; _xat++) { + var _tSpan = xAxisTexts[_xat].childNodes; + + if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') { + Array.prototype.forEach.call(_tSpan, function (ts) { + graphics.placeTextWithEllipsis(ts, ts.textContent, width); + }); + } + } + })(); + } + + if (yAxisTextsInversed.length > 0) { + // truncate rotated y axis in bar chart (x axis) + var firstLabelPosX = yAxisTextsInversed[yAxisTextsInversed.length - 1].getBBox(); + var lastLabelPosX = yAxisTextsInversed[0].getBBox(); + + if (firstLabelPosX.x < -20) { + yAxisTextsInversed[yAxisTextsInversed.length - 1].parentNode.removeChild(yAxisTextsInversed[yAxisTextsInversed.length - 1]); + } + + if (lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth && !w.globals.isBarHorizontal) { + yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]); + } // truncate rotated x axis in bar chart (y axis) + + + for (var _xat2 = 0; _xat2 < xAxisTextsInversed.length; _xat2++) { + graphics.placeTextWithEllipsis(xAxisTextsInversed[_xat2], xAxisTextsInversed[_xat2].textContent, w.config.yaxis[0].labels.maxWidth - (w.config.yaxis[0].title.text ? parseFloat(w.config.yaxis[0].title.style.fontSize) * 2 : 0) - 15); + } + } + } // renderXAxisBands() { + // let w = this.w; + // let plotBand = document.createElementNS(w.globals.SVGNS, 'rect') + // w.globals.dom.elGraphical.add(plotBand) + // } + + }]); + + return XAxis; + }(); + + /** + * ApexCharts Grid Class for drawing Cartesian Grid. + * + * @module Grid + **/ + + var Grid = /*#__PURE__*/function () { + function Grid(ctx) { + _classCallCheck(this, Grid); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.xaxisLabels = w.globals.labels.slice(); + this.axesUtils = new AxesUtils(ctx); + this.isRangeBar = w.globals.seriesRange.length; + + if (w.globals.timescaleLabels.length > 0) { + // timescaleLabels labels are there + this.xaxisLabels = w.globals.timescaleLabels.slice(); + } + } // when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well + + + _createClass(Grid, [{ + key: "drawGridArea", + value: function drawGridArea() { + var elGrid = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (elGrid === null) { + elGrid = graphics.group({ + class: 'apexcharts-grid' + }); + } + + var elVerticalLine = graphics.drawLine(w.globals.padHorizontal, 1, w.globals.padHorizontal, w.globals.gridHeight, 'transparent'); + var elHorzLine = graphics.drawLine(w.globals.padHorizontal, w.globals.gridHeight, w.globals.gridWidth, w.globals.gridHeight, 'transparent'); + elGrid.add(elHorzLine); + elGrid.add(elVerticalLine); + return elGrid; + } + }, { + key: "drawGrid", + value: function drawGrid() { + var gl = this.w.globals; + var elgrid = null; + + if (gl.axisCharts) { + // grid is drawn after xaxis and yaxis are drawn + elgrid = this.renderGrid(); + this.drawGridArea(elgrid.el); + } + + return elgrid; + } // This mask will clip off overflowing graphics from the drawable area + + }, { + key: "createGridMask", + value: function createGridMask() { + var w = this.w; + var gl = w.globals; + var graphics = new Graphics(this.ctx); + var strokeSize = Array.isArray(w.config.stroke.width) ? 0 : w.config.stroke.width; + + if (Array.isArray(w.config.stroke.width)) { + var strokeMaxSize = 0; + w.config.stroke.width.forEach(function (m) { + strokeMaxSize = Math.max(strokeMaxSize, m); + }); + strokeSize = strokeMaxSize; + } + + gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elGridRectMask.setAttribute('id', "gridRectMask".concat(gl.cuid)); + gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elGridRectMarkerMask.setAttribute('id', "gridRectMarkerMask".concat(gl.cuid)); + gl.dom.elForecastMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elForecastMask.setAttribute('id', "forecastMask".concat(gl.cuid)); + gl.dom.elNonForecastMask = document.createElementNS(gl.SVGNS, 'clipPath'); + gl.dom.elNonForecastMask.setAttribute('id', "nonForecastMask".concat(gl.cuid)); // let barHalfWidth = 0 + + var type = w.config.chart.type; + var hasBar = type === 'bar' || type === 'rangeBar' || type === 'candlestick' || type === 'boxPlot' || w.globals.comboBarCount > 0; + var barWidthLeft = 0; + var barWidthRight = 0; + + if (hasBar && w.globals.isXNumeric && !w.globals.isBarHorizontal) { + barWidthLeft = w.config.grid.padding.left; + barWidthRight = w.config.grid.padding.right; + + if (gl.barPadForNumericAxis > barWidthLeft) { + barWidthLeft = gl.barPadForNumericAxis; + barWidthRight = gl.barPadForNumericAxis; + } + } + + gl.dom.elGridRect = graphics.drawRect(-strokeSize / 2 - barWidthLeft - 2, -strokeSize / 2, gl.gridWidth + strokeSize + barWidthRight + barWidthLeft + 4, gl.gridHeight + strokeSize, 0, '#fff'); + var markerSize = w.globals.markers.largestSize + 1; + gl.dom.elGridRectMarker = graphics.drawRect(-markerSize * 2, -markerSize * 2, gl.gridWidth + markerSize * 4, gl.gridHeight + markerSize * 4, 0, '#fff'); + gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node); + gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node); + var defs = gl.dom.baseEl.querySelector('defs'); + defs.appendChild(gl.dom.elGridRectMask); + defs.appendChild(gl.dom.elForecastMask); + defs.appendChild(gl.dom.elNonForecastMask); + defs.appendChild(gl.dom.elGridRectMarkerMask); + } + }, { + key: "_drawGridLines", + value: function _drawGridLines(_ref) { + var i = _ref.i, + x1 = _ref.x1, + y1 = _ref.y1, + x2 = _ref.x2, + y2 = _ref.y2, + xCount = _ref.xCount, + parent = _ref.parent; + var w = this.w; + + var shouldDraw = function shouldDraw() { + if (i === 0 && w.globals.skipFirstTimelinelabel) { + return false; + } + + if (i === xCount - 1 && w.globals.skipLastTimelinelabel && !w.config.xaxis.labels.formatter) { + return false; + } + + if (w.config.chart.type === 'radar') { + return false; + } + + return true; + }; + + if (shouldDraw()) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: parent + }); + } + + var y_2 = 0; + + if (w.globals.hasGroups && w.config.xaxis.tickPlacement === 'between') { + var groups = w.globals.groups; + + if (groups) { + var gacc = 0; + + for (var gi = 0; gacc < i && gi < groups.length; gi++) { + gacc += groups[gi].cols; + } + + if (gacc === i) { + y_2 = w.globals.xAxisLabelsHeight * 0.6; + } + } + } + + var xAxis = new XAxis(this.ctx); + xAxis.drawXaxisTicks(x1, y_2, w.globals.dom.elGraphical); + } + } + }, { + key: "_drawGridLine", + value: function _drawGridLine(_ref2) { + var i = _ref2.i, + x1 = _ref2.x1, + y1 = _ref2.y1, + x2 = _ref2.x2, + y2 = _ref2.y2, + xCount = _ref2.xCount, + parent = _ref2.parent; + var w = this.w; + var excludeBorders = false; + var isHorzLine = parent.node.classList.contains('apexcharts-gridlines-horizontal'); + var strokeDashArray = w.config.grid.strokeDashArray; + var offX = w.globals.barPadForNumericAxis; + + if (y1 === 0 && y2 === 0 || x1 === 0 && x2 === 0) { + excludeBorders = true; + } + + if (y1 === w.globals.gridHeight && y2 === w.globals.gridHeight) { + excludeBorders = true; + } + + if (w.globals.isBarHorizontal && (i === 0 || i === xCount - 1)) { + excludeBorders = true; + } + + var graphics = new Graphics(this); + var line = graphics.drawLine(x1 - (isHorzLine ? offX : 0), y1, x2 + (isHorzLine ? offX : 0), y2, w.config.grid.borderColor, strokeDashArray); + line.node.classList.add('apexcharts-gridline'); + + if (excludeBorders) { + this.elGridBorders.add(line); + } else { + parent.add(line); + } + } + }, { + key: "_drawGridBandRect", + value: function _drawGridBandRect(_ref3) { + var c = _ref3.c, + x1 = _ref3.x1, + y1 = _ref3.y1, + x2 = _ref3.x2, + y2 = _ref3.y2, + type = _ref3.type; + var w = this.w; + var graphics = new Graphics(this.ctx); + var offX = w.globals.barPadForNumericAxis; + if (type === 'column' && w.config.xaxis.type === 'datetime') return; + var color = w.config.grid[type].colors[c]; + var rect = graphics.drawRect(x1 - (type === 'row' ? offX : 0), y1, x2 + (type === 'row' ? offX * 2 : 0), y2, 0, color, w.config.grid[type].opacity); + this.elg.add(rect); + rect.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + rect.node.classList.add("apexcharts-grid-".concat(type)); + } + }, { + key: "_drawXYLines", + value: function _drawXYLines(_ref4) { + var _this = this; + + var xCount = _ref4.xCount, + tickAmount = _ref4.tickAmount; + var w = this.w; + + var datetimeLines = function datetimeLines(_ref5) { + var xC = _ref5.xC, + x1 = _ref5.x1, + y1 = _ref5.y1, + x2 = _ref5.x2, + y2 = _ref5.y2; + + for (var i = 0; i < xC; i++) { + x1 = _this.xaxisLabels[i].position; + x2 = _this.xaxisLabels[i].position; + + _this._drawGridLines({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: _this.elgridLinesV + }); + } + }; + + var categoryLines = function categoryLines(_ref6) { + var xC = _ref6.xC, + x1 = _ref6.x1, + y1 = _ref6.y1, + x2 = _ref6.x2, + y2 = _ref6.y2; + + if (typeof w.config.xaxis.tickAmount !== 'undefined' && w.config.xaxis.tickAmount !== 'dataPoints' && w.config.xaxis.tickPlacement === 'on') { + // user has specified tickamount in a category x-axis chart + var visibleLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-text.apexcharts-xaxis-label tspan:not(:empty)'); + visibleLabels.forEach(function (d, i) { + var textRect = d.getBBox(); + + _this._drawGridLines({ + i: i, + x1: textRect.x + textRect.width / 2, + y1: y1, + x2: textRect.x + textRect.width / 2, + y2: y2, + xCount: xCount, + parent: _this.elgridLinesV + }); + }); + } else { + for (var i = 0; i < xC + (w.globals.isXNumeric ? 0 : 1); i++) { + if (i === 0 && xC === 1 && w.globals.dataPoints === 1) { + // single datapoint + x1 = w.globals.gridWidth / 2; + x2 = x1; + } + + _this._drawGridLines({ + i: i, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + xCount: xCount, + parent: _this.elgridLinesV + }); + + x1 = x1 + w.globals.gridWidth / (w.globals.isXNumeric ? xC - 1 : xC); + x2 = x1; + } + } + }; // draw vertical lines + + + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + var x1 = w.globals.padHorizontal; + var y1 = 0; + var x2; + var y2 = w.globals.gridHeight; + + if (w.globals.timescaleLabels.length) { + datetimeLines({ + xC: xCount, + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + } else { + if (w.globals.isXNumeric) { + xCount = w.globals.xAxisScale.result.length; + } + + if (w.config.xaxis.convertedCatToNumeric) { + // in case of a convertedCatToNumeric, some labels might be skipped due to hideOverLapping labels, hence use this var to get the visible ticks + xCount = w.globals.xaxisLabelsCount; + } + + categoryLines({ + xC: xCount, + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + } + } // draw horizontal lines + + + if (w.config.grid.yaxis.lines.show) { + var _x = 0; + var _y = 0; + var _y2 = 0; + var _x2 = w.globals.gridWidth; + var tA = tickAmount + 1; + + if (this.isRangeBar) { + tA = w.globals.labels.length; + } + + for (var i = 0; i < tA + (this.isRangeBar ? 1 : 0); i++) { + this._drawGridLine({ + i: i, + xCount: tA + (this.isRangeBar ? 1 : 0), + x1: _x, + y1: _y, + x2: _x2, + y2: _y2, + parent: this.elgridLinesH + }); + + _y = _y + w.globals.gridHeight / (this.isRangeBar ? tA : tickAmount); + _y2 = _y; + } + } + } + }, { + key: "_drawInvertedXYLines", + value: function _drawInvertedXYLines(_ref7) { + var xCount = _ref7.xCount; + var w = this.w; // draw vertical lines + + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + var x1 = w.globals.padHorizontal; + var y1 = 0; + var x2; + var y2 = w.globals.gridHeight; + + for (var i = 0; i < xCount + 1; i++) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ + i: i, + xCount: xCount + 1, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + parent: this.elgridLinesV + }); + } + + var xAxis = new XAxis(this.ctx); + xAxis.drawXaxisTicks(x1, 0, w.globals.dom.elGraphical); + x1 = x1 + w.globals.gridWidth / xCount + 0.3; + x2 = x1; + } + } // draw horizontal lines + + + if (w.config.grid.yaxis.lines.show) { + var _x3 = 0; + var _y3 = 0; + var _y4 = 0; + var _x4 = w.globals.gridWidth; + + for (var _i = 0; _i < w.globals.dataPoints + 1; _i++) { + this._drawGridLine({ + i: _i, + xCount: w.globals.dataPoints + 1, + x1: _x3, + y1: _y3, + x2: _x4, + y2: _y4, + parent: this.elgridLinesH + }); + + _y3 = _y3 + w.globals.gridHeight / w.globals.dataPoints; + _y4 = _y3; + } + } + } // actual grid rendering + + }, { + key: "renderGrid", + value: function renderGrid() { + var w = this.w; + var graphics = new Graphics(this.ctx); + this.elg = graphics.group({ + class: 'apexcharts-grid' + }); + this.elgridLinesH = graphics.group({ + class: 'apexcharts-gridlines-horizontal' + }); + this.elgridLinesV = graphics.group({ + class: 'apexcharts-gridlines-vertical' + }); + this.elGridBorders = graphics.group({ + class: 'apexcharts-grid-borders' + }); + this.elg.add(this.elgridLinesH); + this.elg.add(this.elgridLinesV); + + if (!w.config.grid.show) { + this.elgridLinesV.hide(); + this.elgridLinesH.hide(); + this.elGridBorders.hide(); + } + + var yTickAmount = w.globals.yAxisScale.length ? w.globals.yAxisScale[0].result.length - 1 : 5; + + for (var i = 0; i < w.globals.series.length; i++) { + if (typeof w.globals.yAxisScale[i] !== 'undefined') { + yTickAmount = w.globals.yAxisScale[i].result.length - 1; + } + + if (yTickAmount > 2) break; + } + + var xCount; + + if (!w.globals.isBarHorizontal || this.isRangeBar) { + xCount = this.xaxisLabels.length; + + if (this.isRangeBar) { + yTickAmount = w.globals.labels.length; + + if (w.config.xaxis.tickAmount && w.config.xaxis.labels.formatter) { + xCount = w.config.xaxis.tickAmount; + } + } + + this._drawXYLines({ + xCount: xCount, + tickAmount: yTickAmount + }); + } else { + xCount = yTickAmount; // for horizontal bar chart, get the xaxis tickamount + + yTickAmount = w.globals.xTickAmount; + + this._drawInvertedXYLines({ + xCount: xCount, + tickAmount: yTickAmount + }); + } + + this.drawGridBands(xCount, yTickAmount); + return { + el: this.elg, + elGridBorders: this.elGridBorders, + xAxisTickWidth: w.globals.gridWidth / xCount + }; + } + }, { + key: "drawGridBands", + value: function drawGridBands(xCount, tickAmount) { + var w = this.w; // rows background bands + + if (w.config.grid.row.colors !== undefined && w.config.grid.row.colors.length > 0) { + var x1 = 0; + var y1 = 0; + var y2 = w.globals.gridHeight / tickAmount; + var x2 = w.globals.gridWidth; + + for (var i = 0, c = 0; i < tickAmount; i++, c++) { + if (c >= w.config.grid.row.colors.length) { + c = 0; + } + + this._drawGridBandRect({ + c: c, + x1: x1, + y1: y1, + x2: x2, + y2: y2, + type: 'row' + }); + + y1 = y1 + w.globals.gridHeight / tickAmount; + } + } // columns background bands + + + if (w.config.grid.column.colors !== undefined && w.config.grid.column.colors.length > 0) { + var xc = !w.globals.isBarHorizontal && (w.config.xaxis.type === 'category' || w.config.xaxis.convertedCatToNumeric) ? xCount - 1 : xCount; + var _x5 = w.globals.padHorizontal; + var _y5 = 0; + + var _x6 = w.globals.padHorizontal + w.globals.gridWidth / xc; + + var _y6 = w.globals.gridHeight; + + for (var _i2 = 0, _c = 0; _i2 < xCount; _i2++, _c++) { + if (_c >= w.config.grid.column.colors.length) { + _c = 0; + } + + this._drawGridBandRect({ + c: _c, + x1: _x5, + y1: _y5, + x2: _x6, + y2: _y6, + type: 'column' + }); + + _x5 = _x5 + w.globals.gridWidth / xc; + } + } + } + }]); + + return Grid; + }(); + + var Range$1 = /*#__PURE__*/function () { + function Range(ctx) { + _classCallCheck(this, Range); + + this.ctx = ctx; + this.w = ctx.w; + } // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss + // This routine creates the Y axis values for a graph. + + + _createClass(Range, [{ + key: "niceScale", + value: function niceScale(yMin, yMax) { + var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; + var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; + var NO_MIN_MAX_PROVIDED = arguments.length > 4 ? arguments[4] : undefined; + var w = this.w; // Determine Range + + var range = Math.abs(yMax - yMin); + ticks = this._adjustTicksForSmallRange(ticks, index, range); + + if (ticks === 'dataPoints') { + ticks = w.globals.dataPoints - 1; + } + + if (yMin === Number.MIN_VALUE && yMax === 0 || !Utils$1.isNumber(yMin) && !Utils$1.isNumber(yMax) || yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) { + // when all values are 0 + yMin = 0; + yMax = ticks; + var linearScale = this.linearScale(yMin, yMax, ticks); + return linearScale; + } + + if (yMin > yMax) { + // if somehow due to some wrong config, user sent max less than min, + // adjust the min/max again + console.warn('axis.min cannot be greater than axis.max'); + yMax = yMin + 0.1; + } else if (yMin === yMax) { + // If yMin and yMax are identical, then + // adjust the yMin and yMax values to actually + // make a graph. Also avoids division by zero errors. + yMin = yMin === 0 ? 0 : yMin - 0.5; // some small value + + yMax = yMax === 0 ? 2 : yMax + 0.5; // some small value + } // Calculate Min amd Max graphical labels and graph + // increments. The number of ticks defaults to + // 10 which is the SUGGESTED value. Any tick value + // entered is used as a suggested value which is + // adjusted to be a 'pretty' value. + // + // Output will be an array of the Y axis values that + // encompass the Y values. + + + var result = []; + + if (range < 1 && NO_MIN_MAX_PROVIDED && (w.config.chart.type === 'candlestick' || w.config.series[index].type === 'candlestick' || w.config.chart.type === 'boxPlot' || w.config.series[index].type === 'boxPlot' || w.globals.isRangeData)) { + /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */ + yMax = yMax * 1.01; + } + + var tiks = ticks + 1; // Adjust ticks if needed + + if (tiks < 2) { + tiks = 2; + } else if (tiks > 2) { + tiks -= 2; + } // Get raw step value + + + var tempStep = range / tiks; // Calculate pretty step value + + var mag = Math.floor(Utils$1.log10(tempStep)); + var magPow = Math.pow(10, mag); + var magMsd = Math.round(tempStep / magPow); + + if (magMsd < 1) { + magMsd = 1; + } + + var stepSize = magMsd * magPow; // build Y label array. + // Lower and upper bounds calculations + + var lb = stepSize * Math.floor(yMin / stepSize); + var ub = stepSize * Math.ceil(yMax / stepSize); // Build array + + var val = lb; + + if (NO_MIN_MAX_PROVIDED && range > 2) { + while (1) { + result.push(val); + val += stepSize; + + if (val > ub) { + break; + } + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } else { + result = []; + var v = yMin; + result.push(v); + var valuesDivider = Math.abs(yMax - yMin) / ticks; + + for (var i = 0; i <= ticks; i++) { + v = v + valuesDivider; + result.push(v); + } + + if (result[result.length - 2] >= yMax) { + result.pop(); + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } + } + }, { + key: "linearScale", + value: function linearScale(yMin, yMax) { + var ticks = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; + var index = arguments.length > 3 ? arguments[3] : undefined; + var range = Math.abs(yMax - yMin); + ticks = this._adjustTicksForSmallRange(ticks, index, range); + + if (ticks === 'dataPoints') { + ticks = this.w.globals.dataPoints - 1; + } + + var step = range / ticks; + + if (ticks === Number.MAX_VALUE) { + ticks = 10; + step = 1; + } + + var result = []; + var v = yMin; + + while (ticks >= 0) { + result.push(v); + v = v + step; + ticks -= 1; + } + + return { + result: result, + niceMin: result[0], + niceMax: result[result.length - 1] + }; + } + }, { + key: "logarithmicScaleNice", + value: function logarithmicScaleNice(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base); + if (yMin <= 0) yMin = Math.min(yMax, base); + var logs = []; + var logMax = Math.ceil(Math.log(yMax) / Math.log(base) + 1); // Get powers of base for our max and min + + var logMin = Math.floor(Math.log(yMin) / Math.log(base)); + + for (var i = logMin; i < logMax; i++) { + logs.push(Math.pow(base, i)); + } + + return { + result: logs, + niceMin: logs[0], + niceMax: logs[logs.length - 1] + }; + } + }, { + key: "logarithmicScale", + value: function logarithmicScale(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base); + if (yMin <= 0) yMin = Math.min(yMax, base); + var logs = []; // Get the logarithmic range. + + var logMax = Math.log(yMax) / Math.log(base); + var logMin = Math.log(yMin) / Math.log(base); // Get the exact logarithmic range. + // (This is the exact number of multiples of the base there are between yMin and yMax). + + var logRange = logMax - logMin; // Round the logarithmic range to get the number of ticks we will create. + // If the chosen min/max values are multiples of each other WRT the base, this will be neat. + // If the chosen min/max aren't, we will at least still provide USEFUL ticks. + + var ticks = Math.round(logRange); // Get the logarithmic spacing between ticks. + + var logTickSpacing = logRange / ticks; // Create as many ticks as there is range in the logs. + + for (var i = 0, logTick = logMin; i < ticks; i++, logTick += logTickSpacing) { + logs.push(Math.pow(base, logTick)); + } // Add a final tick at the yMax. + + + logs.push(Math.pow(base, logMax)); + return { + result: logs, + niceMin: yMin, + niceMax: yMax + }; + } + }, { + key: "_adjustTicksForSmallRange", + value: function _adjustTicksForSmallRange(ticks, index, range) { + var newTicks = ticks; + + if (typeof index !== 'undefined' && this.w.config.yaxis[index].labels.formatter && this.w.config.yaxis[index].tickAmount === undefined) { + var formattedVal = this.w.config.yaxis[index].labels.formatter(1); + + if (Utils$1.isNumber(Number(formattedVal)) && !Utils$1.isFloat(formattedVal)) { + newTicks = Math.ceil(range); + } + } + + return newTicks < ticks ? newTicks : ticks; + } + }, { + key: "setYScaleForIndex", + value: function setYScaleForIndex(index, minY, maxY) { + var gl = this.w.globals; + var cnf = this.w.config; + var y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index]; + + if (typeof gl.yAxisScale[index] === 'undefined') { + gl.yAxisScale[index] = []; + } + + var diff = Math.abs(maxY - minY); + + if (y.logarithmic && diff <= 5) { + gl.invalidLogScale = true; + } + + if (y.logarithmic && diff > 5) { + gl.allSeriesCollapsed = false; + gl.yAxisScale[index] = this.logarithmicScale(minY, maxY, y.logBase); + gl.yAxisScale[index] = y.forceNiceScale ? this.logarithmicScaleNice(minY, maxY, y.logBase) : this.logarithmicScale(minY, maxY, y.logBase); + } else { + if (maxY === -Number.MAX_VALUE || !Utils$1.isNumber(maxY)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.yAxisScale[index] = this.linearScale(0, 5, 5); + } else { + // there is some data. Turn off the allSeriesCollapsed flag + gl.allSeriesCollapsed = false; + + if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) { + // fix https://github.com/apexcharts/apexcharts.js/issues/492 + gl.yAxisScale[index] = this.linearScale(minY, maxY, y.tickAmount, index); + } else { + var noMinMaxProvided = cnf.yaxis[index].max === undefined && cnf.yaxis[index].min === undefined || cnf.yaxis[index].forceNiceScale; + gl.yAxisScale[index] = this.niceScale(minY, maxY, y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, index, // fix https://github.com/apexcharts/apexcharts.js/issues/397 + noMinMaxProvided); + } + } + } + } + }, { + key: "setXScale", + value: function setXScale(minX, maxX) { + var w = this.w; + var gl = w.globals; + var x = w.config.xaxis; + var diff = Math.abs(maxX - minX); + + if (maxX === -Number.MAX_VALUE || !Utils$1.isNumber(maxX)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.xAxisScale = this.linearScale(0, 5, 5); + } else { + gl.xAxisScale = this.linearScale(minX, maxX, x.tickAmount ? x.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, 0); + } + + return gl.xAxisScale; + } + }, { + key: "setMultipleYScales", + value: function setMultipleYScales() { + var _this = this; + + var gl = this.w.globals; + var cnf = this.w.config; + var minYArr = gl.minYArr.concat([]); + var maxYArr = gl.maxYArr.concat([]); + var scalesIndices = []; // here, we loop through the yaxis array and find the item which has "seriesName" property + + cnf.yaxis.forEach(function (yaxe, i) { + var index = i; + cnf.series.forEach(function (s, si) { + // if seriesName matches and that series is not collapsed, we use that scale + // fix issue #1215 + // proceed even if si is in gl.collapsedSeriesIndices + if (s.name === yaxe.seriesName) { + index = si; + + if (i !== si) { + scalesIndices.push({ + index: si, + similarIndex: i, + alreadyExists: true + }); + } else { + scalesIndices.push({ + index: si + }); + } + } + }); + var minY = minYArr[index]; + var maxY = maxYArr[index]; + + _this.setYScaleForIndex(i, minY, maxY); + }); + this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices); + } + }, { + key: "sameScaleInMultipleAxes", + value: function sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) { + var _this2 = this; + + var cnf = this.w.config; + var gl = this.w.globals; // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales + + var similarIndices = []; + scalesIndices.forEach(function (scale) { + if (scale.alreadyExists) { + if (typeof similarIndices[scale.index] === 'undefined') { + similarIndices[scale.index] = []; + } + + similarIndices[scale.index].push(scale.index); + similarIndices[scale.index].push(scale.similarIndex); + } + }); + + function intersect(a, b) { + return a.filter(function (value) { + return b.indexOf(value) !== -1; + }); + } + + gl.yAxisSameScaleIndices = similarIndices; + similarIndices.forEach(function (si, i) { + similarIndices.forEach(function (sj, j) { + if (i !== j) { + if (intersect(si, sj).length > 0) { + similarIndices[i] = similarIndices[i].concat(similarIndices[j]); + } + } + }); + }); // then, we remove duplicates from the similarScale array + + var uniqueSimilarIndices = similarIndices.map(function (item) { + return item.filter(function (i, pos) { + return item.indexOf(i) === pos; + }); + }); // sort further to remove whole duplicate arrays later + + var sortedIndices = uniqueSimilarIndices.map(function (s) { + return s.sort(); + }); // remove undefined items + + similarIndices = similarIndices.filter(function (s) { + return !!s; + }); + var indices = sortedIndices.slice(); + var stringIndices = indices.map(function (ind) { + return JSON.stringify(ind); + }); + indices = indices.filter(function (ind, p) { + return stringIndices.indexOf(JSON.stringify(ind)) === p; + }); + var sameScaleMinYArr = []; + var sameScaleMaxYArr = []; + minYArr.forEach(function (minYValue, yi) { + indices.forEach(function (scale, i) { + // we compare only the yIndex which exists in the indices array + if (scale.indexOf(yi) > -1) { + if (typeof sameScaleMinYArr[i] === 'undefined') { + sameScaleMinYArr[i] = []; + sameScaleMaxYArr[i] = []; + } + + sameScaleMinYArr[i].push({ + key: yi, + value: minYValue + }); + sameScaleMaxYArr[i].push({ + key: yi, + value: maxYArr[yi] + }); + } + }); + }); + var sameScaleMin = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, Number.MIN_VALUE); + var sameScaleMax = Array.apply(null, Array(indices.length)).map(Number.prototype.valueOf, -Number.MAX_VALUE); + sameScaleMinYArr.forEach(function (s, i) { + s.forEach(function (sc, j) { + sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]); + }); + }); + sameScaleMaxYArr.forEach(function (s, i) { + s.forEach(function (sc, j) { + sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]); + }); + }); + minYArr.forEach(function (min, i) { + sameScaleMaxYArr.forEach(function (s, si) { + var minY = sameScaleMin[si]; + var maxY = sameScaleMax[si]; + + if (cnf.chart.stacked) { + // for stacked charts, we need to add the values + maxY = 0; + s.forEach(function (ind, k) { + // fix incorrectly adjust y scale issue #1215 + if (ind.value !== -Number.MAX_VALUE) { + maxY += ind.value; + } + + if (minY !== Number.MIN_VALUE) { + minY += sameScaleMinYArr[si][k].value; + } + }); + } + + s.forEach(function (ind, k) { + if (s[k].key === i) { + if (cnf.yaxis[i].min !== undefined) { + if (typeof cnf.yaxis[i].min === 'function') { + minY = cnf.yaxis[i].min(gl.minY); + } else { + minY = cnf.yaxis[i].min; + } + } + + if (cnf.yaxis[i].max !== undefined) { + if (typeof cnf.yaxis[i].max === 'function') { + maxY = cnf.yaxis[i].max(gl.maxY); + } else { + maxY = cnf.yaxis[i].max; + } + } + + _this2.setYScaleForIndex(i, minY, maxY); + } + }); + }); + }); + } // experimental feature which scales the y-axis to a min/max based on x-axis range + + }, { + key: "autoScaleY", + value: function autoScaleY(ctx, yaxis, e) { + if (!ctx) { + ctx = this; + } + + var w = ctx.w; + + if (w.globals.isMultipleYAxis || w.globals.collapsedSeries.length) { + // The autoScale option for multiple y-axis is turned off as it leads to buggy behavior. + // Also, when a series is collapsed, it results in incorrect behavior. Hence turned it off for that too - fixes apexcharts.js#795 + console.warn('autoScaleYaxis is not supported in a multi-yaxis chart.'); + return yaxis; + } + + var seriesX = w.globals.seriesX[0]; + var isStacked = w.config.chart.stacked; + yaxis.forEach(function (yaxe, yi) { + var firstXIndex = 0; + + for (var xi = 0; xi < seriesX.length; xi++) { + if (seriesX[xi] >= e.xaxis.min) { + firstXIndex = xi; + break; + } + } + + var initialMin = w.globals.minYArr[yi]; + var initialMax = w.globals.maxYArr[yi]; + var min, max; + var stackedSer = w.globals.stackedSeriesTotals; + w.globals.series.forEach(function (serie, sI) { + var firstValue = serie[firstXIndex]; + + if (isStacked) { + firstValue = stackedSer[firstXIndex]; + min = max = firstValue; + stackedSer.forEach(function (y, yI) { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + if (y > max && y !== null) max = y; + if (serie[yI] < min && serie[yI] !== null) min = serie[yI]; + } + }); + } else { + min = max = firstValue; + serie.forEach(function (y, yI) { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + var valMin = y; + var valMax = y; + w.globals.series.forEach(function (wS, wSI) { + if (y !== null) { + valMin = Math.min(wS[yI], valMin); + valMax = Math.max(wS[yI], valMax); + } + }); + if (valMax > max && valMax !== null) max = valMax; + if (valMin < min && valMin !== null) min = valMin; + } + }); + } + + if (min === undefined && max === undefined) { + min = initialMin; + max = initialMax; + } + + min *= min < 0 ? 1.1 : 0.9; + max *= max < 0 ? 0.9 : 1.1; + + if (min === 0 && max === 0) { + min = -1; + max = 1; + } + + if (max < 0 && max < initialMax) { + max = initialMax; + } + + if (min < 0 && min > initialMin) { + min = initialMin; + } + + if (yaxis.length > 1) { + yaxis[sI].min = yaxe.min === undefined ? min : yaxe.min; + yaxis[sI].max = yaxe.max === undefined ? max : yaxe.max; + } else { + yaxis[0].min = yaxe.min === undefined ? min : yaxe.min; + yaxis[0].max = yaxe.max === undefined ? max : yaxe.max; + } + }); + }); + return yaxis; + } + }]); + + return Range; + }(); + + /** + * Range is used to generates values between min and max. + * + * @module Range + **/ + + var Range = /*#__PURE__*/function () { + function Range(ctx) { + _classCallCheck(this, Range); + + this.ctx = ctx; + this.w = ctx.w; + this.scales = new Range$1(ctx); + } + + _createClass(Range, [{ + key: "init", + value: function init() { + this.setYRange(); + this.setXRange(); + this.setZRange(); + } + }, { + key: "getMinYMaxY", + value: function getMinYMaxY(startingIndex) { + var lowestY = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE; + var highestY = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -Number.MAX_VALUE; + var len = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var cnf = this.w.config; + var gl = this.w.globals; + var maxY = -Number.MAX_VALUE; + var minY = Number.MIN_VALUE; + + if (len === null) { + len = startingIndex + 1; + } + + var series = gl.series; + var seriesMin = series; + var seriesMax = series; + + if (cnf.chart.type === 'candlestick') { + seriesMin = gl.seriesCandleL; + seriesMax = gl.seriesCandleH; + } else if (cnf.chart.type === 'boxPlot') { + seriesMin = gl.seriesCandleO; + seriesMax = gl.seriesCandleC; + } else if (gl.isRangeData) { + seriesMin = gl.seriesRangeStart; + seriesMax = gl.seriesRangeEnd; + } + + for (var i = startingIndex; i < len; i++) { + gl.dataPoints = Math.max(gl.dataPoints, series[i].length); + + if (gl.categoryLabels.length) { + gl.dataPoints = gl.categoryLabels.filter(function (label) { + return typeof label !== 'undefined'; + }).length; + } + + for (var j = 0; j < gl.series[i].length; j++) { + var val = series[i][j]; + + if (val !== null && Utils$1.isNumber(val)) { + if (typeof seriesMax[i][j] !== 'undefined') { + maxY = Math.max(maxY, seriesMax[i][j]); + lowestY = Math.min(lowestY, seriesMax[i][j]); + } + + if (typeof seriesMin[i][j] !== 'undefined') { + lowestY = Math.min(lowestY, seriesMin[i][j]); + highestY = Math.max(highestY, seriesMin[i][j]); + } + + if (this.w.config.chart.type === 'candlestick' || this.w.config.chart.type === 'boxPlot' || this.w.config.chart.type !== 'rangeArea' || this.w.config.chart.type !== 'rangeBar') { + if (this.w.config.chart.type === 'candlestick' || this.w.config.chart.type === 'boxPlot') { + if (typeof gl.seriesCandleC[i][j] !== 'undefined') { + maxY = Math.max(maxY, gl.seriesCandleO[i][j]); + maxY = Math.max(maxY, gl.seriesCandleH[i][j]); + maxY = Math.max(maxY, gl.seriesCandleL[i][j]); + maxY = Math.max(maxY, gl.seriesCandleC[i][j]); + + if (this.w.config.chart.type === 'boxPlot') { + maxY = Math.max(maxY, gl.seriesCandleM[i][j]); + } + } + } // there is a combo chart and the specified series in not either candlestick, boxplot, or rangeArea/rangeBar; find the max there + + + if (cnf.series[i].type && (cnf.series[i].type !== 'candlestick' || cnf.series[i].type !== 'boxPlot' || cnf.series[i].type !== 'rangeArea' || cnf.series[i].type !== 'rangeBar')) { + maxY = Math.max(maxY, gl.series[i][j]); + lowestY = Math.min(lowestY, gl.series[i][j]); + } + + highestY = maxY; + } + + if (gl.seriesGoals[i] && gl.seriesGoals[i][j] && Array.isArray(gl.seriesGoals[i][j])) { + gl.seriesGoals[i][j].forEach(function (g) { + if (minY !== Number.MIN_VALUE) { + minY = Math.min(minY, g.value); + lowestY = minY; + } + + maxY = Math.max(maxY, g.value); + highestY = maxY; + }); + } + + if (Utils$1.isFloat(val)) { + val = Utils$1.noExponents(val); + gl.yValueDecimal = Math.max(gl.yValueDecimal, val.toString().split('.')[1].length); + } + + if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) { + minY = seriesMin[i][j]; + } + } else { + gl.hasNullValues = true; + } + } + } + + if (cnf.chart.type === 'rangeBar' && gl.seriesRangeStart.length && gl.isBarHorizontal) { + minY = lowestY; + } + + if (cnf.chart.type === 'bar') { + if (minY < 0 && maxY < 0) { + // all negative values in a bar chart, hence make the max to 0 + maxY = 0; + } + + if (minY === Number.MIN_VALUE) { + minY = 0; + } + } + + return { + minY: minY, + maxY: maxY, + lowestY: lowestY, + highestY: highestY + }; + } + }, { + key: "setYRange", + value: function setYRange() { + var gl = this.w.globals; + var cnf = this.w.config; + gl.maxY = -Number.MAX_VALUE; + gl.minY = Number.MIN_VALUE; + var lowestYInAllSeries = Number.MAX_VALUE; + + if (gl.isMultipleYAxis) { + // we need to get minY and maxY for multiple y axis + for (var i = 0; i < gl.series.length; i++) { + var minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1); + gl.minYArr.push(minYMaxYArr.minY); + gl.maxYArr.push(minYMaxYArr.maxY); + lowestYInAllSeries = minYMaxYArr.lowestY; + } + } // and then, get the minY and maxY from all series + + + var minYMaxY = this.getMinYMaxY(0, lowestYInAllSeries, null, gl.series.length); + gl.minY = minYMaxY.minY; + gl.maxY = minYMaxY.maxY; + lowestYInAllSeries = minYMaxY.lowestY; + + if (cnf.chart.stacked) { + this._setStackedMinMax(); + } // if the numbers are too big, reduce the range + // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks/boxPlot + + + if (cnf.chart.type === 'line' || cnf.chart.type === 'area' || cnf.chart.type === 'candlestick' || cnf.chart.type === 'boxPlot' || cnf.chart.type === 'rangeBar' && !gl.isBarHorizontal) { + if (gl.minY === Number.MIN_VALUE && lowestYInAllSeries !== -Number.MAX_VALUE && lowestYInAllSeries !== gl.maxY // single value possibility + ) { + var diff = gl.maxY - lowestYInAllSeries; + + if (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10 || cnf.yaxis[0].min !== undefined || cnf.yaxis[0].max !== undefined) { + // if minY is already 0/low value, we don't want to go negatives here - so this check is essential. + diff = 0; + } + + gl.minY = lowestYInAllSeries - diff * 5 / 100; + /* fix https://github.com/apexcharts/apexcharts.js/issues/614 */ + + /* fix https://github.com/apexcharts/apexcharts.js/issues/968 */ + + if (lowestYInAllSeries > 0 && gl.minY < 0) { + gl.minY = 0; + } + /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */ + + + gl.maxY = gl.maxY + diff * 5 / 100; + } + } + + cnf.yaxis.forEach(function (yaxe, index) { + // override all min/max values by user defined values (y axis) + if (yaxe.max !== undefined) { + if (typeof yaxe.max === 'number') { + gl.maxYArr[index] = yaxe.max; + } else if (typeof yaxe.max === 'function') { + // fixes apexcharts.js/issues/2098 + gl.maxYArr[index] = yaxe.max(gl.isMultipleYAxis ? gl.maxYArr[index] : gl.maxY); + } // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis + + + gl.maxY = gl.maxYArr[index]; + } + + if (yaxe.min !== undefined) { + if (typeof yaxe.min === 'number') { + gl.minYArr[index] = yaxe.min; + } else if (typeof yaxe.min === 'function') { + // fixes apexcharts.js/issues/2098 + gl.minYArr[index] = yaxe.min(gl.isMultipleYAxis ? gl.minYArr[index] === Number.MIN_VALUE ? 0 : gl.minYArr[index] : gl.minY); + } // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis + + + gl.minY = gl.minYArr[index]; + } + }); // for horizontal bar charts, we need to check xaxis min/max as user may have specified there + + if (gl.isBarHorizontal) { + var minmax = ['min', 'max']; + minmax.forEach(function (m) { + if (cnf.xaxis[m] !== undefined && typeof cnf.xaxis[m] === 'number') { + m === 'min' ? gl.minY = cnf.xaxis[m] : gl.maxY = cnf.xaxis[m]; + } + }); + } // for multi y-axis we need different scales for each + + + if (gl.isMultipleYAxis) { + this.scales.setMultipleYScales(); + gl.minY = lowestYInAllSeries; + gl.yAxisScale.forEach(function (scale, i) { + gl.minYArr[i] = scale.niceMin; + gl.maxYArr[i] = scale.niceMax; + }); + } else { + this.scales.setYScaleForIndex(0, gl.minY, gl.maxY); + gl.minY = gl.yAxisScale[0].niceMin; + gl.maxY = gl.yAxisScale[0].niceMax; + gl.minYArr[0] = gl.yAxisScale[0].niceMin; + gl.maxYArr[0] = gl.yAxisScale[0].niceMax; + } + + return { + minY: gl.minY, + maxY: gl.maxY, + minYArr: gl.minYArr, + maxYArr: gl.maxYArr, + yAxisScale: gl.yAxisScale + }; + } + }, { + key: "setXRange", + value: function setXRange() { + var gl = this.w.globals; + var cnf = this.w.config; + var isXNumeric = cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'datetime' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided || gl.noLabelsProvided || gl.isXNumeric; + + var getInitialMinXMaxX = function getInitialMinXMaxX() { + for (var i = 0; i < gl.series.length; i++) { + if (gl.labels[i]) { + for (var j = 0; j < gl.labels[i].length; j++) { + if (gl.labels[i][j] !== null && Utils$1.isNumber(gl.labels[i][j])) { + gl.maxX = Math.max(gl.maxX, gl.labels[i][j]); + gl.initialMaxX = Math.max(gl.maxX, gl.labels[i][j]); + gl.minX = Math.min(gl.minX, gl.labels[i][j]); + gl.initialMinX = Math.min(gl.minX, gl.labels[i][j]); + } + } + } + } + }; // minX maxX starts here + + + if (gl.isXNumeric) { + getInitialMinXMaxX(); + } + + if (gl.noLabelsProvided) { + if (cnf.xaxis.categories.length === 0) { + gl.maxX = gl.labels[gl.labels.length - 1]; + gl.initialMaxX = gl.labels[gl.labels.length - 1]; + gl.minX = 1; + gl.initialMinX = 1; + } + } + + if (gl.isXNumeric || gl.noLabelsProvided || gl.dataFormatXNumeric) { + var ticks; + + if (cnf.xaxis.tickAmount === undefined) { + ticks = Math.round(gl.svgWidth / 150); // no labels provided and total number of dataPoints is less than 30 + + if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 30) { + ticks = gl.dataPoints - 1; + } // this check is for when ticks exceeds total datapoints and that would result in duplicate labels + + + if (ticks > gl.dataPoints && gl.dataPoints !== 0) { + ticks = gl.dataPoints - 1; + } + } else if (cnf.xaxis.tickAmount === 'dataPoints') { + if (gl.series.length > 1) { + ticks = gl.series[gl.maxValsInArrayIndex].length - 1; + } + + if (gl.isXNumeric) { + ticks = gl.maxX - gl.minX - 1; + } + } else { + ticks = cnf.xaxis.tickAmount; + } + + gl.xTickAmount = ticks; // override all min/max values by user defined values (x axis) + + if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') { + gl.maxX = cnf.xaxis.max; + } + + if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') { + gl.minX = cnf.xaxis.min; + } // if range is provided, adjust the new minX + + + if (cnf.xaxis.range !== undefined) { + gl.minX = gl.maxX - cnf.xaxis.range; + } + + if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) { + if (cnf.xaxis.convertedCatToNumeric && !gl.dataFormatXNumeric) { + var catScale = []; + + for (var i = gl.minX - 1; i < gl.maxX; i++) { + catScale.push(i + 1); + } + + gl.xAxisScale = { + result: catScale, + niceMin: catScale[0], + niceMax: catScale[catScale.length - 1] + }; + } else { + gl.xAxisScale = this.scales.setXScale(gl.minX, gl.maxX); + } + } else { + gl.xAxisScale = this.scales.linearScale(1, ticks, ticks); + + if (gl.noLabelsProvided && gl.labels.length > 0) { + gl.xAxisScale = this.scales.linearScale(1, gl.labels.length, ticks - 1); // this is the only place seriesX is again mutated + + gl.seriesX = gl.labels.slice(); + } + } // we will still store these labels as the count for this will be different (to draw grid and labels placement) + + + if (isXNumeric) { + gl.labels = gl.xAxisScale.result.slice(); + } + } + + if (gl.isBarHorizontal && gl.labels.length) { + gl.xTickAmount = gl.labels.length; + } // single dataPoint + + + this._handleSingleDataPoint(); // minimum x difference to calculate bar width in numeric bars + + + this._getMinXDiff(); + + return { + minX: gl.minX, + maxX: gl.maxX + }; + } + }, { + key: "setZRange", + value: function setZRange() { + // minZ, maxZ starts here + var gl = this.w.globals; + if (!gl.isDataXYZ) return; + + for (var i = 0; i < gl.series.length; i++) { + if (typeof gl.seriesZ[i] !== 'undefined') { + for (var j = 0; j < gl.seriesZ[i].length; j++) { + if (gl.seriesZ[i][j] !== null && Utils$1.isNumber(gl.seriesZ[i][j])) { + gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]); + gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]); + } + } + } + } + } + }, { + key: "_handleSingleDataPoint", + value: function _handleSingleDataPoint() { + var gl = this.w.globals; + var cnf = this.w.config; + + if (gl.minX === gl.maxX) { + var datetimeObj = new DateTime(this.ctx); + + if (cnf.xaxis.type === 'datetime') { + var newMinX = datetimeObj.getDate(gl.minX); + + if (cnf.xaxis.labels.datetimeUTC) { + newMinX.setUTCDate(newMinX.getUTCDate() - 2); + } else { + newMinX.setDate(newMinX.getDate() - 2); + } + + gl.minX = new Date(newMinX).getTime(); + var newMaxX = datetimeObj.getDate(gl.maxX); + + if (cnf.xaxis.labels.datetimeUTC) { + newMaxX.setUTCDate(newMaxX.getUTCDate() + 2); + } else { + newMaxX.setDate(newMaxX.getDate() + 2); + } + + gl.maxX = new Date(newMaxX).getTime(); + } else if (cnf.xaxis.type === 'numeric' || cnf.xaxis.type === 'category' && !gl.noLabelsProvided) { + gl.minX = gl.minX - 2; + gl.initialMinX = gl.minX; + gl.maxX = gl.maxX + 2; + gl.initialMaxX = gl.maxX; + } + } + } + }, { + key: "_getMinXDiff", + value: function _getMinXDiff() { + var gl = this.w.globals; + + if (gl.isXNumeric) { + // get the least x diff if numeric x axis is present + gl.seriesX.forEach(function (sX, i) { + if (sX.length === 1) { + // a small hack to prevent overlapping multiple bars when there is just 1 datapoint in bar series. + // fix #811 + sX.push(gl.seriesX[gl.maxValsInArrayIndex][gl.seriesX[gl.maxValsInArrayIndex].length - 1]); + } // fix #983 (clone the array to avoid side effects) + + + var seriesX = sX.slice(); + seriesX.sort(function (a, b) { + return a - b; + }); + seriesX.forEach(function (s, j) { + if (j > 0) { + var xDiff = s - seriesX[j - 1]; + + if (xDiff > 0) { + gl.minXDiff = Math.min(xDiff, gl.minXDiff); + } + } + }); + + if (gl.dataPoints === 1 || gl.minXDiff === Number.MAX_VALUE) { + // fixes apexcharts.js #1221 + gl.minXDiff = 0.5; + } + }); + } + } + }, { + key: "_setStackedMinMax", + value: function _setStackedMinMax() { + var gl = this.w.globals; // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it + + var stackedPoss = []; + var stackedNegs = []; + + if (gl.series.length) { + for (var j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) { + var poss = 0; + var negs = 0; + + for (var i = 0; i < gl.series.length; i++) { + if (gl.series[i][j] !== null && Utils$1.isNumber(gl.series[i][j])) { + // 0.0001 fixes #185 when values are very small + gl.series[i][j] > 0 ? poss = poss + parseFloat(gl.series[i][j]) + 0.0001 : negs = negs + parseFloat(gl.series[i][j]); + } + + if (i === gl.series.length - 1) { + // push all the totals to the array for future use + stackedPoss.push(poss); + stackedNegs.push(negs); + } + } + } + } // get the max/min out of the added parallel values + + + for (var z = 0; z < stackedPoss.length; z++) { + gl.maxY = Math.max(gl.maxY, stackedPoss[z]); + gl.minY = Math.min(gl.minY, stackedNegs[z]); + } + } + }]); + + return Range; + }(); + + /** + * ApexCharts YAxis Class for drawing Y-Axis. + * + * @module YAxis + **/ + + var YAxis = /*#__PURE__*/function () { + function YAxis(ctx, elgrid) { + _classCallCheck(this, YAxis); + + this.ctx = ctx; + this.elgrid = elgrid; + this.w = ctx.w; + var w = this.w; + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize; + this.axisFontFamily = w.config.xaxis.labels.style.fontFamily; + this.xaxisForeColors = w.config.xaxis.labels.style.colors; + this.isCategoryBarHorizontal = w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal; + this.xAxisoffX = 0; + + if (w.config.xaxis.position === 'bottom') { + this.xAxisoffX = w.globals.gridHeight; + } + + this.drawnLabels = []; + this.axesUtils = new AxesUtils(ctx); + } + + _createClass(YAxis, [{ + key: "drawYaxis", + value: function drawYaxis(realIndex) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var yaxisStyle = w.config.yaxis[realIndex].labels.style; + var yaxisFontSize = yaxisStyle.fontSize; + var yaxisFontFamily = yaxisStyle.fontFamily; + var yaxisFontWeight = yaxisStyle.fontWeight; + var elYaxis = graphics.group({ + class: 'apexcharts-yaxis', + rel: realIndex, + transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)' + }); + + if (this.axesUtils.isYAxisHidden(realIndex)) { + return elYaxis; + } + + var elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g' + }); + elYaxis.add(elYaxisTexts); + var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg height/number of ticks + + var labelsDivider = w.globals.gridHeight / tickAmount; // initial label position = 0; + + var l = w.globals.translateY; + var lbFormatter = w.globals.yLabelFormatters[realIndex]; + var labels = w.globals.yAxisScale[realIndex].result.slice(); + labels = this.axesUtils.checkForReversedLabels(realIndex, labels); + var firstLabel = ''; + + if (w.config.yaxis[realIndex].labels.show) { + var _loop = function _loop(i) { + var val = labels[i]; + val = lbFormatter(val, i, w); + var xPad = w.config.yaxis[realIndex].labels.padding; + + if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) { + xPad = xPad * -1; + } + + var yColors = _this.axesUtils.getYAxisForeColor(yaxisStyle.colors, realIndex); + + var getForeColor = function getForeColor() { + return Array.isArray(yColors) ? yColors[i] : yColors; + }; + + var label = graphics.drawText({ + x: xPad, + y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1, + text: val, + textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end', + fontSize: yaxisFontSize, + fontFamily: yaxisFontFamily, + fontWeight: yaxisFontWeight, + maxWidth: w.config.yaxis[realIndex].labels.maxWidth, + foreColor: getForeColor(), + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + yaxisStyle.cssClass + }); + + if (i === tickAmount) { + firstLabel = label; + } + + elYaxisTexts.add(label); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = Array.isArray(val) ? val.join(' ') : val; + label.node.appendChild(elTooltipTitle); + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + var firstabelRotatingCenter = graphics.rotateAroundCenter(firstLabel.node); + var labelRotatingCenter = graphics.rotateAroundCenter(label.node); + label.node.setAttribute('transform', "rotate(".concat(w.config.yaxis[realIndex].labels.rotate, " ").concat(firstabelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")")); + } + + l = l + labelsDivider; + }; + + for (var i = tickAmount; i >= 0; i--) { + _loop(i); + } + } + + if (w.config.yaxis[realIndex].title.text !== undefined) { + var elYaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title' + }); + var _x = 0; + + if (w.config.yaxis[realIndex].opposite) { + _x = w.globals.translateYAxisX[realIndex]; + } + + var elYAxisTitleText = graphics.drawText({ + x: _x, + y: w.globals.gridHeight / 2 + w.globals.translateY + w.config.yaxis[realIndex].title.offsetY, + text: w.config.yaxis[realIndex].title.text, + textAnchor: 'end', + foreColor: w.config.yaxis[realIndex].title.style.color, + fontSize: w.config.yaxis[realIndex].title.style.fontSize, + fontWeight: w.config.yaxis[realIndex].title.style.fontWeight, + fontFamily: w.config.yaxis[realIndex].title.style.fontFamily, + cssClass: 'apexcharts-yaxis-title-text ' + w.config.yaxis[realIndex].title.style.cssClass + }); + elYaxisTitle.add(elYAxisTitleText); + elYaxis.add(elYaxisTitle); + } + + var axisBorder = w.config.yaxis[realIndex].axisBorder; + var x = 31 + axisBorder.offsetX; + + if (w.config.yaxis[realIndex].opposite) { + x = -31 - axisBorder.offsetX; + } + + if (axisBorder.show) { + var elVerticalLine = graphics.drawLine(x, w.globals.translateY + axisBorder.offsetY - 2, x, w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, axisBorder.color, 0, axisBorder.width); + elYaxis.add(elVerticalLine); + } + + if (w.config.yaxis[realIndex].axisTicks.show) { + this.axesUtils.drawYAxisTicks(x, tickAmount, axisBorder, w.config.yaxis[realIndex].axisTicks, realIndex, labelsDivider, elYaxis); + } + + return elYaxis; + } // This actually becomes horizontal axis (for bar charts) + + }, { + key: "drawYaxisInversed", + value: function drawYaxisInversed(realIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var elXaxis = graphics.group({ + class: 'apexcharts-xaxis apexcharts-yaxis-inversed' + }); + var elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: "translate(".concat(w.globals.translateXAxisX, ", ").concat(w.globals.translateXAxisY, ")") + }); + elXaxis.add(elXaxisTexts); + var tickAmount = w.globals.yAxisScale[realIndex].result.length - 1; // labelsDivider is simply svg width/number of ticks + + var labelsDivider = w.globals.gridWidth / tickAmount + 0.1; // initial label position; + + var l = labelsDivider + w.config.xaxis.labels.offsetX; + var lbFormatter = w.globals.xLabelFormatter; + var labels = w.globals.yAxisScale[realIndex].result.slice(); + var timescaleLabels = w.globals.timescaleLabels; + + if (timescaleLabels.length > 0) { + this.xaxisLabels = timescaleLabels.slice(); + labels = timescaleLabels.slice(); + tickAmount = labels.length; + } + + labels = this.axesUtils.checkForReversedLabels(realIndex, labels); + var tl = timescaleLabels.length; + + if (w.config.xaxis.labels.show) { + for (var i = tl ? 0 : tickAmount; tl ? i < tl : i >= 0; tl ? i++ : i--) { + var val = labels[i]; + val = lbFormatter(val, i, w); + var x = w.globals.gridWidth + w.globals.padHorizontal - (l - labelsDivider + w.config.xaxis.labels.offsetX); + + if (timescaleLabels.length) { + var label = this.axesUtils.getLabel(labels, timescaleLabels, x, i, this.drawnLabels, this.xaxisFontSize); + x = label.x; + val = label.text; + this.drawnLabels.push(label.text); + + if (i === 0 && w.globals.skipFirstTimelinelabel) { + val = ''; + } + + if (i === labels.length - 1 && w.globals.skipLastTimelinelabel) { + val = ''; + } + } + + var elTick = graphics.drawText({ + x: x, + y: this.xAxisoffX + w.config.xaxis.labels.offsetY + 30 - (w.config.xaxis.position === 'top' ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 : 0), + text: val, + textAnchor: 'middle', + foreColor: Array.isArray(this.xaxisForeColors) ? this.xaxisForeColors[realIndex] : this.xaxisForeColors, + fontSize: this.xaxisFontSize, + fontFamily: this.xaxisFontFamily, + fontWeight: w.config.xaxis.labels.style.fontWeight, + isPlainText: false, + cssClass: 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass + }); + elXaxisTexts.add(elTick); + elTick.tspan(val); + var elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title'); + elTooltipTitle.textContent = val; + elTick.node.appendChild(elTooltipTitle); + l = l + labelsDivider; + } + } + + this.inversedYAxisTitleText(elXaxis); + this.inversedYAxisBorder(elXaxis); + return elXaxis; + } + }, { + key: "inversedYAxisBorder", + value: function inversedYAxisBorder(parent) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var axisBorder = w.config.xaxis.axisBorder; + + if (axisBorder.show) { + var lineCorrection = 0; + + if (w.config.chart.type === 'bar' && w.globals.isXNumeric) { + lineCorrection = lineCorrection - 15; + } + + var elHorzLine = graphics.drawLine(w.globals.padHorizontal + lineCorrection + axisBorder.offsetX, this.xAxisoffX, w.globals.gridWidth, this.xAxisoffX, axisBorder.color, 0, axisBorder.height); // in horizontal bars, we append axisBorder to elGridBorders element to avoid z-index issues + + if (this.elgrid && this.elgrid.elGridBorders) { + this.elgrid.elGridBorders.add(elHorzLine); + } else { + parent.add(elHorzLine); + } + } + } + }, { + key: "inversedYAxisTitleText", + value: function inversedYAxisTitleText(parent) { + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (w.config.xaxis.title.text !== undefined) { + var elYaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed' + }); + var elYAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: this.xAxisoffX + parseFloat(this.xaxisFontSize) + parseFloat(w.config.xaxis.title.style.fontSize) + w.config.xaxis.title.offsetY + 20, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }); + elYaxisTitle.add(elYAxisTitleText); + parent.add(elYaxisTitle); + } + } + }, { + key: "yAxisTitleRotate", + value: function yAxisTitleRotate(realIndex, yAxisOpposite) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var yAxisLabelsCoord = { + width: 0, + height: 0 + }; + var yAxisTitleCoord = { + width: 0, + height: 0 + }; + var elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-texts-g")); + + if (elYAxisLabelsWrap !== null) { + yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect(); + } + + var yAxisTitle = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(realIndex, "'] .apexcharts-yaxis-title text")); + + if (yAxisTitle !== null) { + yAxisTitleCoord = yAxisTitle.getBoundingClientRect(); + } + + if (yAxisTitle !== null) { + var x = this.xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite); + yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0)); + } + + if (yAxisTitle !== null) { + var titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle); + yAxisTitle.setAttribute('transform', "rotate(".concat(yAxisOpposite ? w.config.yaxis[realIndex].title.rotate * -1 : w.config.yaxis[realIndex].title.rotate, " ").concat(titleRotatingCenter.x, " ").concat(titleRotatingCenter.y, ")")); + } + } + }, { + key: "xPaddingForYAxisTitle", + value: function xPaddingForYAxisTitle(realIndex, yAxisLabelsCoord, yAxisTitleCoord, yAxisOpposite) { + var w = this.w; + var oppositeAxisCount = 0; + var x = 0; + var padd = 10; + + if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) { + return { + xPos: x, + padd: 0 + }; + } + + if (yAxisOpposite) { + x = yAxisLabelsCoord.width + w.config.yaxis[realIndex].title.offsetX + yAxisTitleCoord.width / 2 + padd / 2; + oppositeAxisCount += 1; + + if (oppositeAxisCount === 0) { + x = x - padd / 2; + } + } else { + x = yAxisLabelsCoord.width * -1 + w.config.yaxis[realIndex].title.offsetX + padd / 2 + yAxisTitleCoord.width / 2; + + if (w.globals.isBarHorizontal) { + padd = 25; + x = yAxisLabelsCoord.width * -1 - w.config.yaxis[realIndex].title.offsetX - padd; + } + } + + return { + xPos: x, + padd: padd + }; + } // sets the x position of the y-axis by counting the labels width, title width and any offset + + }, { + key: "setYAxisXPosition", + value: function setYAxisXPosition(yaxisLabelCoords, yTitleCoords) { + var w = this.w; + var xLeft = 0; + var xRight = 0; + var leftOffsetX = 18; + var rightOffsetX = 1; + + if (w.config.yaxis.length > 1) { + this.multipleYs = true; + } + + w.config.yaxis.map(function (yaxe, index) { + var shouldNotDrawAxis = w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || !yaxe.show || yaxe.floating || yaxisLabelCoords[index].width === 0; + var axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width; + + if (!yaxe.opposite) { + xLeft = w.globals.translateX - leftOffsetX; + + if (!shouldNotDrawAxis) { + leftOffsetX = leftOffsetX + axisWidth + 20; + } + + w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX; + } else { + if (w.globals.isBarHorizontal) { + xRight = w.globals.gridWidth + w.globals.translateX - 1; + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX; + } else { + xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX; + + if (!shouldNotDrawAxis) { + rightOffsetX = rightOffsetX + axisWidth + 20; + } + + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20; + } + } + }); + } + }, { + key: "setYAxisTextAlignments", + value: function setYAxisTextAlignments() { + var w = this.w; + var yaxis = w.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis"); + yaxis = Utils$1.listToArray(yaxis); + yaxis.forEach(function (y, index) { + var yaxe = w.config.yaxis[index]; // proceed only if user has specified alignment + + if (yaxe && yaxe.labels.align !== undefined) { + var yAxisInner = w.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-texts-g")); + var yAxisTexts = w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(index, "'] .apexcharts-yaxis-label")); + yAxisTexts = Utils$1.listToArray(yAxisTexts); + var rect = yAxisInner.getBoundingClientRect(); + + if (yaxe.labels.align === 'left') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'start'); + }); + + if (!yaxe.opposite) { + yAxisInner.setAttribute('transform', "translate(-".concat(rect.width, ", 0)")); + } + } else if (yaxe.labels.align === 'center') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'middle'); + }); + yAxisInner.setAttribute('transform', "translate(".concat(rect.width / 2 * (!yaxe.opposite ? -1 : 1), ", 0)")); + } else if (yaxe.labels.align === 'right') { + yAxisTexts.forEach(function (label, lI) { + label.setAttribute('text-anchor', 'end'); + }); + + if (yaxe.opposite) { + yAxisInner.setAttribute('transform', "translate(".concat(rect.width, ", 0)")); + } + } + } + }); + } + }]); + + return YAxis; + }(); + + var Events = /*#__PURE__*/function () { + function Events(ctx) { + _classCallCheck(this, Events); + + this.ctx = ctx; + this.w = ctx.w; + this.documentEvent = Utils$1.bind(this.documentEvent, this); + } + + _createClass(Events, [{ + key: "addEventListener", + value: function addEventListener(name, handler) { + var w = this.w; + + if (w.globals.events.hasOwnProperty(name)) { + w.globals.events[name].push(handler); + } else { + w.globals.events[name] = [handler]; + } + } + }, { + key: "removeEventListener", + value: function removeEventListener(name, handler) { + var w = this.w; + + if (!w.globals.events.hasOwnProperty(name)) { + return; + } + + var index = w.globals.events[name].indexOf(handler); + + if (index !== -1) { + w.globals.events[name].splice(index, 1); + } + } + }, { + key: "fireEvent", + value: function fireEvent(name, args) { + var w = this.w; + + if (!w.globals.events.hasOwnProperty(name)) { + return; + } + + if (!args || !args.length) { + args = []; + } + + var evs = w.globals.events[name]; + var l = evs.length; + + for (var i = 0; i < l; i++) { + evs[i].apply(null, args); + } + } + }, { + key: "setupEventHandlers", + value: function setupEventHandlers() { + var _this = this; + + var w = this.w; + var me = this.ctx; + var clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass); + this.ctx.eventList.forEach(function (event) { + clickableArea.addEventListener(event, function (e) { + var opts = Object.assign({}, w, { + seriesIndex: w.globals.capturedSeriesIndex, + dataPointIndex: w.globals.capturedDataPointIndex + }); + + if (e.type === 'mousemove' || e.type === 'touchmove') { + if (typeof w.config.chart.events.mouseMove === 'function') { + w.config.chart.events.mouseMove(e, me, opts); + } + } else if (e.type === 'mouseleave' || e.type === 'touchleave') { + if (typeof w.config.chart.events.mouseLeave === 'function') { + w.config.chart.events.mouseLeave(e, me, opts); + } + } else if (e.type === 'mouseup' && e.which === 1 || e.type === 'touchend') { + if (typeof w.config.chart.events.click === 'function') { + w.config.chart.events.click(e, me, opts); + } + + me.ctx.events.fireEvent('click', [e, me, opts]); + } + }, { + capture: false, + passive: true + }); + }); + this.ctx.eventList.forEach(function (event) { + w.globals.dom.baseEl.addEventListener(event, _this.documentEvent, { + passive: true + }); + }); + this.ctx.core.setupBrushHandler(); + } + }, { + key: "documentEvent", + value: function documentEvent(e) { + var w = this.w; + var target = e.target.className; + + if (e.type === 'click') { + var elMenu = w.globals.dom.baseEl.querySelector('.apexcharts-menu'); + + if (elMenu && elMenu.classList.contains('apexcharts-menu-open') && target !== 'apexcharts-menu-icon') { + elMenu.classList.remove('apexcharts-menu-open'); + } + } + + w.globals.clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + w.globals.clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; + } + }]); + + return Events; + }(); + + var Localization = /*#__PURE__*/function () { + function Localization(ctx) { + _classCallCheck(this, Localization); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Localization, [{ + key: "setCurrentLocaleValues", + value: function setCurrentLocaleValues(localeName) { + var locales = this.w.config.chart.locales; // check if user has specified locales in global Apex variable + // if yes - then extend those with local chart's locale + + if (window.Apex.chart && window.Apex.chart.locales && window.Apex.chart.locales.length > 0) { + locales = this.w.config.chart.locales.concat(window.Apex.chart.locales); + } // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.) + + + var selectedLocale = locales.filter(function (c) { + return c.name === localeName; + })[0]; + + if (selectedLocale) { + // create a complete locale object by extending defaults so you don't get undefined errors. + var ret = Utils$1.extend(en, selectedLocale); // store these locale options in global var for ease access + + this.w.globals.locale = ret.options; + } else { + throw new Error('Wrong locale name provided. Please make sure you set the correct locale name in options'); + } + } + }]); + + return Localization; + }(); + + var Axes = /*#__PURE__*/function () { + function Axes(ctx) { + _classCallCheck(this, Axes); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Axes, [{ + key: "drawAxis", + value: function drawAxis(type, elgrid) { + var gl = this.w.globals; + var cnf = this.w.config; + var xAxis = new XAxis(this.ctx, elgrid); + var yAxis = new YAxis(this.ctx, elgrid); + + if (gl.axisCharts && type !== 'radar') { + var elXaxis, elYaxis; + + if (gl.isBarHorizontal) { + elYaxis = yAxis.drawYaxisInversed(0); + elXaxis = xAxis.drawXaxisInversed(0); + gl.dom.elGraphical.add(elXaxis); + gl.dom.elGraphical.add(elYaxis); + } else { + elXaxis = xAxis.drawXaxis(); + gl.dom.elGraphical.add(elXaxis); + cnf.yaxis.map(function (yaxe, index) { + if (gl.ignoreYAxisIndexes.indexOf(index) === -1) { + elYaxis = yAxis.drawYaxis(index); + gl.dom.Paper.add(elYaxis); + } + }); + } + } + } + }]); + + return Axes; + }(); + + var Crosshairs = /*#__PURE__*/function () { + function Crosshairs(ctx) { + _classCallCheck(this, Crosshairs); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Crosshairs, [{ + key: "drawXCrosshairs", + value: function drawXCrosshairs() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var filters = new Filters(this.ctx); + var crosshairGradient = w.config.xaxis.crosshairs.fill.gradient; + var crosshairShadow = w.config.xaxis.crosshairs.dropShadow; + var fillType = w.config.xaxis.crosshairs.fill.type; + var gradientFrom = crosshairGradient.colorFrom; + var gradientTo = crosshairGradient.colorTo; + var opacityFrom = crosshairGradient.opacityFrom; + var opacityTo = crosshairGradient.opacityTo; + var stops = crosshairGradient.stops; + var shadow = 'none'; + var dropShadow = crosshairShadow.enabled; + var shadowLeft = crosshairShadow.left; + var shadowTop = crosshairShadow.top; + var shadowBlur = crosshairShadow.blur; + var shadowColor = crosshairShadow.color; + var shadowOpacity = crosshairShadow.opacity; + var xcrosshairsFill = w.config.xaxis.crosshairs.fill.color; + + if (w.config.xaxis.crosshairs.show) { + if (fillType === 'gradient') { + xcrosshairsFill = graphics.drawGradient('vertical', gradientFrom, gradientTo, opacityFrom, opacityTo, null, stops, null); + } + + var xcrosshairs = graphics.drawRect(); + + if (w.config.xaxis.crosshairs.width === 1) { + // to prevent drawing 2 lines, convert rect to line + xcrosshairs = graphics.drawLine(); + } + + var gridHeight = w.globals.gridHeight; + + if (!Utils$1.isNumber(gridHeight) || gridHeight < 0) { + gridHeight = 0; + } + + var crosshairsWidth = w.config.xaxis.crosshairs.width; + + if (!Utils$1.isNumber(crosshairsWidth) || crosshairsWidth < 0) { + crosshairsWidth = 0; + } + + xcrosshairs.attr({ + class: 'apexcharts-xcrosshairs', + x: 0, + y: 0, + y2: gridHeight, + width: crosshairsWidth, + height: gridHeight, + fill: xcrosshairsFill, + filter: shadow, + 'fill-opacity': w.config.xaxis.crosshairs.opacity, + stroke: w.config.xaxis.crosshairs.stroke.color, + 'stroke-width': w.config.xaxis.crosshairs.stroke.width, + 'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray + }); + + if (dropShadow) { + xcrosshairs = filters.dropShadow(xcrosshairs, { + left: shadowLeft, + top: shadowTop, + blur: shadowBlur, + color: shadowColor, + opacity: shadowOpacity + }); + } + + w.globals.dom.elGraphical.add(xcrosshairs); + } + } + }, { + key: "drawYCrosshairs", + value: function drawYCrosshairs() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var crosshair = w.config.yaxis[0].crosshairs; + var offX = w.globals.barPadForNumericAxis; + + if (w.config.yaxis[0].crosshairs.show) { + var ycrosshairs = graphics.drawLine(-offX, 0, w.globals.gridWidth + offX, 0, crosshair.stroke.color, crosshair.stroke.dashArray, crosshair.stroke.width); + ycrosshairs.attr({ + class: 'apexcharts-ycrosshairs' + }); + w.globals.dom.elGraphical.add(ycrosshairs); + } // draw an invisible crosshair to help in positioning the yaxis tooltip + + + var ycrosshairsHidden = graphics.drawLine(-offX, 0, w.globals.gridWidth + offX, 0, crosshair.stroke.color, 0, 0); + ycrosshairsHidden.attr({ + class: 'apexcharts-ycrosshairs-hidden' + }); + w.globals.dom.elGraphical.add(ycrosshairsHidden); + } + }]); + + return Crosshairs; + }(); + + /** + * ApexCharts Responsive Class to override options for different screen sizes. + * + * @module Responsive + **/ + + var Responsive = /*#__PURE__*/function () { + function Responsive(ctx) { + _classCallCheck(this, Responsive); + + this.ctx = ctx; + this.w = ctx.w; + } // the opts parameter if not null has to be set overriding everything + // as the opts is set by user externally + + + _createClass(Responsive, [{ + key: "checkResponsiveConfig", + value: function checkResponsiveConfig(opts) { + var _this = this; + + var w = this.w; + var cnf = w.config; // check if responsive config exists + + if (cnf.responsive.length === 0) return; + var res = cnf.responsive.slice(); + res.sort(function (a, b) { + return a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0; + }).reverse(); + var config = new Config({}); + + var iterateResponsiveOptions = function iterateResponsiveOptions() { + var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var largestBreakpoint = res[0].breakpoint; + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; + + if (width > largestBreakpoint) { + var options = CoreUtils.extendArrayProps(config, w.globals.initialConfig, w); + newOptions = Utils$1.extend(options, newOptions); + newOptions = Utils$1.extend(w.config, newOptions); + + _this.overrideResponsiveOptions(newOptions); + } else { + for (var i = 0; i < res.length; i++) { + if (width < res[i].breakpoint) { + newOptions = CoreUtils.extendArrayProps(config, res[i].options, w); + newOptions = Utils$1.extend(w.config, newOptions); + + _this.overrideResponsiveOptions(newOptions); + } + } + } + }; + + if (opts) { + var options = CoreUtils.extendArrayProps(config, opts, w); + options = Utils$1.extend(w.config, options); + options = Utils$1.extend(options, opts); + iterateResponsiveOptions(options); + } else { + iterateResponsiveOptions({}); + } + } + }, { + key: "overrideResponsiveOptions", + value: function overrideResponsiveOptions(newOptions) { + var newConfig = new Config(newOptions).init({ + responsiveOverride: true + }); + this.w.config = newConfig; + } + }]); + + return Responsive; + }(); + + /** + * ApexCharts Theme Class for setting the colors and palettes. + * + * @module Theme + **/ + + var Theme = /*#__PURE__*/function () { + function Theme(ctx) { + _classCallCheck(this, Theme); + + this.ctx = ctx; + this.colors = []; + this.w = ctx.w; + var w = this.w; + this.isColorFn = false; + this.isHeatmapDistributed = w.config.chart.type === 'treemap' && w.config.plotOptions.treemap.distributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.distributed; + this.isBarDistributed = w.config.plotOptions.bar.distributed && (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar'); + } + + _createClass(Theme, [{ + key: "init", + value: function init() { + this.setDefaultColors(); + } + }, { + key: "setDefaultColors", + value: function setDefaultColors() { + var _this = this; + + var w = this.w; + var utils = new Utils$1(); + w.globals.dom.elWrap.classList.add("apexcharts-theme-".concat(w.config.theme.mode)); + + if (w.config.colors === undefined) { + w.globals.colors = this.predefined(); + } else { + w.globals.colors = w.config.colors; // if user provided a function in colors, we need to eval here + + if (Array.isArray(w.config.colors) && w.config.colors.length > 0 && typeof w.config.colors[0] === 'function') { + w.globals.colors = w.config.series.map(function (s, i) { + var c = w.config.colors[i]; + if (!c) c = w.config.colors[0]; + + if (typeof c === 'function') { + _this.isColorFn = true; + return c({ + value: w.globals.axisCharts ? w.globals.series[i][0] ? w.globals.series[i][0] : 0 : w.globals.series[i], + seriesIndex: i, + dataPointIndex: i, + w: w + }); + } + + return c; + }); + } + } // user defined colors in series array + + + w.globals.seriesColors.map(function (c, i) { + if (c) { + w.globals.colors[i] = c; + } + }); + + if (w.config.theme.monochrome.enabled) { + var monoArr = []; + var glsCnt = w.globals.series.length; + + if (this.isBarDistributed || this.isHeatmapDistributed) { + glsCnt = w.globals.series[0].length * w.globals.series.length; + } + + var mainColor = w.config.theme.monochrome.color; + var part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity); + var shade = w.config.theme.monochrome.shadeTo; + var percent = 0; + + for (var gsl = 0; gsl < glsCnt; gsl++) { + var newColor = void 0; + + if (shade === 'dark') { + newColor = utils.shadeColor(percent * -1, mainColor); + percent = percent + part; + } else { + newColor = utils.shadeColor(percent, mainColor); + percent = percent + part; + } + + monoArr.push(newColor); + } + + w.globals.colors = monoArr.slice(); + } + + var defaultColors = w.globals.colors.slice(); // if user specified fewer colors than no. of series, push the same colors again + + this.pushExtraColors(w.globals.colors); + var colorTypes = ['fill', 'stroke']; + colorTypes.forEach(function (c) { + if (w.config[c].colors === undefined) { + w.globals[c].colors = _this.isColorFn ? w.config.colors : defaultColors; + } else { + w.globals[c].colors = w.config[c].colors.slice(); + } + + _this.pushExtraColors(w.globals[c].colors); + }); + + if (w.config.dataLabels.style.colors === undefined) { + w.globals.dataLabels.style.colors = defaultColors; + } else { + w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors.slice(); + } + + this.pushExtraColors(w.globals.dataLabels.style.colors, 50); + + if (w.config.plotOptions.radar.polygons.fill.colors === undefined) { + w.globals.radarPolygons.fill.colors = [w.config.theme.mode === 'dark' ? '#424242' : 'none']; + } else { + w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors.slice(); + } + + this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20); // The point colors + + if (w.config.markers.colors === undefined) { + w.globals.markers.colors = defaultColors; + } else { + w.globals.markers.colors = w.config.markers.colors.slice(); + } + + this.pushExtraColors(w.globals.markers.colors); + } // When the number of colors provided is less than the number of series, this method + // will push same colors to the list + // params: + // distributed is only valid for distributed column/bar charts + + }, { + key: "pushExtraColors", + value: function pushExtraColors(colorSeries, length) { + var distributed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var w = this.w; + var len = length || w.globals.series.length; + + if (distributed === null) { + distributed = this.isBarDistributed || this.isHeatmapDistributed || w.config.chart.type === 'heatmap' && w.config.plotOptions.heatmap.colorScale.inverse; + } + + if (distributed && w.globals.series.length) { + len = w.globals.series[w.globals.maxValsInArrayIndex].length * w.globals.series.length; + } + + if (colorSeries.length < len) { + var diff = len - colorSeries.length; + + for (var i = 0; i < diff; i++) { + colorSeries.push(colorSeries[i]); + } + } + } + }, { + key: "updateThemeOptions", + value: function updateThemeOptions(options) { + options.chart = options.chart || {}; + options.tooltip = options.tooltip || {}; + var mode = options.theme.mode || 'light'; + var palette = options.theme.palette ? options.theme.palette : mode === 'dark' ? 'palette4' : 'palette1'; + var foreColor = options.chart.foreColor ? options.chart.foreColor : mode === 'dark' ? '#f6f7f8' : '#373d3f'; + options.tooltip.theme = mode; + options.chart.foreColor = foreColor; + options.theme.palette = palette; + return options; + } + }, { + key: "predefined", + value: function predefined() { + var palette = this.w.config.theme.palette; // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF + + switch (palette) { + case 'palette1': + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0']; + break; + + case 'palette2': + this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800']; + break; + + case 'palette3': + this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B']; + break; + + case 'palette4': + this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A']; + break; + + case 'palette5': + this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7']; + break; + + case 'palette6': + this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D']; + break; + + case 'palette7': + this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044']; + break; + + case 'palette8': + this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD']; + break; + + case 'palette9': + this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF']; + break; + + case 'palette10': + this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2']; + break; + + default: + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0']; + break; + } + + return this.colors; + } + }]); + + return Theme; + }(); + + var TitleSubtitle = /*#__PURE__*/function () { + function TitleSubtitle(ctx) { + _classCallCheck(this, TitleSubtitle); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(TitleSubtitle, [{ + key: "draw", + value: function draw() { + this.drawTitleSubtitle('title'); + this.drawTitleSubtitle('subtitle'); + } + }, { + key: "drawTitleSubtitle", + value: function drawTitleSubtitle(type) { + var w = this.w; + var tsConfig = type === 'title' ? w.config.title : w.config.subtitle; + var x = w.globals.svgWidth / 2; + var y = tsConfig.offsetY; + var textAnchor = 'middle'; + + if (tsConfig.align === 'left') { + x = 10; + textAnchor = 'start'; + } else if (tsConfig.align === 'right') { + x = w.globals.svgWidth - 10; + textAnchor = 'end'; + } + + x = x + tsConfig.offsetX; + y = y + parseInt(tsConfig.style.fontSize, 10) + tsConfig.margin / 2; + + if (tsConfig.text !== undefined) { + var graphics = new Graphics(this.ctx); + var titleText = graphics.drawText({ + x: x, + y: y, + text: tsConfig.text, + textAnchor: textAnchor, + fontSize: tsConfig.style.fontSize, + fontFamily: tsConfig.style.fontFamily, + fontWeight: tsConfig.style.fontWeight, + foreColor: tsConfig.style.color, + opacity: 1 + }); + titleText.node.setAttribute('class', "apexcharts-".concat(type, "-text")); + w.globals.dom.Paper.add(titleText); + } + } + }]); + + return TitleSubtitle; + }(); + + var Helpers$3 = /*#__PURE__*/function () { + function Helpers(dCtx) { + _classCallCheck(this, Helpers); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get Chart Title/Subtitle Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(Helpers, [{ + key: "getTitleSubtitleCoords", + value: function getTitleSubtitleCoords(type) { + var w = this.w; + var width = 0; + var height = 0; + var floating = type === 'title' ? w.config.title.floating : w.config.subtitle.floating; + var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(type, "-text")); + + if (el !== null && !floating) { + var coord = el.getBoundingClientRect(); + width = coord.width; + height = w.globals.axisCharts ? coord.height + 5 : coord.height; + } + + return { + width: width, + height: height + }; + } + }, { + key: "getLegendsRect", + value: function getLegendsRect() { + var w = this.w; + var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend'); + + if (!w.config.legend.height && (w.config.legend.position === 'top' || w.config.legend.position === 'bottom')) { + // avoid legend to take up all the space + elLegendWrap.style.maxHeight = w.globals.svgHeight / 2 + 'px'; + } + + var lgRect = Object.assign({}, Utils$1.getBoundingClientRect(elLegendWrap)); + + if (elLegendWrap !== null && !w.config.legend.floating && w.config.legend.show) { + this.dCtx.lgRect = { + x: lgRect.x, + y: lgRect.y, + height: lgRect.height, + width: lgRect.height === 0 ? 0 : lgRect.width + }; + } else { + this.dCtx.lgRect = { + x: 0, + y: 0, + height: 0, + width: 0 + }; + } // if legend takes up all of the chart space, we need to restrict it. + + + if (w.config.legend.position === 'left' || w.config.legend.position === 'right') { + if (this.dCtx.lgRect.width * 1.5 > w.globals.svgWidth) { + this.dCtx.lgRect.width = w.globals.svgWidth / 1.5; + } + } + + return this.dCtx.lgRect; + } + }, { + key: "getLargestStringFromMultiArr", + value: function getLargestStringFromMultiArr(val, arr) { + var w = this.w; + var valArr = val; + + if (w.globals.isMultiLineX) { + // if the xaxis labels has multiline texts (array) + var maxArrs = arr.map(function (xl, idx) { + return Array.isArray(xl) ? xl.length : 1; + }); + var maxArrLen = Math.max.apply(Math, _toConsumableArray(maxArrs)); + var maxArrIndex = maxArrs.indexOf(maxArrLen); + valArr = arr[maxArrIndex]; + } + + return valArr; + } + }]); + + return Helpers; + }(); + + var DimXAxis = /*#__PURE__*/function () { + function DimXAxis(dCtx) { + _classCallCheck(this, DimXAxis); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get X Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(DimXAxis, [{ + key: "getxAxisLabelsCoords", + value: function getxAxisLabelsCoords() { + var w = this.w; + var xaxisLabels = w.globals.labels.slice(); + + if (w.config.xaxis.convertedCatToNumeric && xaxisLabels.length === 0) { + xaxisLabels = w.globals.categoryLabels; + } + + var rect; + + if (w.globals.timescaleLabels.length > 0) { + var coords = this.getxAxisTimeScaleLabelsCoords(); + rect = { + width: coords.width, + height: coords.height + }; + w.globals.rotateXLabels = false; + } else { + this.dCtx.lgWidthForSideLegends = (w.config.legend.position === 'left' || w.config.legend.position === 'right') && !w.config.legend.floating ? this.dCtx.lgRect.width : 0; // get the longest string from the labels array and also apply label formatter + + var xlbFormatter = w.globals.xLabelFormatter; // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + + var val = Utils$1.getLargestStringFromArr(xaxisLabels); + var valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, xaxisLabels); // the labels gets changed for bar charts + + if (w.globals.isBarHorizontal) { + val = w.globals.yAxisScale[0].result.reduce(function (a, b) { + return a.length > b.length ? a : b; + }, 0); + valArr = val; + } + + var xFormat = new Formatters(this.dCtx.ctx); + var timestamp = val; + val = xFormat.xLabelFormat(xlbFormatter, val, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w: w + }); + valArr = xFormat.xLabelFormat(xlbFormatter, valArr, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w: w + }); + + if (w.config.xaxis.convertedCatToNumeric && typeof val === 'undefined' || String(val).trim() === '') { + val = '1'; + valArr = val; + } + + var graphics = new Graphics(this.dCtx.ctx); + var xLabelrect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize); + var xArrLabelrect = xLabelrect; + + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects(valArr, w.config.xaxis.labels.style.fontSize); + } + + rect = { + width: xLabelrect.width >= xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width, + height: xLabelrect.height >= xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height + }; + + if (rect.width * xaxisLabels.length > w.globals.svgWidth - this.dCtx.lgWidthForSideLegends - this.dCtx.yAxisWidth - this.dCtx.gridPad.left - this.dCtx.gridPad.right && w.config.xaxis.labels.rotate !== 0 || w.config.xaxis.labels.rotateAlways) { + if (!w.globals.isBarHorizontal) { + w.globals.rotateXLabels = true; + + var getRotatedTextRects = function getRotatedTextRects(text) { + return graphics.getTextRects(text, w.config.xaxis.labels.style.fontSize, w.config.xaxis.labels.style.fontFamily, "rotate(".concat(w.config.xaxis.labels.rotate, " 0 0)"), false); + }; + + xLabelrect = getRotatedTextRects(val); + + if (val !== valArr) { + xArrLabelrect = getRotatedTextRects(valArr); + } + + rect.height = (xLabelrect.height > xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height) / 1.5; + rect.width = xLabelrect.width > xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width; + } + } else { + w.globals.rotateXLabels = false; + } + } + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + }; + } + + return { + width: rect.width, + height: rect.height + }; + } + /** + * Get X Axis Label Group height + * @memberof Dimensions + * @return {{width, height}} + */ + + }, { + key: "getxAxisGroupLabelsCoords", + value: function getxAxisGroupLabelsCoords() { + var _w$config$xaxis$group; + + var w = this.w; + + if (!w.globals.hasGroups) { + return { + width: 0, + height: 0 + }; + } + + var fontSize = ((_w$config$xaxis$group = w.config.xaxis.group.style) === null || _w$config$xaxis$group === void 0 ? void 0 : _w$config$xaxis$group.fontSize) || w.config.xaxis.labels.style.fontSize; + var xaxisLabels = w.globals.groups.map(function (g) { + return g.title; + }); + var rect; // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + + var val = Utils$1.getLargestStringFromArr(xaxisLabels); + var valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, xaxisLabels); + var graphics = new Graphics(this.dCtx.ctx); + var xLabelrect = graphics.getTextRects(val, fontSize); + var xArrLabelrect = xLabelrect; + + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects(valArr, fontSize); + } + + rect = { + width: xLabelrect.width >= xArrLabelrect.width ? xLabelrect.width : xArrLabelrect.width, + height: xLabelrect.height >= xArrLabelrect.height ? xLabelrect.height : xArrLabelrect.height + }; + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + }; + } + + return { + width: rect.width, + height: rect.height + }; + } + /** + * Get X Axis Title Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + }, { + key: "getxAxisTitleCoords", + value: function getxAxisTitleCoords() { + var w = this.w; + var width = 0; + var height = 0; + + if (w.config.xaxis.title.text !== undefined) { + var graphics = new Graphics(this.dCtx.ctx); + var rect = graphics.getTextRects(w.config.xaxis.title.text, w.config.xaxis.title.style.fontSize); + width = rect.width; + height = rect.height; + } + + return { + width: width, + height: height + }; + } + }, { + key: "getxAxisTimeScaleLabelsCoords", + value: function getxAxisTimeScaleLabelsCoords() { + var w = this.w; + var rect; + this.dCtx.timescaleLabels = w.globals.timescaleLabels.slice(); + var labels = this.dCtx.timescaleLabels.map(function (label) { + return label.value; + }); // get the longest string from the labels array and also apply label formatter to it + + var val = labels.reduce(function (a, b) { + // if undefined, maybe user didn't pass the datetime(x) values + if (typeof a === 'undefined') { + console.error('You have possibly supplied invalid Date format. Please supply a valid JavaScript Date'); + return 0; + } else { + return a.length > b.length ? a : b; + } + }, 0); + var graphics = new Graphics(this.dCtx.ctx); + rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize); + var totalWidthRotated = rect.width * 1.05 * labels.length; + + if (totalWidthRotated > w.globals.gridWidth && w.config.xaxis.labels.rotate !== 0) { + w.globals.overlappingXLabels = true; + } + + return rect; + } // In certain cases, the last labels gets cropped in xaxis. + // Hence, we add some additional padding based on the label length to avoid the last label being cropped or we don't draw it at all + + }, { + key: "additionalPaddingXLabels", + value: function additionalPaddingXLabels(xaxisLabelCoords) { + var _this = this; + + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var xtype = cnf.xaxis.type; + var lbWidth = xaxisLabelCoords.width; + gl.skipLastTimelinelabel = false; + gl.skipFirstTimelinelabel = false; + var isBarOpposite = w.config.yaxis[0].opposite && w.globals.isBarHorizontal; + + var isCollapsed = function isCollapsed(i) { + return gl.collapsedSeriesIndices.indexOf(i) !== -1; + }; + + var rightPad = function rightPad(yaxe) { + if (_this.dCtx.timescaleLabels && _this.dCtx.timescaleLabels.length) { + // for timeline labels, we take the last label and check if it exceeds gridWidth + var firstimescaleLabel = _this.dCtx.timescaleLabels[0]; + var lastTimescaleLabel = _this.dCtx.timescaleLabels[_this.dCtx.timescaleLabels.length - 1]; + var lastLabelPosition = lastTimescaleLabel.position + lbWidth / 1.75 - _this.dCtx.yAxisWidthRight; + var firstLabelPosition = firstimescaleLabel.position - lbWidth / 1.75 + _this.dCtx.yAxisWidthLeft; + var lgRightRectWidth = w.config.legend.position === 'right' && _this.dCtx.lgRect.width > 0 ? _this.dCtx.lgRect.width : 0; + + if (lastLabelPosition > gl.svgWidth - gl.translateX - lgRightRectWidth) { + gl.skipLastTimelinelabel = true; + } + + if (firstLabelPosition < -((!yaxe.show || yaxe.floating) && (cnf.chart.type === 'bar' || cnf.chart.type === 'candlestick' || cnf.chart.type === 'rangeBar' || cnf.chart.type === 'boxPlot') ? lbWidth / 1.75 : 10)) { + gl.skipFirstTimelinelabel = true; + } + } else if (xtype === 'datetime') { + // If user has enabled DateTime, but uses own's formatter + if (_this.dCtx.gridPad.right < lbWidth && !gl.rotateXLabels) { + gl.skipLastTimelinelabel = true; + } + } else if (xtype !== 'datetime') { + if (_this.dCtx.gridPad.right < lbWidth / 2 - _this.dCtx.yAxisWidthRight && !gl.rotateXLabels && !w.config.xaxis.labels.trim && (w.config.xaxis.tickPlacement !== 'between' || w.globals.isBarHorizontal)) { + _this.dCtx.xPadRight = lbWidth / 2 + 1; + } + } + }; + + var padYAxe = function padYAxe(yaxe, i) { + if (isCollapsed(i)) return; // the code below causes issue apexcharts.js#1989 + // after testing with other use-cases, this has no actual value, hence commented + // if (xtype !== 'datetime') { + // if ( + // this.dCtx.gridPad.left < lbWidth / 2 - this.dCtx.yAxisWidthLeft && + // !gl.rotateXLabels && + // !cnf.xaxis.labels.trim + // ) { + // this.dCtx.xPadLeft = lbWidth / 2 + 1 + // } + // } + + rightPad(yaxe); + }; + + cnf.yaxis.forEach(function (yaxe, i) { + if (isBarOpposite) { + if (_this.dCtx.gridPad.left < lbWidth) { + _this.dCtx.xPadLeft = lbWidth / 2 + 1; + } + + _this.dCtx.xPadRight = lbWidth / 2 + 1; + } else { + padYAxe(yaxe, i); + } + }); + } + }]); + + return DimXAxis; + }(); + + var DimYAxis = /*#__PURE__*/function () { + function DimYAxis(dCtx) { + _classCallCheck(this, DimYAxis); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + + _createClass(DimYAxis, [{ + key: "getyAxisLabelsCoords", + value: function getyAxisLabelsCoords() { + var _this = this; + + var w = this.w; + var width = 0; + var height = 0; + var ret = []; + var labelPad = 10; + var axesUtils = new AxesUtils(this.dCtx.ctx); + w.config.yaxis.map(function (yaxe, index) { + var yS = w.globals.yAxisScale[index]; + var yAxisMinWidth = 0; + if (!axesUtils.isYAxisHidden(index) && yaxe.labels.show && yaxe.labels.minWidth !== undefined) yAxisMinWidth = yaxe.labels.minWidth; + + if (!axesUtils.isYAxisHidden(index) && yaxe.labels.show && yS.result.length) { + var lbFormatter = w.globals.yLabelFormatters[index]; + var minV = yS.niceMin === Number.MIN_VALUE ? 0 : yS.niceMin; + var longestStr = String(minV).length > String(yS.niceMax).length ? minV : yS.niceMax; // the second parameter -1 is the index of tick which user can use in the formatter + + var val = lbFormatter(longestStr, { + seriesIndex: index, + dataPointIndex: -1, + w: w + }); + var valArr = val; // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is. + + if (typeof val === 'undefined' || val.length === 0) { + val = longestStr; + } + + if (w.globals.isBarHorizontal) { + labelPad = 0; + var barYaxisLabels = w.globals.labels.slice(); // get the longest string from the labels array and also apply label formatter to it + + val = Utils$1.getLargestStringFromArr(barYaxisLabels); + val = lbFormatter(val, { + seriesIndex: index, + dataPointIndex: -1, + w: w + }); + valArr = _this.dCtx.dimHelpers.getLargestStringFromMultiArr(val, barYaxisLabels); + } + + var graphics = new Graphics(_this.dCtx.ctx); + var rotateStr = 'rotate('.concat(yaxe.labels.rotate, ' 0 0)'); + var rect = graphics.getTextRects(val, yaxe.labels.style.fontSize, yaxe.labels.style.fontFamily, rotateStr, false); + var arrLabelrect = rect; + + if (val !== valArr) { + arrLabelrect = graphics.getTextRects(valArr, yaxe.labels.style.fontSize, yaxe.labels.style.fontFamily, rotateStr, false); + } + + ret.push({ + width: (yAxisMinWidth > arrLabelrect.width || yAxisMinWidth > rect.width ? yAxisMinWidth : arrLabelrect.width > rect.width ? arrLabelrect.width : rect.width) + labelPad, + height: arrLabelrect.height > rect.height ? arrLabelrect.height : rect.height + }); + } else { + ret.push({ + width: width, + height: height + }); + } + }); + return ret; + } + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + + }, { + key: "getyAxisTitleCoords", + value: function getyAxisTitleCoords() { + var _this2 = this; + + var w = this.w; + var ret = []; + w.config.yaxis.map(function (yaxe, index) { + if (yaxe.show && yaxe.title.text !== undefined) { + var graphics = new Graphics(_this2.dCtx.ctx); + var rotateStr = 'rotate('.concat(yaxe.title.rotate, ' 0 0)'); + var rect = graphics.getTextRects(yaxe.title.text, yaxe.title.style.fontSize, yaxe.title.style.fontFamily, rotateStr, false); + ret.push({ + width: rect.width, + height: rect.height + }); + } else { + ret.push({ + width: 0, + height: 0 + }); + } + }); + return ret; + } + }, { + key: "getTotalYAxisWidth", + value: function getTotalYAxisWidth() { + var w = this.w; + var yAxisWidth = 0; + var yAxisWidthLeft = 0; + var yAxisWidthRight = 0; + var padding = w.globals.yAxisScale.length > 1 ? 10 : 0; + var axesUtils = new AxesUtils(this.dCtx.ctx); + + var isHiddenYAxis = function isHiddenYAxis(index) { + return w.globals.ignoreYAxisIndexes.indexOf(index) > -1; + }; + + var padForLabelTitle = function padForLabelTitle(coord, index) { + var floating = w.config.yaxis[index].floating; + var width = 0; + + if (coord.width > 0 && !floating) { + width = coord.width + padding; + + if (isHiddenYAxis(index)) { + width = width - coord.width - padding; + } + } else { + width = floating || axesUtils.isYAxisHidden(index) ? 0 : 5; + } + + w.config.yaxis[index].opposite ? yAxisWidthRight = yAxisWidthRight + width : yAxisWidthLeft = yAxisWidthLeft + width; + yAxisWidth = yAxisWidth + width; + }; + + w.globals.yLabelsCoords.map(function (yLabelCoord, index) { + padForLabelTitle(yLabelCoord, index); + }); + w.globals.yTitleCoords.map(function (yTitleCoord, index) { + padForLabelTitle(yTitleCoord, index); + }); + + if (w.globals.isBarHorizontal && !w.config.yaxis[0].floating) { + yAxisWidth = w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15; + } + + this.dCtx.yAxisWidthLeft = yAxisWidthLeft; + this.dCtx.yAxisWidthRight = yAxisWidthRight; + return yAxisWidth; + } + }]); + + return DimYAxis; + }(); + + var DimGrid = /*#__PURE__*/function () { + function DimGrid(dCtx) { + _classCallCheck(this, DimGrid); + + this.w = dCtx.w; + this.dCtx = dCtx; + } + + _createClass(DimGrid, [{ + key: "gridPadForColumnsInNumericAxis", + value: function gridPadForColumnsInNumericAxis(gridWidth) { + var w = this.w; + + if (w.globals.noData || w.globals.allSeriesCollapsed) { + return 0; + } + + var hasBar = function hasBar(type) { + return type === 'bar' || type === 'rangeBar' || type === 'candlestick' || type === 'boxPlot'; + }; + + var type = w.config.chart.type; + var barWidth = 0; + var seriesLen = hasBar(type) ? w.config.series.length : 1; + + if (w.globals.comboBarCount > 0) { + seriesLen = w.globals.comboBarCount; + } + + w.globals.collapsedSeries.forEach(function (c) { + if (hasBar(c.type)) { + seriesLen = seriesLen - 1; + } + }); + + if (w.config.chart.stacked) { + seriesLen = 1; + } + + var barsPresent = hasBar(type) || w.globals.comboBarCount > 0; + + if (barsPresent && w.globals.isXNumeric && !w.globals.isBarHorizontal && seriesLen > 0) { + var xRatio = 0; + var xRange = Math.abs(w.globals.initialMaxX - w.globals.initialMinX); + + if (xRange <= 3) { + xRange = w.globals.dataPoints; + } + + xRatio = xRange / gridWidth; + var xDivision; // max barwidth should be equal to minXDiff to avoid overlap + + if (w.globals.minXDiff && w.globals.minXDiff / xRatio > 0) { + xDivision = w.globals.minXDiff / xRatio; + } + + if (xDivision > gridWidth / 2) { + xDivision = xDivision / 2; + } + + barWidth = xDivision / seriesLen * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100; + + if (barWidth < 1) { + barWidth = 1; + } + + barWidth = barWidth / (seriesLen > 1 ? 1 : 1.5) + 5; + w.globals.barPadForNumericAxis = barWidth; + } + + return barWidth; + } + }, { + key: "gridPadFortitleSubtitle", + value: function gridPadFortitleSubtitle() { + var _this = this; + + var w = this.w; + var gl = w.globals; + var gridShrinkOffset = this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 10; + var titleSubtitle = ['title', 'subtitle']; + titleSubtitle.forEach(function (t) { + if (w.config[t].text !== undefined) { + gridShrinkOffset += w.config[t].margin; + } else { + gridShrinkOffset += _this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 5; + } + }); + + if (w.config.legend.show && w.config.legend.position === 'bottom' && !w.config.legend.floating && !w.globals.axisCharts) { + gridShrinkOffset += 10; + } + + var titleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('title'); + var subtitleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('subtitle'); + gl.gridHeight = gl.gridHeight - titleCoords.height - subtitleCoords.height - gridShrinkOffset; + gl.translateY = gl.translateY + titleCoords.height + subtitleCoords.height + gridShrinkOffset; + } + }, { + key: "setGridXPosForDualYAxis", + value: function setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) { + var w = this.w; + var axesUtils = new AxesUtils(this.dCtx.ctx); + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && !yaxe.floating && !axesUtils.isYAxisHidden(index)) { + if (yaxe.opposite) { + w.globals.translateX = w.globals.translateX - (yaxisLabelCoords[index].width + yTitleCoords[index].width) - parseInt(w.config.yaxis[index].labels.style.fontSize, 10) / 1.2 - 12; + } // fixes apexcharts.js#1599 + + + if (w.globals.translateX < 2) { + w.globals.translateX = 2; + } + } + }); + } + }]); + + return DimGrid; + }(); + + /** + * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn. + * + * @module Dimensions + **/ + + var Dimensions = /*#__PURE__*/function () { + function Dimensions(ctx) { + _classCallCheck(this, Dimensions); + + this.ctx = ctx; + this.w = ctx.w; + this.lgRect = {}; + this.yAxisWidth = 0; + this.yAxisWidthLeft = 0; + this.yAxisWidthRight = 0; + this.xAxisHeight = 0; + this.isSparkline = this.w.config.chart.sparkline.enabled; + this.dimHelpers = new Helpers$3(this); + this.dimYAxis = new DimYAxis(this); + this.dimXAxis = new DimXAxis(this); + this.dimGrid = new DimGrid(this); + this.lgWidthForSideLegends = 0; + this.gridPad = this.w.config.grid.padding; + this.xPadRight = 0; + this.xPadLeft = 0; + } + /** + * @memberof Dimensions + * @param {object} w - chart context + **/ + + + _createClass(Dimensions, [{ + key: "plotCoords", + value: function plotCoords() { + var _this = this; + + var w = this.w; + var gl = w.globals; + this.lgRect = this.dimHelpers.getLegendsRect(); + + if (this.isSparkline && (w.config.markers.discrete.length > 0 || w.config.markers.size > 0)) { + Object.entries(this.gridPad).forEach(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + k = _ref2[0], + v = _ref2[1]; + + _this.gridPad[k] = Math.max(v, _this.w.globals.markers.largestSize / 1.5); + }); + } + + if (gl.axisCharts) { + // for line / area / scatter / column + this.setDimensionsForAxisCharts(); + } else { + // for pie / donuts / circle + this.setDimensionsForNonAxisCharts(); + } + + this.dimGrid.gridPadFortitleSubtitle(); // after calculating everything, apply padding set by user + + gl.gridHeight = gl.gridHeight - this.gridPad.top - this.gridPad.bottom; + gl.gridWidth = gl.gridWidth - this.gridPad.left - this.gridPad.right - this.xPadRight - this.xPadLeft; + var barWidth = this.dimGrid.gridPadForColumnsInNumericAxis(gl.gridWidth); + gl.gridWidth = gl.gridWidth - barWidth * 2; + gl.translateX = gl.translateX + this.gridPad.left + this.xPadLeft + (barWidth > 0 ? barWidth + 4 : 0); + gl.translateY = gl.translateY + this.gridPad.top; + } + }, { + key: "setDimensionsForAxisCharts", + value: function setDimensionsForAxisCharts() { + var _this2 = this; + + var w = this.w; + var gl = w.globals; + var yaxisLabelCoords = this.dimYAxis.getyAxisLabelsCoords(); + var yTitleCoords = this.dimYAxis.getyAxisTitleCoords(); + w.globals.yLabelsCoords = []; + w.globals.yTitleCoords = []; + w.config.yaxis.map(function (yaxe, index) { + // store the labels and titles coords in global vars + w.globals.yLabelsCoords.push({ + width: yaxisLabelCoords[index].width, + index: index + }); + w.globals.yTitleCoords.push({ + width: yTitleCoords[index].width, + index: index + }); + }); + this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth(); + var xaxisLabelCoords = this.dimXAxis.getxAxisLabelsCoords(); + var xaxisGroupLabelCoords = this.dimXAxis.getxAxisGroupLabelsCoords(); + var xtitleCoords = this.dimXAxis.getxAxisTitleCoords(); + this.conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords, xaxisGroupLabelCoords); + gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4; + gl.translateXAxisX = w.globals.rotateXLabels && w.globals.isXNumeric && w.config.xaxis.labels.rotate <= -45 ? -this.xAxisWidth / 4 : 0; + + if (w.globals.isBarHorizontal) { + gl.rotateXLabels = false; + gl.translateXAxisY = -1 * (parseInt(w.config.xaxis.labels.style.fontSize, 10) / 1.5); + } + + gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY; + gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX; + var yAxisWidth = this.yAxisWidth; + var xAxisHeight = this.xAxisHeight; + gl.xAxisLabelsHeight = this.xAxisHeight - xtitleCoords.height; + gl.xAxisGroupLabelsHeight = gl.xAxisLabelsHeight - xaxisLabelCoords.height; + gl.xAxisLabelsWidth = this.xAxisWidth; + gl.xAxisHeight = this.xAxisHeight; + var translateY = 10; + + if (w.config.chart.type === 'radar' || this.isSparkline) { + yAxisWidth = 0; + xAxisHeight = gl.goldenPadding; + } + + if (this.isSparkline) { + this.lgRect = { + height: 0, + width: 0 + }; + } + + if (this.isSparkline || w.config.chart.type === 'treemap') { + yAxisWidth = 0; + xAxisHeight = 0; + translateY = 0; + } + + if (!this.isSparkline) { + this.dimXAxis.additionalPaddingXLabels(xaxisLabelCoords); + } + + var legendTopBottom = function legendTopBottom() { + gl.translateX = yAxisWidth; + gl.gridHeight = gl.svgHeight - _this2.lgRect.height - xAxisHeight - (!_this2.isSparkline && w.config.chart.type !== 'treemap' ? w.globals.rotateXLabels ? 10 : 15 : 0); + gl.gridWidth = gl.svgWidth - yAxisWidth; + }; + + if (w.config.xaxis.position === 'top') translateY = gl.xAxisHeight - w.config.xaxis.axisTicks.height - 5; + + switch (w.config.legend.position) { + case 'bottom': + gl.translateY = translateY; + legendTopBottom(); + break; + + case 'top': + gl.translateY = this.lgRect.height + translateY; + legendTopBottom(); + break; + + case 'left': + gl.translateY = translateY; + gl.translateX = this.lgRect.width + yAxisWidth; + gl.gridHeight = gl.svgHeight - xAxisHeight - 12; + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth; + break; + + case 'right': + gl.translateY = translateY; + gl.translateX = yAxisWidth; + gl.gridHeight = gl.svgHeight - xAxisHeight - 12; + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth - 5; + break; + + default: + throw new Error('Legend position not supported'); + } + + this.dimGrid.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords); // after drawing everything, set the Y axis positions + + var objyAxis = new YAxis(this.ctx); + objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords); + } + }, { + key: "setDimensionsForNonAxisCharts", + value: function setDimensionsForNonAxisCharts() { + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var xPad = 0; + + if (w.config.legend.show && !w.config.legend.floating) { + xPad = 20; + } + + var type = cnf.chart.type === 'pie' || cnf.chart.type === 'polarArea' || cnf.chart.type === 'donut' ? 'pie' : 'radialBar'; + var offY = cnf.plotOptions[type].offsetY; + var offX = cnf.plotOptions[type].offsetX; + + if (!cnf.legend.show || cnf.legend.floating) { + gl.gridHeight = gl.svgHeight - cnf.grid.padding.left + cnf.grid.padding.right; + gl.gridWidth = gl.gridHeight; + gl.translateY = offY; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + return; + } + + switch (cnf.legend.position) { + case 'bottom': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding; + gl.gridWidth = gl.svgWidth; + gl.translateY = offY - 10; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + break; + + case 'top': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding; + gl.gridWidth = gl.svgWidth; + gl.translateY = this.lgRect.height + offY + 10; + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2; + break; + + case 'left': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad; + gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth; + gl.translateY = offY; + gl.translateX = offX + this.lgRect.width + xPad; + break; + + case 'right': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad - 5; + gl.gridHeight = cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth; + gl.translateY = offY; + gl.translateX = offX + 10; + break; + + default: + throw new Error('Legend position not supported'); + } + } + }, { + key: "conditionalChecksForAxisCoords", + value: function conditionalChecksForAxisCoords(xaxisLabelCoords, xtitleCoords, xaxisGroupLabelCoords) { + var w = this.w; + var xAxisNum = w.globals.hasGroups ? 2 : 1; + var baseXAxisHeight = xaxisGroupLabelCoords.height + xaxisLabelCoords.height + xtitleCoords.height; + var xAxisHeightMultiplicate = w.globals.isMultiLineX ? 1.2 : w.globals.LINE_HEIGHT_RATIO; + var rotatedXAxisOffset = w.globals.rotateXLabels ? 22 : 10; + var rotatedXAxisLegendOffset = w.globals.rotateXLabels && w.config.legend.position === 'bottom'; + var additionalOffset = rotatedXAxisLegendOffset ? 10 : 0; + this.xAxisHeight = baseXAxisHeight * xAxisHeightMultiplicate + xAxisNum * rotatedXAxisOffset + additionalOffset; + this.xAxisWidth = xaxisLabelCoords.width; + + if (this.xAxisHeight - xtitleCoords.height > w.config.xaxis.labels.maxHeight) { + this.xAxisHeight = w.config.xaxis.labels.maxHeight; + } + + if (w.config.xaxis.labels.minHeight && this.xAxisHeight < w.config.xaxis.labels.minHeight) { + this.xAxisHeight = w.config.xaxis.labels.minHeight; + } + + if (w.config.xaxis.floating) { + this.xAxisHeight = 0; + } + + var minYAxisWidth = 0; + var maxYAxisWidth = 0; + w.config.yaxis.forEach(function (y) { + minYAxisWidth += y.labels.minWidth; + maxYAxisWidth += y.labels.maxWidth; + }); + + if (this.yAxisWidth < minYAxisWidth) { + this.yAxisWidth = minYAxisWidth; + } + + if (this.yAxisWidth > maxYAxisWidth) { + this.yAxisWidth = maxYAxisWidth; + } + } + }]); + + return Dimensions; + }(); + + var Helpers$2 = /*#__PURE__*/function () { + function Helpers(lgCtx) { + _classCallCheck(this, Helpers); + + this.w = lgCtx.w; + this.lgCtx = lgCtx; + } + + _createClass(Helpers, [{ + key: "getLegendStyles", + value: function getLegendStyles() { + var stylesheet = document.createElement('style'); + stylesheet.setAttribute('type', 'text/css'); + var text = "\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }"; + var rules = document.createTextNode(text); + stylesheet.appendChild(rules); + return stylesheet; + } + }, { + key: "getLegendBBox", + value: function getLegendBBox() { + var w = this.w; + var currLegendsWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend'); + var currLegendsWrapRect = currLegendsWrap.getBoundingClientRect(); + var currLegendsWrapWidth = currLegendsWrapRect.width; + var currLegendsWrapHeight = currLegendsWrapRect.height; + return { + clwh: currLegendsWrapHeight, + clww: currLegendsWrapWidth + }; + } + }, { + key: "appendToForeignObject", + value: function appendToForeignObject() { + var gl = this.w.globals; + gl.dom.elLegendForeign = document.createElementNS(gl.SVGNS, 'foreignObject'); + var elForeign = gl.dom.elLegendForeign; + elForeign.setAttribute('x', 0); + elForeign.setAttribute('y', 0); + elForeign.setAttribute('width', gl.svgWidth); + elForeign.setAttribute('height', gl.svgHeight); + gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml'); + elForeign.appendChild(gl.dom.elLegendWrap); + elForeign.appendChild(this.getLegendStyles()); //gl.dom.elGraphical.node.insertAdjacentElement('afterend', elForeign) + // the above line causes issue #1907 + + gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node); + } + }, { + key: "toggleDataSeries", + value: function toggleDataSeries(seriesCnt, isHidden) { + var _this = this; + + var w = this.w; + + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + w.globals.resized = true; // we don't want initial animations again + + var seriesEl = null; + var realIndex = null; // yes, make it null. 1 series will rise at a time + + w.globals.risingSeries = []; + + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(seriesCnt, "']")); + realIndex = parseInt(seriesEl.getAttribute('data:realIndex'), 10); + } else { + seriesEl = w.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(seriesCnt + 1, "']")); + realIndex = parseInt(seriesEl.getAttribute('rel'), 10) - 1; + } + + if (isHidden) { + var seriesToMakeVisible = [{ + cs: w.globals.collapsedSeries, + csi: w.globals.collapsedSeriesIndices + }, { + cs: w.globals.ancillaryCollapsedSeries, + csi: w.globals.ancillaryCollapsedSeriesIndices + }]; + seriesToMakeVisible.forEach(function (r) { + _this.riseCollapsedSeries(r.cs, r.csi, realIndex); + }); + } else { + this.hideSeries({ + seriesEl: seriesEl, + realIndex: realIndex + }); + } + } else { + // for non-axis charts i.e pie / donuts + var _seriesEl = w.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(seriesCnt + 1, "'] path")); + + var type = w.config.chart.type; + + if (type === 'pie' || type === 'polarArea' || type === 'donut') { + var dataLabels = w.config.plotOptions.pie.donut.labels; + var graphics = new Graphics(this.lgCtx.ctx); + graphics.pathMouseDown(_seriesEl.members[0], null); + this.lgCtx.ctx.pie.printDataLabelsInner(_seriesEl.members[0].node, dataLabels); + } + + _seriesEl.fire('click'); + } + } + }, { + key: "hideSeries", + value: function hideSeries(_ref) { + var seriesEl = _ref.seriesEl, + realIndex = _ref.realIndex; + var w = this.w; + var series = Utils$1.clone(w.config.series); + + if (w.globals.axisCharts) { + var shouldNotHideYAxis = false; + + if (w.config.yaxis[realIndex] && w.config.yaxis[realIndex].show && w.config.yaxis[realIndex].showAlways) { + shouldNotHideYAxis = true; + + if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) { + w.globals.ancillaryCollapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }); + w.globals.ancillaryCollapsedSeriesIndices.push(realIndex); + } + } + + if (!shouldNotHideYAxis) { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }); + w.globals.collapsedSeriesIndices.push(realIndex); + var removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex); + w.globals.risingSeries.splice(removeIndexOfRising, 1); + } + } else { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex] + }); + w.globals.collapsedSeriesIndices.push(realIndex); + } + + var seriesChildren = seriesEl.childNodes; + + for (var sc = 0; sc < seriesChildren.length; sc++) { + if (seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap')) { + if (seriesChildren[sc].classList.contains('apexcharts-hide')) { + seriesChildren[sc].classList.remove('apexcharts-hide'); + } else { + seriesChildren[sc].classList.add('apexcharts-hide'); + } + } + } + + w.globals.allSeriesCollapsed = w.globals.collapsedSeries.length === w.config.series.length; + series = this._getSeriesBasedOnCollapsedState(series); + + this.lgCtx.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + }, { + key: "riseCollapsedSeries", + value: function riseCollapsedSeries(collapsedSeries, seriesIndices, realIndex) { + var w = this.w; + var series = Utils$1.clone(w.config.series); + + if (collapsedSeries.length > 0) { + for (var c = 0; c < collapsedSeries.length; c++) { + if (collapsedSeries[c].index === realIndex) { + if (w.globals.axisCharts) { + series[realIndex].data = collapsedSeries[c].data.slice(); + collapsedSeries.splice(c, 1); + seriesIndices.splice(c, 1); + w.globals.risingSeries.push(realIndex); + } else { + series[realIndex] = collapsedSeries[c].data; + collapsedSeries.splice(c, 1); + seriesIndices.splice(c, 1); + w.globals.risingSeries.push(realIndex); + } + } + } + + series = this._getSeriesBasedOnCollapsedState(series); + + this.lgCtx.ctx.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + } + } + }, { + key: "_getSeriesBasedOnCollapsedState", + value: function _getSeriesBasedOnCollapsedState(series) { + var w = this.w; + + if (w.globals.axisCharts) { + series.forEach(function (s, sI) { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI].data = []; + } + }); + } else { + series.forEach(function (s, sI) { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI] = 0; + } + }); + } + + return series; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Legend Class to draw legend. + * + * @module Legend + **/ + + var Legend = /*#__PURE__*/function () { + function Legend(ctx, opts) { + _classCallCheck(this, Legend); + + this.ctx = ctx; + this.w = ctx.w; + this.onLegendClick = this.onLegendClick.bind(this); + this.onLegendHovered = this.onLegendHovered.bind(this); + this.isBarsDistributed = this.w.config.chart.type === 'bar' && this.w.config.plotOptions.bar.distributed && this.w.config.series.length === 1; + this.legendHelpers = new Helpers$2(this); + } + + _createClass(Legend, [{ + key: "init", + value: function init() { + var w = this.w; + var gl = w.globals; + var cnf = w.config; + var showLegendAlways = cnf.legend.showForSingleSeries && gl.series.length === 1 || this.isBarsDistributed || gl.series.length > 1; + + if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) { + while (gl.dom.elLegendWrap.firstChild) { + gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild); + } + + this.drawLegends(); + + if (!Utils$1.isIE11()) { + this.legendHelpers.appendToForeignObject(); + } else { + // IE11 doesn't supports foreignObject, hence append it to + document.getElementsByTagName('head')[0].appendChild(this.legendHelpers.getLegendStyles()); + } + + if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') { + this.legendAlignHorizontal(); + } else if (cnf.legend.position === 'right' || cnf.legend.position === 'left') { + this.legendAlignVertical(); + } + } + } + }, { + key: "drawLegends", + value: function drawLegends() { + var me = this; + var w = this.w; + var fontFamily = w.config.legend.fontFamily; + var legendNames = w.globals.seriesNames; + var fillcolor = w.globals.colors.slice(); + + if (w.config.chart.type === 'heatmap') { + var ranges = w.config.plotOptions.heatmap.colorScale.ranges; + legendNames = ranges.map(function (colorScale) { + return colorScale.name ? colorScale.name : colorScale.from + ' - ' + colorScale.to; + }); + fillcolor = ranges.map(function (color) { + return color.color; + }); + } else if (this.isBarsDistributed) { + legendNames = w.globals.labels.slice(); + } + + if (w.config.legend.customLegendItems.length) { + legendNames = w.config.legend.customLegendItems; + } + + var legendFormatter = w.globals.legendFormatter; + var isLegendInversed = w.config.legend.inverseOrder; + + for (var i = isLegendInversed ? legendNames.length - 1 : 0; isLegendInversed ? i >= 0 : i <= legendNames.length - 1; isLegendInversed ? i-- : i++) { + var text = legendFormatter(legendNames[i], { + seriesIndex: i, + w: w + }); + var collapsedSeries = false; + var ancillaryCollapsedSeries = false; + + if (w.globals.collapsedSeries.length > 0) { + for (var c = 0; c < w.globals.collapsedSeries.length; c++) { + if (w.globals.collapsedSeries[c].index === i) { + collapsedSeries = true; + } + } + } + + if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) { + for (var _c = 0; _c < w.globals.ancillaryCollapsedSeriesIndices.length; _c++) { + if (w.globals.ancillaryCollapsedSeriesIndices[_c] === i) { + ancillaryCollapsedSeries = true; + } + } + } + + var elMarker = document.createElement('span'); + elMarker.classList.add('apexcharts-legend-marker'); + var mOffsetX = w.config.legend.markers.offsetX; + var mOffsetY = w.config.legend.markers.offsetY; + var mHeight = w.config.legend.markers.height; + var mWidth = w.config.legend.markers.width; + var mBorderWidth = w.config.legend.markers.strokeWidth; + var mBorderColor = w.config.legend.markers.strokeColor; + var mBorderRadius = w.config.legend.markers.radius; // todo - untested code below + // if (Array.isArray(w.config.legend.markers.shape)) { + // } else { + // if (w.config.legend.markers.shape !== 'circle') { + // mBorderRadius = 1 + // } + // } + + var mStyle = elMarker.style; + mStyle.background = fillcolor[i]; + mStyle.color = fillcolor[i]; + mStyle.setProperty('background', fillcolor[i], 'important'); // override fill color with custom legend.markers.fillColors + + if (w.config.legend.markers.fillColors && w.config.legend.markers.fillColors[i]) { + mStyle.background = w.config.legend.markers.fillColors[i]; + } // override with data color + + + if (w.globals.seriesColors[i] !== undefined) { + mStyle.background = w.globals.seriesColors[i]; + mStyle.color = w.globals.seriesColors[i]; + } + + mStyle.height = Array.isArray(mHeight) ? parseFloat(mHeight[i]) + 'px' : parseFloat(mHeight) + 'px'; + mStyle.width = Array.isArray(mWidth) ? parseFloat(mWidth[i]) + 'px' : parseFloat(mWidth) + 'px'; + mStyle.left = (Array.isArray(mOffsetX) ? parseFloat(mOffsetX[i]) : parseFloat(mOffsetX)) + 'px'; + mStyle.top = (Array.isArray(mOffsetY) ? parseFloat(mOffsetY[i]) : parseFloat(mOffsetY)) + 'px'; + mStyle.borderWidth = Array.isArray(mBorderWidth) ? mBorderWidth[i] : mBorderWidth; + mStyle.borderColor = Array.isArray(mBorderColor) ? mBorderColor[i] : mBorderColor; + mStyle.borderRadius = Array.isArray(mBorderRadius) ? parseFloat(mBorderRadius[i]) + 'px' : parseFloat(mBorderRadius) + 'px'; + + if (w.config.legend.markers.customHTML) { + if (Array.isArray(w.config.legend.markers.customHTML)) { + if (w.config.legend.markers.customHTML[i]) { + elMarker.innerHTML = w.config.legend.markers.customHTML[i](); + } + } else { + elMarker.innerHTML = w.config.legend.markers.customHTML(); + } + } + + Graphics.setAttrs(elMarker, { + rel: i + 1, + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + + if (collapsedSeries || ancillaryCollapsedSeries) { + elMarker.classList.add('apexcharts-inactive-legend'); + } + + var elLegend = document.createElement('div'); + var elLegendText = document.createElement('span'); + elLegendText.classList.add('apexcharts-legend-text'); + elLegendText.innerHTML = Array.isArray(text) ? text.join(' ') : text; + var textColor = w.config.legend.labels.useSeriesColors ? w.globals.colors[i] : w.config.legend.labels.colors; + + if (!textColor) { + textColor = w.config.chart.foreColor; + } + + elLegendText.style.color = textColor; + elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px'; + elLegendText.style.fontWeight = w.config.legend.fontWeight; + elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily; + Graphics.setAttrs(elLegendText, { + rel: i + 1, + i: i, + 'data:default-text': encodeURIComponent(text), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + elLegend.appendChild(elMarker); + elLegend.appendChild(elLegendText); + var coreUtils = new CoreUtils(this.ctx); + + if (!w.config.legend.showForZeroSeries) { + var total = coreUtils.getSeriesTotalByIndex(i); + + if (total === 0 && coreUtils.seriesHaveSameValues(i) && !coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) { + elLegend.classList.add('apexcharts-hidden-zero-series'); + } + } + + if (!w.config.legend.showForNullSeries) { + if (coreUtils.isSeriesNull(i) && w.globals.collapsedSeriesIndices.indexOf(i) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1) { + elLegend.classList.add('apexcharts-hidden-null-series'); + } + } + + w.globals.dom.elLegendWrap.appendChild(elLegend); + w.globals.dom.elLegendWrap.classList.add("apexcharts-align-".concat(w.config.legend.horizontalAlign)); + w.globals.dom.elLegendWrap.classList.add('apx-legend-position-' + w.config.legend.position); + elLegend.classList.add('apexcharts-legend-series'); + elLegend.style.margin = "".concat(w.config.legend.itemMargin.vertical, "px ").concat(w.config.legend.itemMargin.horizontal, "px"); + w.globals.dom.elLegendWrap.style.width = w.config.legend.width ? w.config.legend.width + 'px' : ''; + w.globals.dom.elLegendWrap.style.height = w.config.legend.height ? w.config.legend.height + 'px' : ''; + Graphics.setAttrs(elLegend, { + rel: i + 1, + seriesName: Utils$1.escapeString(legendNames[i]), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }); + + if (collapsedSeries || ancillaryCollapsedSeries) { + elLegend.classList.add('apexcharts-inactive-legend'); + } + + if (!w.config.legend.onItemClick.toggleDataSeries) { + elLegend.classList.add('apexcharts-no-click'); + } + } + + w.globals.dom.elWrap.addEventListener('click', me.onLegendClick, true); + + if (w.config.legend.onItemHover.highlightDataSeries && w.config.legend.customLegendItems.length === 0) { + w.globals.dom.elWrap.addEventListener('mousemove', me.onLegendHovered, true); + w.globals.dom.elWrap.addEventListener('mouseout', me.onLegendHovered, true); + } + } + }, { + key: "setLegendWrapXY", + value: function setLegendWrapXY(offsetX, offsetY) { + var w = this.w; + var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend'); + var legendRect = elLegendWrap.getBoundingClientRect(); + var x = 0; + var y = 0; + + if (w.config.legend.position === 'bottom') { + y = y + (w.globals.svgHeight - legendRect.height / 2); + } else if (w.config.legend.position === 'top') { + var dim = new Dimensions(this.ctx); + var titleH = dim.dimHelpers.getTitleSubtitleCoords('title').height; + var subtitleH = dim.dimHelpers.getTitleSubtitleCoords('subtitle').height; + y = y + (titleH > 0 ? titleH - 10 : 0) + (subtitleH > 0 ? subtitleH - 10 : 0); + } + + elLegendWrap.style.position = 'absolute'; + x = x + offsetX + w.config.legend.offsetX; + y = y + offsetY + w.config.legend.offsetY; + elLegendWrap.style.left = x + 'px'; + elLegendWrap.style.top = y + 'px'; + + if (w.config.legend.position === 'bottom') { + elLegendWrap.style.top = 'auto'; + elLegendWrap.style.bottom = 5 - w.config.legend.offsetY + 'px'; + } else if (w.config.legend.position === 'right') { + elLegendWrap.style.left = 'auto'; + elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px'; + } + + var fixedHeigthWidth = ['width', 'height']; + fixedHeigthWidth.forEach(function (hw) { + if (elLegendWrap.style[hw]) { + elLegendWrap.style[hw] = parseInt(w.config.legend[hw], 10) + 'px'; + } + }); + } + }, { + key: "legendAlignHorizontal", + value: function legendAlignHorizontal() { + var w = this.w; + var elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend'); + elLegendWrap.style.right = 0; + var lRect = this.legendHelpers.getLegendBBox(); + var dimensions = new Dimensions(this.ctx); + var titleRect = dimensions.dimHelpers.getTitleSubtitleCoords('title'); + var subtitleRect = dimensions.dimHelpers.getTitleSubtitleCoords('subtitle'); + var offsetX = 20; + var offsetY = 0; // the whole legend box is set to bottom + + if (w.config.legend.position === 'bottom') { + offsetY = -lRect.clwh / 1.8; + } else if (w.config.legend.position === 'top') { + offsetY = titleRect.height + subtitleRect.height + w.config.title.margin + w.config.subtitle.margin - 10; + } + + this.setLegendWrapXY(offsetX, offsetY); + } + }, { + key: "legendAlignVertical", + value: function legendAlignVertical() { + var w = this.w; + var lRect = this.legendHelpers.getLegendBBox(); + var offsetY = 20; + var offsetX = 0; + + if (w.config.legend.position === 'left') { + offsetX = 20; + } + + if (w.config.legend.position === 'right') { + offsetX = w.globals.svgWidth - lRect.clww - 10; + } + + this.setLegendWrapXY(offsetX, offsetY); + } + }, { + key: "onLegendHovered", + value: function onLegendHovered(e) { + var w = this.w; + var hoverOverLegend = e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker'); + + if (w.config.chart.type !== 'heatmap' && !this.isBarsDistributed) { + if (!e.target.classList.contains('apexcharts-inactive-legend') && hoverOverLegend) { + var series = new Series(this.ctx); + series.toggleSeriesOnHover(e, e.target); + } + } else { + // for heatmap handling + if (hoverOverLegend) { + var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1; + this.ctx.events.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]); + + var _series = new Series(this.ctx); + + _series.highlightRangeInSeries(e, e.target); + } + } + } + }, { + key: "onLegendClick", + value: function onLegendClick(e) { + var w = this.w; + if (w.config.legend.customLegendItems.length) return; + + if (e.target.classList.contains('apexcharts-legend-text') || e.target.classList.contains('apexcharts-legend-marker')) { + var seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1; + var isHidden = e.target.getAttribute('data:collapsed') === 'true'; + var legendClick = this.w.config.chart.events.legendClick; + + if (typeof legendClick === 'function') { + legendClick(this.ctx, seriesCnt, this.w); + } + + this.ctx.events.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]); + var markerClick = this.w.config.legend.markers.onClick; + + if (typeof markerClick === 'function' && e.target.classList.contains('apexcharts-legend-marker')) { + markerClick(this.ctx, seriesCnt, this.w); + this.ctx.events.fireEvent('legendMarkerClick', [this.ctx, seriesCnt, this.w]); + } // for now - just prevent click on heatmap legend - and allow hover only + + + var clickAllowed = w.config.chart.type !== 'treemap' && w.config.chart.type !== 'heatmap' && !this.isBarsDistributed; + + if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) { + this.legendHelpers.toggleDataSeries(seriesCnt, isHidden); + } + } + } + }]); + + return Legend; + }(); + + var icoPan = "\n \n \n \n \n \n \n \n"; + + var icoZoom = "\n \n \n \n"; + + var icoReset = "\n \n \n"; + + var icoZoomIn = "\n \n \n\n"; + + var icoZoomOut = "\n \n \n\n"; + + var icoSelect = "\n \n \n"; + + var icoMenu = ""; + + /** + * ApexCharts Toolbar Class for creating toolbar in axis based charts. + * + * @module Toolbar + **/ + + var Toolbar = /*#__PURE__*/function () { + function Toolbar(ctx) { + _classCallCheck(this, Toolbar); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.ev = this.w.config.chart.events; + this.selectedClass = 'apexcharts-selected'; + this.localeValues = this.w.globals.locale.toolbar; + this.minX = w.globals.minX; + this.maxX = w.globals.maxX; + } + + _createClass(Toolbar, [{ + key: "createToolbar", + value: function createToolbar() { + var _this = this; + + var w = this.w; + + var createDiv = function createDiv() { + return document.createElement('div'); + }; + + var elToolbarWrap = createDiv(); + elToolbarWrap.setAttribute('class', 'apexcharts-toolbar'); + elToolbarWrap.style.top = w.config.chart.toolbar.offsetY + 'px'; + elToolbarWrap.style.right = -w.config.chart.toolbar.offsetX + 3 + 'px'; + w.globals.dom.elWrap.appendChild(elToolbarWrap); + this.elZoom = createDiv(); + this.elZoomIn = createDiv(); + this.elZoomOut = createDiv(); + this.elPan = createDiv(); + this.elSelection = createDiv(); + this.elZoomReset = createDiv(); + this.elMenuIcon = createDiv(); + this.elMenu = createDiv(); + this.elCustomIcons = []; + this.t = w.config.chart.toolbar.tools; + + if (Array.isArray(this.t.customIcons)) { + for (var i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons.push(createDiv()); + } + } + + var toolbarControls = []; + + var appendZoomControl = function appendZoomControl(type, el, ico) { + var tool = type.toLowerCase(); + + if (_this.t[tool] && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el: el, + icon: typeof _this.t[tool] === 'string' ? _this.t[tool] : ico, + title: _this.localeValues[type], + class: "apexcharts-".concat(tool, "-icon") + }); + } + }; + + appendZoomControl('zoomIn', this.elZoomIn, icoZoomIn); + appendZoomControl('zoomOut', this.elZoomOut, icoZoomOut); + + var zoomSelectionCtrls = function zoomSelectionCtrls(z) { + if (_this.t[z] && w.config.chart[z].enabled) { + toolbarControls.push({ + el: z === 'zoom' ? _this.elZoom : _this.elSelection, + icon: typeof _this.t[z] === 'string' ? _this.t[z] : z === 'zoom' ? icoZoom : icoSelect, + title: _this.localeValues[z === 'zoom' ? 'selectionZoom' : 'selection'], + class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : "apexcharts-".concat(z, "-icon") + }); + } + }; + + zoomSelectionCtrls('zoom'); + zoomSelectionCtrls('selection'); + + if (this.t.pan && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el: this.elPan, + icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan, + title: this.localeValues.pan, + class: w.globals.isTouchDevice ? 'apexcharts-element-hidden' : 'apexcharts-pan-icon' + }); + } + + appendZoomControl('reset', this.elZoomReset, icoReset); + + if (this.t.download) { + toolbarControls.push({ + el: this.elMenuIcon, + icon: typeof this.t.download === 'string' ? this.t.download : icoMenu, + title: this.localeValues.menu, + class: 'apexcharts-menu-icon' + }); + } + + for (var _i = 0; _i < this.elCustomIcons.length; _i++) { + toolbarControls.push({ + el: this.elCustomIcons[_i], + icon: this.t.customIcons[_i].icon, + title: this.t.customIcons[_i].title, + index: this.t.customIcons[_i].index, + class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[_i].class + }); + } + + toolbarControls.forEach(function (t, index) { + if (t.index) { + Utils$1.moveIndexInArray(toolbarControls, index, t.index); + } + }); + + for (var _i2 = 0; _i2 < toolbarControls.length; _i2++) { + Graphics.setAttrs(toolbarControls[_i2].el, { + class: toolbarControls[_i2].class, + title: toolbarControls[_i2].title + }); + toolbarControls[_i2].el.innerHTML = toolbarControls[_i2].icon; + elToolbarWrap.appendChild(toolbarControls[_i2].el); + } + + this._createHamburgerMenu(elToolbarWrap); + + if (w.globals.zoomEnabled) { + this.elZoom.classList.add(this.selectedClass); + } else if (w.globals.panEnabled) { + this.elPan.classList.add(this.selectedClass); + } else if (w.globals.selectionEnabled) { + this.elSelection.classList.add(this.selectedClass); + } + + this.addToolbarEventListeners(); + } + }, { + key: "_createHamburgerMenu", + value: function _createHamburgerMenu(parent) { + this.elMenuItems = []; + parent.appendChild(this.elMenu); + Graphics.setAttrs(this.elMenu, { + class: 'apexcharts-menu' + }); + var menuItems = [{ + name: 'exportSVG', + title: this.localeValues.exportToSVG + }, { + name: 'exportPNG', + title: this.localeValues.exportToPNG + }, { + name: 'exportCSV', + title: this.localeValues.exportToCSV + }]; + + if (!this.w.globals.allSeriesHasEqualX) { + // if it is a multi series, and all series have variable x values, export CSV won't work + menuItems.splice(2, 1); + } + + for (var i = 0; i < menuItems.length; i++) { + this.elMenuItems.push(document.createElement('div')); + this.elMenuItems[i].innerHTML = menuItems[i].title; + Graphics.setAttrs(this.elMenuItems[i], { + class: "apexcharts-menu-item ".concat(menuItems[i].name), + title: menuItems[i].title + }); + this.elMenu.appendChild(this.elMenuItems[i]); + } + } + }, { + key: "addToolbarEventListeners", + value: function addToolbarEventListeners() { + var _this2 = this; + + this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this)); + this.elSelection.addEventListener('click', this.toggleZoomSelection.bind(this, 'selection')); + this.elZoom.addEventListener('click', this.toggleZoomSelection.bind(this, 'zoom')); + this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this)); + this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this)); + this.elPan.addEventListener('click', this.togglePanning.bind(this)); + this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this)); + this.elMenuItems.forEach(function (m) { + if (m.classList.contains('exportSVG')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'svg')); + } else if (m.classList.contains('exportPNG')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'png')); + } else if (m.classList.contains('exportCSV')) { + m.addEventListener('click', _this2.handleDownload.bind(_this2, 'csv')); + } + }); + + for (var i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons[i].addEventListener('click', this.t.customIcons[i].click.bind(this, this.ctx, this.ctx.w)); + } + } + }, { + key: "toggleZoomSelection", + value: function toggleZoomSelection(type) { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + ch.ctx.toolbar.toggleOtherControls(); + var el = type === 'selection' ? ch.ctx.toolbar.elSelection : ch.ctx.toolbar.elZoom; + var enabledType = type === 'selection' ? 'selectionEnabled' : 'zoomEnabled'; + ch.w.globals[enabledType] = !ch.w.globals[enabledType]; + + if (!el.classList.contains(ch.ctx.toolbar.selectedClass)) { + el.classList.add(ch.ctx.toolbar.selectedClass); + } else { + el.classList.remove(ch.ctx.toolbar.selectedClass); + } + }); + } + }, { + key: "getToolbarIconsReference", + value: function getToolbarIconsReference() { + var w = this.w; + + if (!this.elZoom) { + this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon'); + } + + if (!this.elPan) { + this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon'); + } + + if (!this.elSelection) { + this.elSelection = w.globals.dom.baseEl.querySelector('.apexcharts-selection-icon'); + } + } + }, { + key: "enableZoomPanFromToolbar", + value: function enableZoomPanFromToolbar(type) { + this.toggleOtherControls(); + type === 'pan' ? this.w.globals.panEnabled = true : this.w.globals.zoomEnabled = true; + var el = type === 'pan' ? this.elPan : this.elZoom; + var el2 = type === 'pan' ? this.elZoom : this.elPan; + + if (el) { + el.classList.add(this.selectedClass); + } + + if (el2) { + el2.classList.remove(this.selectedClass); + } + } + }, { + key: "togglePanning", + value: function togglePanning() { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + ch.ctx.toolbar.toggleOtherControls(); + ch.w.globals.panEnabled = !ch.w.globals.panEnabled; + + if (!ch.ctx.toolbar.elPan.classList.contains(ch.ctx.toolbar.selectedClass)) { + ch.ctx.toolbar.elPan.classList.add(ch.ctx.toolbar.selectedClass); + } else { + ch.ctx.toolbar.elPan.classList.remove(ch.ctx.toolbar.selectedClass); + } + }); + } + }, { + key: "toggleOtherControls", + value: function toggleOtherControls() { + var _this3 = this; + + var w = this.w; + w.globals.panEnabled = false; + w.globals.zoomEnabled = false; + w.globals.selectionEnabled = false; + this.getToolbarIconsReference(); + var toggleEls = [this.elPan, this.elSelection, this.elZoom]; + toggleEls.forEach(function (el) { + if (el) { + el.classList.remove(_this3.selectedClass); + } + }); + } + }, { + key: "handleZoomIn", + value: function handleZoomIn() { + var w = this.w; + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY; + this.maxX = w.globals.maxY; + } + + var centerX = (this.minX + this.maxX) / 2; + var newMinX = (this.minX + centerX) / 2; + var newMaxX = (this.maxX + centerX) / 2; + + var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX); + + if (!w.globals.disableZoomIn) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX); + } + } + }, { + key: "handleZoomOut", + value: function handleZoomOut() { + var w = this.w; + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY; + this.maxX = w.globals.maxY; + } // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis + + + if (w.config.xaxis.type === 'datetime' && new Date(this.minX).getUTCFullYear() < 1000) { + return; + } + + var centerX = (this.minX + this.maxX) / 2; + var newMinX = this.minX - (centerX - this.minX); + var newMaxX = this.maxX - (centerX - this.maxX); + + var newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX); + + if (!w.globals.disableZoomOut) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX); + } + } + }, { + key: "_getNewMinXMaxX", + value: function _getNewMinXMaxX(newMinX, newMaxX) { + var shouldFloor = this.w.config.xaxis.convertedCatToNumeric; + return { + minX: shouldFloor ? Math.floor(newMinX) : newMinX, + maxX: shouldFloor ? Math.floor(newMaxX) : newMaxX + }; + } + }, { + key: "zoomUpdateOptions", + value: function zoomUpdateOptions(newMinX, newMaxX) { + var w = this.w; + + if (newMinX === undefined && newMaxX === undefined) { + this.handleZoomReset(); + return; + } + + if (w.config.xaxis.convertedCatToNumeric) { + // in category charts, avoid zooming out beyond min and max + if (newMinX < 1) { + newMinX = 1; + newMaxX = w.globals.dataPoints; + } + + if (newMaxX - newMinX < 2) { + return; + } + } + + var xaxis = { + min: newMinX, + max: newMaxX + }; + var beforeZoomRange = this.getBeforeZoomRange(xaxis); + + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis; + } + + var options = { + xaxis: xaxis + }; + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(this.ctx); + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis: xaxis + }); + } + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + this.w.globals.zoomed = true; + + this.ctx.updateHelpers._updateOptions(options, false, this.w.config.chart.animations.dynamicAnimation.enabled); + + this.zoomCallback(xaxis, yaxis); + } + }, { + key: "zoomCallback", + value: function zoomCallback(xaxis, yaxis) { + if (typeof this.ev.zoomed === 'function') { + this.ev.zoomed(this.ctx, { + xaxis: xaxis, + yaxis: yaxis + }); + } + } + }, { + key: "getBeforeZoomRange", + value: function getBeforeZoomRange(xaxis, yaxis) { + var newRange = null; + + if (typeof this.ev.beforeZoom === 'function') { + newRange = this.ev.beforeZoom(this, { + xaxis: xaxis, + yaxis: yaxis + }); + } + + return newRange; + } + }, { + key: "toggleMenu", + value: function toggleMenu() { + var _this4 = this; + + window.setTimeout(function () { + if (_this4.elMenu.classList.contains('apexcharts-menu-open')) { + _this4.elMenu.classList.remove('apexcharts-menu-open'); + } else { + _this4.elMenu.classList.add('apexcharts-menu-open'); + } + }, 0); + } + }, { + key: "handleDownload", + value: function handleDownload(type) { + var w = this.w; + var exprt = new Exports(this.ctx); + + switch (type) { + case 'svg': + exprt.exportToSVG(this.ctx); + break; + + case 'png': + exprt.exportToPng(this.ctx); + break; + + case 'csv': + exprt.exportToCSV({ + series: w.config.series, + columnDelimiter: w.config.chart.toolbar.export.csv.columnDelimiter + }); + break; + } + } + }, { + key: "handleZoomReset", + value: function handleZoomReset(e) { + var charts = this.ctx.getSyncedCharts(); + charts.forEach(function (ch) { + var w = ch.w; // forget lastXAxis min/max as reset button isn't resetting the x-axis completely if zoomX is called before + + w.globals.lastXAxis.min = undefined; + w.globals.lastXAxis.max = undefined; + ch.updateHelpers.revertDefaultAxisMinMax(); + + if (typeof w.config.chart.events.beforeResetZoom === 'function') { + // here, user get an option to control xaxis and yaxis when resetZoom is called + // at this point, whatever is returned from w.config.chart.events.beforeResetZoom + // is set as the new xaxis/yaxis min/max + var resetZoomRange = w.config.chart.events.beforeResetZoom(ch, w); + + if (resetZoomRange) { + ch.updateHelpers.revertDefaultAxisMinMax(resetZoomRange); + } + } + + if (typeof w.config.chart.events.zoomed === 'function') { + ch.ctx.toolbar.zoomCallback({ + min: w.config.xaxis.min, + max: w.config.xaxis.max + }); + } + + w.globals.zoomed = false; // if user has some series collapsed before hitting zoom reset button, + // those series should stay collapsed + + var series = ch.ctx.series.emptyCollapsedSeries(Utils$1.clone(w.globals.initialSeries)); + + ch.updateHelpers._updateSeries(series, w.config.chart.animations.dynamicAnimation.enabled); + }); + } + }, { + key: "destroy", + value: function destroy() { + this.elZoom = null; + this.elZoomIn = null; + this.elZoomOut = null; + this.elPan = null; + this.elSelection = null; + this.elZoomReset = null; + this.elMenuIcon = null; + } + }]); + + return Toolbar; + }(); + + /** + * ApexCharts Zoom Class for handling zooming and panning on axes based charts. + * + * @module ZoomPanSelection + **/ + + var ZoomPanSelection = /*#__PURE__*/function (_Toolbar) { + _inherits(ZoomPanSelection, _Toolbar); + + var _super = _createSuper(ZoomPanSelection); + + function ZoomPanSelection(ctx) { + var _this; + + _classCallCheck(this, ZoomPanSelection); + + _this = _super.call(this, ctx); + _this.ctx = ctx; + _this.w = ctx.w; + _this.dragged = false; + _this.graphics = new Graphics(_this.ctx); + _this.eventList = ['mousedown', 'mouseleave', 'mousemove', 'touchstart', 'touchmove', 'mouseup', 'touchend']; + _this.clientX = 0; + _this.clientY = 0; + _this.startX = 0; + _this.endX = 0; + _this.dragX = 0; + _this.startY = 0; + _this.endY = 0; + _this.dragY = 0; + _this.moveDirection = 'none'; + return _this; + } + + _createClass(ZoomPanSelection, [{ + key: "init", + value: function init(_ref) { + var _this2 = this; + + var xyRatios = _ref.xyRatios; + var w = this.w; + var me = this; + this.xyRatios = xyRatios; + this.zoomRect = this.graphics.drawRect(0, 0, 0, 0); + this.selectionRect = this.graphics.drawRect(0, 0, 0, 0); + this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid'); + this.zoomRect.node.classList.add('apexcharts-zoom-rect'); + this.selectionRect.node.classList.add('apexcharts-selection-rect'); + w.globals.dom.elGraphical.add(this.zoomRect); + w.globals.dom.elGraphical.add(this.selectionRect); + + if (w.config.chart.selection.type === 'x') { + this.slDraggableRect = this.selectionRect.draggable({ + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + }).on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } else if (w.config.chart.selection.type === 'y') { + this.slDraggableRect = this.selectionRect.draggable({ + minX: 0, + maxX: w.globals.gridWidth + }).on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } else { + this.slDraggableRect = this.selectionRect.draggable().on('dragmove', this.selectionDragging.bind(this, 'dragging')); + } + + this.preselectedSelection(); + this.hoverArea = w.globals.dom.baseEl.querySelector("".concat(w.globals.chartClass, " .apexcharts-svg")); + this.hoverArea.classList.add('apexcharts-zoomable'); + this.eventList.forEach(function (event) { + _this2.hoverArea.addEventListener(event, me.svgMouseEvents.bind(me, xyRatios), { + capture: false, + passive: true + }); + }); + } // remove the event listeners which were previously added on hover area + + }, { + key: "destroy", + value: function destroy() { + if (this.slDraggableRect) { + this.slDraggableRect.draggable(false); + this.slDraggableRect.off(); + this.selectionRect.off(); + } + + this.selectionRect = null; + this.zoomRect = null; + this.gridRect = null; + } + }, { + key: "svgMouseEvents", + value: function svgMouseEvents(xyRatios, e) { + var w = this.w; + var me = this; + var toolbar = this.ctx.toolbar; + var zoomtype = w.globals.zoomEnabled ? w.config.chart.zoom.type : w.config.chart.selection.type; + var autoSelected = w.config.chart.toolbar.autoSelected; + + if (e.shiftKey) { + this.shiftWasPressed = true; + toolbar.enableZoomPanFromToolbar(autoSelected === 'pan' ? 'zoom' : 'pan'); + } else { + if (this.shiftWasPressed) { + toolbar.enableZoomPanFromToolbar(autoSelected); + this.shiftWasPressed = false; + } + } + + if (!e.target) return; + var tc = e.target.classList; + var pc; + + if (e.target.parentNode && e.target.parentNode !== null) { + pc = e.target.parentNode.classList; + } + + var falsePositives = tc.contains('apexcharts-selection-rect') || tc.contains('apexcharts-legend-marker') || tc.contains('apexcharts-legend-text') || pc && pc.contains('apexcharts-toolbar'); + if (falsePositives) return; + me.clientX = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientX : e.type === 'touchend' ? e.changedTouches[0].clientX : e.clientX; + me.clientY = e.type === 'touchmove' || e.type === 'touchstart' ? e.touches[0].clientY : e.type === 'touchend' ? e.changedTouches[0].clientY : e.clientY; + + if (e.type === 'mousedown' && e.which === 1) { + var gridRectDim = me.gridRect.getBoundingClientRect(); + me.startX = me.clientX - gridRectDim.left; + me.startY = me.clientY - gridRectDim.top; + me.dragged = false; + me.w.globals.mousedown = true; + } + + if (e.type === 'mousemove' && e.which === 1 || e.type === 'touchmove') { + me.dragged = true; + + if (w.globals.panEnabled) { + w.globals.selection = null; + + if (me.w.globals.mousedown) { + me.panDragging({ + context: me, + zoomtype: zoomtype, + xyRatios: xyRatios + }); + } + } else { + if (me.w.globals.mousedown && w.globals.zoomEnabled || me.w.globals.mousedown && w.globals.selectionEnabled) { + me.selection = me.selectionDrawing({ + context: me, + zoomtype: zoomtype + }); + } + } + } + + if (e.type === 'mouseup' || e.type === 'touchend' || e.type === 'mouseleave') { + // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup + var _gridRectDim = me.gridRect.getBoundingClientRect(); + + if (me.w.globals.mousedown) { + // user released the drag, now do all the calculations + me.endX = me.clientX - _gridRectDim.left; + me.endY = me.clientY - _gridRectDim.top; + me.dragX = Math.abs(me.endX - me.startX); + me.dragY = Math.abs(me.endY - me.startY); + + if (w.globals.zoomEnabled || w.globals.selectionEnabled) { + me.selectionDrawn({ + context: me, + zoomtype: zoomtype + }); + } + + if (w.globals.panEnabled && w.config.xaxis.convertedCatToNumeric) { + me.delayedPanScrolled(); + } + } + + if (w.globals.zoomEnabled) { + me.hideSelectionRect(this.selectionRect); + } + + me.dragged = false; + me.w.globals.mousedown = false; + } + + this.makeSelectionRectDraggable(); + } + }, { + key: "makeSelectionRectDraggable", + value: function makeSelectionRectDraggable() { + var w = this.w; + if (!this.selectionRect) return; + var rectDim = this.selectionRect.node.getBoundingClientRect(); + + if (rectDim.width > 0 && rectDim.height > 0) { + this.slDraggableRect.selectize({ + points: 'l, r', + pointSize: 8, + pointType: 'rect' + }).resize({ + constraint: { + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + } + }).on('resizing', this.selectionDragging.bind(this, 'resizing')); + } + } + }, { + key: "preselectedSelection", + value: function preselectedSelection() { + var w = this.w; + var xyRatios = this.xyRatios; + + if (!w.globals.zoomEnabled) { + if (typeof w.globals.selection !== 'undefined' && w.globals.selection !== null) { + this.drawSelectionRect(w.globals.selection); + } else { + if (w.config.chart.selection.xaxis.min !== undefined && w.config.chart.selection.xaxis.max !== undefined) { + var x = (w.config.chart.selection.xaxis.min - w.globals.minX) / xyRatios.xRatio; + var width = w.globals.gridWidth - (w.globals.maxX - w.config.chart.selection.xaxis.max) / xyRatios.xRatio - x; + var selectionRect = { + x: x, + y: 0, + width: width, + height: w.globals.gridHeight, + translateX: 0, + translateY: 0, + selectionEnabled: true + }; + this.drawSelectionRect(selectionRect); + this.makeSelectionRectDraggable(); + + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(this.ctx, { + xaxis: { + min: w.config.chart.selection.xaxis.min, + max: w.config.chart.selection.xaxis.max + }, + yaxis: {} + }); + } + } + } + } + } + }, { + key: "drawSelectionRect", + value: function drawSelectionRect(_ref2) { + var x = _ref2.x, + y = _ref2.y, + width = _ref2.width, + height = _ref2.height, + _ref2$translateX = _ref2.translateX, + translateX = _ref2$translateX === void 0 ? 0 : _ref2$translateX, + _ref2$translateY = _ref2.translateY, + translateY = _ref2$translateY === void 0 ? 0 : _ref2$translateY; + var w = this.w; + var zoomRect = this.zoomRect; + var selectionRect = this.selectionRect; + + if (this.dragged || w.globals.selection !== null) { + var scalingAttrs = { + transform: 'translate(' + translateX + ', ' + translateY + ')' + }; // change styles based on zoom or selection + // zoom is Enabled and user has dragged, so draw blue rect + + if (w.globals.zoomEnabled && this.dragged) { + if (width < 0) width = 1; // fixes apexcharts.js#1168 + + zoomRect.attr({ + x: x, + y: y, + width: width, + height: height, + fill: w.config.chart.zoom.zoomedArea.fill.color, + 'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity, + stroke: w.config.chart.zoom.zoomedArea.stroke.color, + 'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width, + 'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity + }); + Graphics.setAttrs(zoomRect.node, scalingAttrs); + } // selection is enabled + + + if (w.globals.selectionEnabled) { + selectionRect.attr({ + x: x, + y: y, + width: width > 0 ? width : 0, + height: height > 0 ? height : 0, + fill: w.config.chart.selection.fill.color, + 'fill-opacity': w.config.chart.selection.fill.opacity, + stroke: w.config.chart.selection.stroke.color, + 'stroke-width': w.config.chart.selection.stroke.width, + 'stroke-dasharray': w.config.chart.selection.stroke.dashArray, + 'stroke-opacity': w.config.chart.selection.stroke.opacity + }); + Graphics.setAttrs(selectionRect.node, scalingAttrs); + } + } + } + }, { + key: "hideSelectionRect", + value: function hideSelectionRect(rect) { + if (rect) { + rect.attr({ + x: 0, + y: 0, + width: 0, + height: 0 + }); + } + } + }, { + key: "selectionDrawing", + value: function selectionDrawing(_ref3) { + var context = _ref3.context, + zoomtype = _ref3.zoomtype; + var w = this.w; + var me = context; + var gridRectDim = this.gridRect.getBoundingClientRect(); + var startX = me.startX - 1; + var startY = me.startY; + var inversedX = false; + var inversedY = false; + var selectionWidth = me.clientX - gridRectDim.left - startX; + var selectionHeight = me.clientY - gridRectDim.top - startY; + var selectionRect = {}; + + if (Math.abs(selectionWidth + startX) > w.globals.gridWidth) { + // user dragged the mouse outside drawing area to the right + selectionWidth = w.globals.gridWidth - startX; + } else if (me.clientX - gridRectDim.left < 0) { + // user dragged the mouse outside drawing area to the left + selectionWidth = startX; + } // inverse selection X + + + if (startX > me.clientX - gridRectDim.left) { + inversedX = true; + selectionWidth = Math.abs(selectionWidth); + } // inverse selection Y + + + if (startY > me.clientY - gridRectDim.top) { + inversedY = true; + selectionHeight = Math.abs(selectionHeight); + } + + if (zoomtype === 'x') { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: 0, + width: selectionWidth, + height: w.globals.gridHeight + }; + } else if (zoomtype === 'y') { + selectionRect = { + x: 0, + y: inversedY ? startY - selectionHeight : startY, + width: w.globals.gridWidth, + height: selectionHeight + }; + } else { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: inversedY ? startY - selectionHeight : startY, + width: selectionWidth, + height: selectionHeight + }; + } + + me.drawSelectionRect(selectionRect); + me.selectionDragging('resizing'); + return selectionRect; + } + }, { + key: "selectionDragging", + value: function selectionDragging(type, e) { + var _this3 = this; + + var w = this.w; + var xyRatios = this.xyRatios; + var selRect = this.selectionRect; + var timerInterval = 0; + + if (type === 'resizing') { + timerInterval = 30; + } // update selection when selection rect is dragged + + + var getSelAttr = function getSelAttr(attr) { + return parseFloat(selRect.node.getAttribute(attr)); + }; + + var draggedProps = { + x: getSelAttr('x'), + y: getSelAttr('y'), + width: getSelAttr('width'), + height: getSelAttr('height') + }; + w.globals.selection = draggedProps; // update selection ends + + if (typeof w.config.chart.events.selection === 'function' && w.globals.selectionEnabled) { + // a small debouncer is required when resizing to avoid freezing the chart + clearTimeout(this.w.globals.selectionResizeTimer); + this.w.globals.selectionResizeTimer = window.setTimeout(function () { + var gridRectDim = _this3.gridRect.getBoundingClientRect(); + + var selectionRect = selRect.node.getBoundingClientRect(); + var minX = w.globals.xAxisScale.niceMin + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio; + var maxX = w.globals.xAxisScale.niceMin + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio; + var minY = w.globals.yAxisScale[0].niceMin + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0]; + var maxY = w.globals.yAxisScale[0].niceMax - (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0]; + var xyAxis = { + xaxis: { + min: minX, + max: maxX + }, + yaxis: { + min: minY, + max: maxY + } + }; + w.config.chart.events.selection(_this3.ctx, xyAxis); + + if (w.config.chart.brush.enabled && w.config.chart.events.brushScrolled !== undefined) { + w.config.chart.events.brushScrolled(_this3.ctx, xyAxis); + } + }, timerInterval); + } + } + }, { + key: "selectionDrawn", + value: function selectionDrawn(_ref4) { + var context = _ref4.context, + zoomtype = _ref4.zoomtype; + var w = this.w; + var me = context; + var xyRatios = this.xyRatios; + var toolbar = this.ctx.toolbar; + + if (me.startX > me.endX) { + var tempX = me.startX; + me.startX = me.endX; + me.endX = tempX; + } + + if (me.startY > me.endY) { + var tempY = me.startY; + me.startY = me.endY; + me.endY = tempY; + } + + var xLowestValue = undefined; + var xHighestValue = undefined; + + if (!w.globals.isRangeBar) { + xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio; + xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio; + } else { + xLowestValue = w.globals.yAxisScale[0].niceMin + me.startX * xyRatios.invertedYRatio; + xHighestValue = w.globals.yAxisScale[0].niceMin + me.endX * xyRatios.invertedYRatio; + } // TODO: we will consider the 1st y axis values here for getting highest and lowest y + + + var yHighestValue = []; + var yLowestValue = []; + w.config.yaxis.forEach(function (yaxe, index) { + yHighestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY); + yLowestValue.push(w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY); + }); + + if (me.dragged && (me.dragX > 10 || me.dragY > 10) && xLowestValue !== xHighestValue) { + if (w.globals.zoomEnabled) { + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + var xaxis = Utils$1.clone(w.globals.initialConfig.xaxis); + w.globals.zoomed = true; + + if (w.config.xaxis.convertedCatToNumeric) { + xLowestValue = Math.floor(xLowestValue); + xHighestValue = Math.floor(xHighestValue); + + if (xLowestValue < 1) { + xLowestValue = 1; + xHighestValue = w.globals.dataPoints; + } + + if (xHighestValue - xLowestValue < 2) { + xHighestValue = xLowestValue + 1; + } + } + + if (zoomtype === 'xy' || zoomtype === 'x') { + xaxis = { + min: xLowestValue, + max: xHighestValue + }; + } + + if (zoomtype === 'xy' || zoomtype === 'y') { + yaxis.forEach(function (yaxe, index) { + yaxis[index].min = yLowestValue[index]; + yaxis[index].max = yHighestValue[index]; + }); + } + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(me.ctx); + yaxis = scale.autoScaleY(me.ctx, yaxis, { + xaxis: xaxis + }); + } + + if (toolbar) { + var beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis); + + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis; + yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxis : yaxis; + } + } + + var options = { + xaxis: xaxis + }; + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + me.ctx.updateHelpers._updateOptions(options, false, me.w.config.chart.animations.dynamicAnimation.enabled); + + if (typeof w.config.chart.events.zoomed === 'function') { + toolbar.zoomCallback(xaxis, yaxis); + } + } else if (w.globals.selectionEnabled) { + var _yaxis = null; + var _xaxis = null; + _xaxis = { + min: xLowestValue, + max: xHighestValue + }; + + if (zoomtype === 'xy' || zoomtype === 'y') { + _yaxis = Utils$1.clone(w.config.yaxis); + + _yaxis.forEach(function (yaxe, index) { + _yaxis[index].min = yLowestValue[index]; + _yaxis[index].max = yHighestValue[index]; + }); + } + + w.globals.selection = me.selection; + + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(me.ctx, { + xaxis: _xaxis, + yaxis: _yaxis + }); + } + } + } + } + }, { + key: "panDragging", + value: function panDragging(_ref5) { + var context = _ref5.context; + var w = this.w; + var me = context; // check to make sure there is data to compare against + + if (typeof w.globals.lastClientPosition.x !== 'undefined') { + // get the change from last position to this position + var deltaX = w.globals.lastClientPosition.x - me.clientX; + var deltaY = w.globals.lastClientPosition.y - me.clientY; // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero + + if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) { + this.moveDirection = 'left'; + } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) { + this.moveDirection = 'right'; + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) { + this.moveDirection = 'up'; + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) { + this.moveDirection = 'down'; + } + } // set the new last position to the current for next time (to get the position of drag) + + + w.globals.lastClientPosition = { + x: me.clientX, + y: me.clientY + }; + var xLowestValue = w.globals.isRangeBar ? w.globals.minY : w.globals.minX; + var xHighestValue = w.globals.isRangeBar ? w.globals.maxY : w.globals.maxX; // on a category, we don't pan continuosly as it causes bugs + + if (!w.config.xaxis.convertedCatToNumeric) { + me.panScrolled(xLowestValue, xHighestValue); + } + } + }, { + key: "delayedPanScrolled", + value: function delayedPanScrolled() { + var w = this.w; + var newMinX = w.globals.minX; + var newMaxX = w.globals.maxX; + var centerX = (w.globals.maxX - w.globals.minX) / 2; + + if (this.moveDirection === 'left') { + newMinX = w.globals.minX + centerX; + newMaxX = w.globals.maxX + centerX; + } else if (this.moveDirection === 'right') { + newMinX = w.globals.minX - centerX; + newMaxX = w.globals.maxX - centerX; + } + + newMinX = Math.floor(newMinX); + newMaxX = Math.floor(newMaxX); + this.updateScrolledChart({ + xaxis: { + min: newMinX, + max: newMaxX + } + }, newMinX, newMaxX); + } + }, { + key: "panScrolled", + value: function panScrolled(xLowestValue, xHighestValue) { + var w = this.w; + var xyRatios = this.xyRatios; + var yaxis = Utils$1.clone(w.globals.initialConfig.yaxis); + var xRatio = xyRatios.xRatio; + var minX = w.globals.minX; + var maxX = w.globals.maxX; + + if (w.globals.isRangeBar) { + xRatio = xyRatios.invertedYRatio; + minX = w.globals.minY; + maxX = w.globals.maxY; + } + + if (this.moveDirection === 'left') { + xLowestValue = minX + w.globals.gridWidth / 15 * xRatio; + xHighestValue = maxX + w.globals.gridWidth / 15 * xRatio; + } else if (this.moveDirection === 'right') { + xLowestValue = minX - w.globals.gridWidth / 15 * xRatio; + xHighestValue = maxX - w.globals.gridWidth / 15 * xRatio; + } + + if (!w.globals.isRangeBar) { + if (xLowestValue < w.globals.initialMinX || xHighestValue > w.globals.initialMaxX) { + xLowestValue = minX; + xHighestValue = maxX; + } + } + + var xaxis = { + min: xLowestValue, + max: xHighestValue + }; + + if (w.config.chart.zoom.autoScaleYaxis) { + var scale = new Range$1(this.ctx); + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis: xaxis + }); + } + + var options = { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + }; + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis; + } + + this.updateScrolledChart(options, xLowestValue, xHighestValue); + } + }, { + key: "updateScrolledChart", + value: function updateScrolledChart(options, xLowestValue, xHighestValue) { + var w = this.w; + + this.ctx.updateHelpers._updateOptions(options, false, false); + + if (typeof w.config.chart.events.scrolled === 'function') { + w.config.chart.events.scrolled(this.ctx, { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + }); + } + } + }]); + + return ZoomPanSelection; + }(Toolbar); + + /** + * ApexCharts Tooltip.Utils Class to support Tooltip functionality. + * + * @module Tooltip.Utils + **/ + + var Utils = /*#__PURE__*/function () { + function Utils(tooltipContext) { + _classCallCheck(this, Utils); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + } + /** + ** When hovering over series, you need to capture which series is being hovered on. + ** This function will return both capturedseries index as well as inner index of that series + * @memberof Utils + * @param {object} + * - hoverArea = the rect on which user hovers + * - elGrid = dimensions of the hover rect (it can be different than hoverarea) + */ + + + _createClass(Utils, [{ + key: "getNearestValues", + value: function getNearestValues(_ref) { + var hoverArea = _ref.hoverArea, + elGrid = _ref.elGrid, + clientX = _ref.clientX, + clientY = _ref.clientY; + var w = this.w; + var seriesBound = elGrid.getBoundingClientRect(); + var hoverWidth = seriesBound.width; + var hoverHeight = seriesBound.height; + var xDivisor = hoverWidth / (w.globals.dataPoints - 1); + var yDivisor = hoverHeight / w.globals.dataPoints; + var hasBars = this.hasBars(); + + if ((w.globals.comboCharts || hasBars) && !w.config.xaxis.convertedCatToNumeric) { + xDivisor = hoverWidth / w.globals.dataPoints; + } + + var hoverX = clientX - seriesBound.left - w.globals.barPadForNumericAxis; + var hoverY = clientY - seriesBound.top; + var notInRect = hoverX < 0 || hoverY < 0 || hoverX > hoverWidth || hoverY > hoverHeight; + + if (notInRect) { + hoverArea.classList.remove('hovering-zoom'); + hoverArea.classList.remove('hovering-pan'); + } else { + if (w.globals.zoomEnabled) { + hoverArea.classList.remove('hovering-pan'); + hoverArea.classList.add('hovering-zoom'); + } else if (w.globals.panEnabled) { + hoverArea.classList.remove('hovering-zoom'); + hoverArea.classList.add('hovering-pan'); + } + } + + var j = Math.round(hoverX / xDivisor); + var jHorz = Math.floor(hoverY / yDivisor); + + if (hasBars && !w.config.xaxis.convertedCatToNumeric) { + j = Math.ceil(hoverX / xDivisor); + j = j - 1; + } + + var capturedSeries = null; + var closest = null; + var seriesXValArr = []; + var seriesYValArr = []; //add extra values to show markers for the first points. Included both axes to avoid incorrect positioning of the marker + + w.globals.seriesXvalues.forEach(function (value) { + seriesXValArr.push([value[0] + 0.000001].concat(value)); + }); + w.globals.seriesYvalues.forEach(function (value) { + seriesYValArr.push([value[0] + 0.000001].concat(value)); + }); + seriesXValArr = seriesXValArr.map(function (seriesXVal) { + return seriesXVal.filter(function (s) { + return Utils$1.isNumber(s); + }); + }); + seriesYValArr = seriesYValArr.map(function (seriesYVal) { + return seriesYVal.filter(function (s) { + return Utils$1.isNumber(s); + }); + }); // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value + + if (w.globals.isXNumeric) { + // Change origin of cursor position so that we can compute the relative nearest point to the cursor on our chart + // we only need to scale because all points are relative to the bounds.left and bounds.top => origin is virtually (0, 0) + var chartGridEl = this.ttCtx.getElGrid(); + var chartGridElBoundingRect = chartGridEl.getBoundingClientRect(); + var transformedHoverX = hoverX * (chartGridElBoundingRect.width / hoverWidth); + var transformedHoverY = hoverY * (chartGridElBoundingRect.height / hoverHeight); + closest = this.closestInMultiArray(transformedHoverX, transformedHoverY, seriesXValArr, seriesYValArr); + capturedSeries = closest.index; + j = closest.j; + + if (capturedSeries !== null) { + // initial push, it should be a little smaller than the 1st val + seriesXValArr = w.globals.seriesXvalues[capturedSeries]; + closest = this.closestInArray(transformedHoverX, seriesXValArr); + j = closest.index; + } + } + + w.globals.capturedSeriesIndex = capturedSeries === null ? -1 : capturedSeries; + if (!j || j < 1) j = 0; + + if (w.globals.isBarHorizontal) { + w.globals.capturedDataPointIndex = jHorz; + } else { + w.globals.capturedDataPointIndex = j; + } + + return { + capturedSeries: capturedSeries, + j: w.globals.isBarHorizontal ? jHorz : j, + hoverX: hoverX, + hoverY: hoverY + }; + } + }, { + key: "closestInMultiArray", + value: function closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) { + var w = this.w; + var activeIndex = 0; + var currIndex = null; + var j = -1; + + if (w.globals.series.length > 1) { + activeIndex = this.getFirstActiveXArray(Xarrays); + } else { + currIndex = 0; + } + + var currX = Xarrays[activeIndex][0]; + var diffX = Math.abs(hoverX - currX); // find nearest point on x-axis + + Xarrays.forEach(function (arrX) { + arrX.forEach(function (x, iX) { + var newDiff = Math.abs(hoverX - x); + + if (newDiff < diffX) { + diffX = newDiff; + j = iX; + } + }); + }); + + if (j !== -1) { + // find nearest graph on y-axis relevanted to nearest point on x-axis + var currY = Yarrays[activeIndex][j]; + var diffY = Math.abs(hoverY - currY); + currIndex = activeIndex; + Yarrays.forEach(function (arrY, iAY) { + var newDiff = Math.abs(hoverY - arrY[j]); + + if (newDiff < diffY) { + diffY = newDiff; + currIndex = iAY; + } + }); + } + + return { + index: currIndex, + j: j + }; + } + }, { + key: "getFirstActiveXArray", + value: function getFirstActiveXArray(Xarrays) { + var w = this.w; + var activeIndex = 0; + var firstActiveSeriesIndex = Xarrays.map(function (xarr, index) { + return xarr.length > 0 ? index : -1; + }); + + for (var a = 0; a < firstActiveSeriesIndex.length; a++) { + if (firstActiveSeriesIndex[a] !== -1 && w.globals.collapsedSeriesIndices.indexOf(a) === -1 && w.globals.ancillaryCollapsedSeriesIndices.indexOf(a) === -1) { + activeIndex = firstActiveSeriesIndex[a]; + break; + } + } + + return activeIndex; + } + }, { + key: "closestInArray", + value: function closestInArray(val, arr) { + var curr = arr[0]; + var currIndex = null; + var diff = Math.abs(val - curr); + + for (var i = 0; i < arr.length; i++) { + var newdiff = Math.abs(val - arr[i]); + + if (newdiff < diff) { + diff = newdiff; + currIndex = i; + } + } + + return { + index: currIndex + }; + } + /** + * When there are multiple series, it is possible to have different x values for each series. + * But it may be possible in those multiple series, that there is same x value for 2 or more + * series. + * @memberof Utils + * @param {int} + * - j = is the inner index of series -> (series[i][j]) + * @return {bool} + */ + + }, { + key: "isXoverlap", + value: function isXoverlap(j) { + var w = this.w; + var xSameForAllSeriesJArr = []; + var seriesX = w.globals.seriesX.filter(function (s) { + return typeof s[0] !== 'undefined'; + }); + + if (seriesX.length > 0) { + for (var i = 0; i < seriesX.length - 1; i++) { + if (typeof seriesX[i][j] !== 'undefined' && typeof seriesX[i + 1][j] !== 'undefined') { + if (seriesX[i][j] !== seriesX[i + 1][j]) { + xSameForAllSeriesJArr.push('unEqual'); + } + } + } + } + + if (xSameForAllSeriesJArr.length === 0) { + return true; + } + + return false; + } + }, { + key: "isInitialSeriesSameLen", + value: function isInitialSeriesSameLen() { + var sameLen = true; + var initialSeries = this.w.globals.initialSeries; + + for (var i = 0; i < initialSeries.length - 1; i++) { + if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) { + sameLen = false; + break; + } + } + + return sameLen; + } + }, { + key: "getBarsHeight", + value: function getBarsHeight(allbars) { + var bars = _toConsumableArray(allbars); + + var totalHeight = bars.reduce(function (acc, bar) { + return acc + bar.getBBox().height; + }, 0); + return totalHeight; + } + }, { + key: "getElMarkers", + value: function getElMarkers() { + return this.w.globals.dom.baseEl.querySelectorAll(' .apexcharts-series-markers'); + } + }, { + key: "getAllMarkers", + value: function getAllMarkers() { + // first get all marker parents. This parent class contains series-index + // which helps to sort the markers as they are dynamic + var markersWraps = this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers-wrap'); + markersWraps = _toConsumableArray(markersWraps); + markersWraps.sort(function (a, b) { + var indexA = Number(a.getAttribute('data:realIndex')); + var indexB = Number(b.getAttribute('data:realIndex')); + return indexB < indexA ? 1 : indexB > indexA ? -1 : 0; + }); + var markers = []; + markersWraps.forEach(function (m) { + markers.push(m.querySelector('.apexcharts-marker')); + }); + return markers; + } + }, { + key: "hasMarkers", + value: function hasMarkers() { + var markers = this.getElMarkers(); + return markers.length > 0; + } + }, { + key: "getElBars", + value: function getElBars() { + return this.w.globals.dom.baseEl.querySelectorAll('.apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series'); + } + }, { + key: "hasBars", + value: function hasBars() { + var bars = this.getElBars(); + return bars.length > 0; + } + }, { + key: "getHoverMarkerSize", + value: function getHoverMarkerSize(index) { + var w = this.w; + var hoverSize = w.config.markers.hover.size; + + if (hoverSize === undefined) { + hoverSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + return hoverSize; + } + }, { + key: "toggleAllTooltipSeriesGroups", + value: function toggleAllTooltipSeriesGroups(state) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.allTooltipSeriesGroups.length === 0) { + ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll('.apexcharts-tooltip-series-group'); + } + + var allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups; + + for (var i = 0; i < allTooltipSeriesGroups.length; i++) { + if (state === 'enable') { + allTooltipSeriesGroups[i].classList.add('apexcharts-active'); + allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display; + } else { + allTooltipSeriesGroups[i].classList.remove('apexcharts-active'); + allTooltipSeriesGroups[i].style.display = 'none'; + } + } + } + }]); + + return Utils; + }(); + + /** + * ApexCharts Tooltip.Labels Class to draw texts on the tooltip. + * This file deals with printing actual text on the tooltip. + * + * @module Tooltip.Labels + **/ + + var Labels = /*#__PURE__*/function () { + function Labels(tooltipContext) { + _classCallCheck(this, Labels); + + this.w = tooltipContext.w; + this.ctx = tooltipContext.ctx; + this.ttCtx = tooltipContext; + this.tooltipUtil = new Utils(tooltipContext); + } + + _createClass(Labels, [{ + key: "drawSeriesTexts", + value: function drawSeriesTexts(_ref) { + var _ref$shared = _ref.shared, + shared = _ref$shared === void 0 ? true : _ref$shared, + ttItems = _ref.ttItems, + _ref$i = _ref.i, + i = _ref$i === void 0 ? 0 : _ref$i, + _ref$j = _ref.j, + j = _ref$j === void 0 ? null : _ref$j, + y1 = _ref.y1, + y2 = _ref.y2, + e = _ref.e; + var w = this.w; + + if (w.config.tooltip.custom !== undefined) { + this.handleCustomTooltip({ + i: i, + j: j, + y1: y1, + y2: y2, + w: w + }); + } else { + this.toggleActiveInactiveSeries(shared); + } + + var values = this.getValuesToPrint({ + i: i, + j: j + }); + this.printLabels({ + i: i, + j: j, + values: values, + ttItems: ttItems, + shared: shared, + e: e + }); // Re-calculate tooltip dimensions now that we have drawn the text + + var tooltipEl = this.ttCtx.getElTooltip(); + this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width; + this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height; + } + }, { + key: "printLabels", + value: function printLabels(_ref2) { + var _this = this; + + var i = _ref2.i, + j = _ref2.j, + values = _ref2.values, + ttItems = _ref2.ttItems, + shared = _ref2.shared, + e = _ref2.e; + var w = this.w; + var val; + var goalVals = []; + + var hasGoalValues = function hasGoalValues(gi) { + return w.globals.seriesGoals[gi] && w.globals.seriesGoals[gi][j] && Array.isArray(w.globals.seriesGoals[gi][j]); + }; + + var xVal = values.xVal, + zVal = values.zVal, + xAxisTTVal = values.xAxisTTVal; + var seriesName = ''; + var pColor = w.globals.colors[i]; // The pColor here is for the markers inside tooltip + + if (j !== null && w.config.plotOptions.bar.distributed) { + pColor = w.globals.colors[j]; + } + + var _loop = function _loop(t, inverset) { + var f = _this.getFormatters(i); + + seriesName = _this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: i, + seriesIndex: i, + j: j + }); + + if (w.config.chart.type === 'treemap') { + seriesName = f.yLbTitleFormatter(String(w.config.series[i].data[j].x), { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }); + } + + var tIndex = w.config.tooltip.inverseOrder ? inverset : t; + + if (w.globals.axisCharts) { + var getValBySeriesIndex = function getValBySeriesIndex(index) { + return f.yLbFormatter(w.globals.series[index][j], { + series: w.globals.series, + seriesIndex: index, + dataPointIndex: j, + w: w + }); + }; + + if (shared) { + f = _this.getFormatters(tIndex); + seriesName = _this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: tIndex, + seriesIndex: i, + j: j + }); + pColor = w.globals.colors[tIndex]; + val = getValBySeriesIndex(tIndex); + + if (hasGoalValues(tIndex)) { + goalVals = w.globals.seriesGoals[tIndex][j].map(function (goal) { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: tIndex, + dataPointIndex: j, + w: w + }) + }; + }); + } + } else { + var _e$target; + + // get a color from a hover area (if it's a line pattern then get from a first line) + var targetFill = e === null || e === void 0 ? void 0 : (_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.getAttribute('fill'); + + if (targetFill) { + pColor = targetFill.indexOf("url") !== -1 ? document.querySelector(targetFill.substr(4).slice(0, -1)).childNodes[0].getAttribute("stroke") : targetFill; + } + + val = getValBySeriesIndex(i); + + if (hasGoalValues(i) && Array.isArray(w.globals.seriesGoals[i][j])) { + goalVals = w.globals.seriesGoals[i][j].map(function (goal) { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: i, + dataPointIndex: j, + w: w + }) + }; + }); + } + } + } // for pie / donuts + + + if (j === null) { + val = f.yLbFormatter(w.globals.series[i], _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: i, + dataPointIndex: i + })); + } + + _this.DOMHandling({ + i: i, + t: tIndex, + j: j, + ttItems: ttItems, + values: { + val: val, + goalVals: goalVals, + xVal: xVal, + xAxisTTVal: xAxisTTVal, + zVal: zVal + }, + seriesName: seriesName, + shared: shared, + pColor: pColor + }); + }; + + for (var t = 0, inverset = w.globals.series.length - 1; t < w.globals.series.length; t++, inverset--) { + _loop(t, inverset); + } + } + }, { + key: "getFormatters", + value: function getFormatters(i) { + var w = this.w; + var yLbFormatter = w.globals.yLabelFormatters[i]; + var yLbTitleFormatter; + + if (w.globals.ttVal !== undefined) { + if (Array.isArray(w.globals.ttVal)) { + yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter; + yLbTitleFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].title && w.globals.ttVal[i].title.formatter; + } else { + yLbFormatter = w.globals.ttVal.formatter; + + if (typeof w.globals.ttVal.title.formatter === 'function') { + yLbTitleFormatter = w.globals.ttVal.title.formatter; + } + } + } else { + yLbTitleFormatter = w.config.tooltip.y.title.formatter; + } + + if (typeof yLbFormatter !== 'function') { + if (w.globals.yLabelFormatters[0]) { + yLbFormatter = w.globals.yLabelFormatters[0]; + } else { + yLbFormatter = function yLbFormatter(label) { + return label; + }; + } + } + + if (typeof yLbTitleFormatter !== 'function') { + yLbTitleFormatter = function yLbTitleFormatter(label) { + return label; + }; + } + + return { + yLbFormatter: yLbFormatter, + yLbTitleFormatter: yLbTitleFormatter + }; + } + }, { + key: "getSeriesName", + value: function getSeriesName(_ref3) { + var fn = _ref3.fn, + index = _ref3.index, + seriesIndex = _ref3.seriesIndex, + j = _ref3.j; + var w = this.w; + return fn(String(w.globals.seriesNames[index]), { + series: w.globals.series, + seriesIndex: seriesIndex, + dataPointIndex: j, + w: w + }); + } + }, { + key: "DOMHandling", + value: function DOMHandling(_ref4) { + _ref4.i; + var t = _ref4.t, + j = _ref4.j, + ttItems = _ref4.ttItems, + values = _ref4.values, + seriesName = _ref4.seriesName, + shared = _ref4.shared, + pColor = _ref4.pColor; + var w = this.w; + var ttCtx = this.ttCtx; + var val = values.val, + goalVals = values.goalVals, + xVal = values.xVal, + xAxisTTVal = values.xAxisTTVal, + zVal = values.zVal; + var ttItemsChildren = null; + ttItemsChildren = ttItems[t].children; + + if (w.config.tooltip.fillSeriesColor) { + ttItems[t].style.backgroundColor = pColor; + ttItemsChildren[0].style.display = 'none'; + } + + if (ttCtx.showTooltipTitle) { + if (ttCtx.tooltipTitle === null) { + // get it once if null, and store it in class property + ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-title'); + } + + ttCtx.tooltipTitle.innerHTML = xVal; + } // if xaxis tooltip is constructed, we need to replace the innerHTML + + + if (ttCtx.isXAxisTooltipEnabled) { + ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal; + } + + var ttYLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-y-label'); + + if (ttYLabel) { + ttYLabel.innerHTML = seriesName ? seriesName : ''; + } + + var ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-y-value'); + + if (ttYVal) { + ttYVal.innerHTML = typeof val !== 'undefined' ? val : ''; + } + + if (ttItemsChildren[0] && ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker')) { + if (w.config.tooltip.marker.fillColors && Array.isArray(w.config.tooltip.marker.fillColors)) { + pColor = w.config.tooltip.marker.fillColors[t]; + } + + ttItemsChildren[0].style.backgroundColor = pColor; + } + + if (!w.config.tooltip.marker.show) { + ttItemsChildren[0].style.display = 'none'; + } + + var ttGLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-goals-label'); + var ttGVal = ttItems[t].querySelector('.apexcharts-tooltip-text-goals-value'); + + if (goalVals.length && w.globals.seriesGoals[t]) { + var createGoalsHtml = function createGoalsHtml() { + var gLabels = '
    '; + var gVals = '
    '; + goalVals.forEach(function (goal, gi) { + gLabels += "
    ").concat(goal.attrs.name, "
    "); + gVals += "
    ".concat(goal.val, "
    "); + }); + ttGLabel.innerHTML = gLabels + "
    "; + ttGVal.innerHTML = gVals + "
    "; + }; + + if (shared) { + if (w.globals.seriesGoals[t][j] && Array.isArray(w.globals.seriesGoals[t][j])) { + createGoalsHtml(); + } else { + ttGLabel.innerHTML = ''; + ttGVal.innerHTML = ''; + } + } else { + createGoalsHtml(); + } + } else { + ttGLabel.innerHTML = ''; + ttGVal.innerHTML = ''; + } + + if (zVal !== null) { + var ttZLabel = ttItems[t].querySelector('.apexcharts-tooltip-text-z-label'); + ttZLabel.innerHTML = w.config.tooltip.z.title; + var ttZVal = ttItems[t].querySelector('.apexcharts-tooltip-text-z-value'); + ttZVal.innerHTML = typeof zVal !== 'undefined' ? zVal : ''; + } + + if (shared && ttItemsChildren[0]) { + // hide when no Val or series collapsed + if (typeof val === 'undefined' || val === null || w.globals.ancillaryCollapsedSeriesIndices.indexOf(t) > -1 || w.globals.collapsedSeriesIndices.indexOf(t) > -1) { + ttItemsChildren[0].parentNode.style.display = 'none'; + } else { + ttItemsChildren[0].parentNode.style.display = w.config.tooltip.items.display; + } // TODO: issue #1240 needs to be looked at again. commenting it because this also hides single series values with 0 in it (shared tooltip) + // if (w.globals.stackedSeriesTotals[j] === 0) { + // // shared tooltip and all values are null, so we need to hide the x value too + // let allYZeroForJ = false + // for (let si = 1; si < w.globals.seriesYvalues.length; si++) { + // if ( + // w.globals.seriesYvalues[si][j] === + // w.globals.seriesYvalues[si - 1][j] + // ) { + // allYZeroForJ = true + // } + // } + // if (allYZeroForJ) { + // ttCtx.tooltipTitle.style.display = 'none' + // } else { + // ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display + // } + // } else { + // ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display + // } + + } + } + }, { + key: "toggleActiveInactiveSeries", + value: function toggleActiveInactiveSeries(shared) { + var w = this.w; + + if (shared) { + // make all tooltips active + this.tooltipUtil.toggleAllTooltipSeriesGroups('enable'); + } else { + // disable all tooltip text groups + this.tooltipUtil.toggleAllTooltipSeriesGroups('disable'); // enable the first tooltip text group + + var firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip-series-group'); + + if (firstTooltipSeriesGroup) { + firstTooltipSeriesGroup.classList.add('apexcharts-active'); + firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display; + } + } + } + }, { + key: "getValuesToPrint", + value: function getValuesToPrint(_ref5) { + var i = _ref5.i, + j = _ref5.j; + var w = this.w; + var filteredSeriesX = this.ctx.series.filteredSeriesX(); + var xVal = ''; + var xAxisTTVal = ''; + var zVal = null; + var val = null; + var customFormatterOpts = { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w: w + }; + var zFormatter = w.globals.ttZFormatter; + + if (j === null) { + val = w.globals.series[i]; + } else { + if (w.globals.isXNumeric && w.config.chart.type !== 'treemap') { + xVal = filteredSeriesX[i][j]; + + if (filteredSeriesX[i].length === 0) { + // a series (possibly the first one) might be collapsed, so get the next active index + var firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray(filteredSeriesX); + xVal = filteredSeriesX[firstActiveSeriesIndex][j]; + } + } else { + xVal = typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : ''; + } + } + + var bufferXVal = xVal; + + if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') { + var xFormat = new Formatters(this.ctx); + xVal = xFormat.xLabelFormat(w.globals.ttKeyFormatter, bufferXVal, bufferXVal, { + i: undefined, + dateFormatter: new DateTime(this.ctx).formatDate, + w: this.w + }); + } else { + if (w.globals.isBarHorizontal) { + xVal = w.globals.yLabelFormatters[0](bufferXVal, customFormatterOpts); + } else { + xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts); + } + } // override default x-axis formatter with tooltip formatter + + + if (w.config.tooltip.x.formatter !== undefined) { + xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts); + } + + if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[i].length > 0) { + zVal = zFormatter(w.globals.seriesZ[i][j], w); + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + xAxisTTVal = w.globals.xaxisTooltipFormatter(bufferXVal, customFormatterOpts); + } else { + xAxisTTVal = xVal; + } + + return { + val: Array.isArray(val) ? val.join(' ') : val, + xVal: Array.isArray(xVal) ? xVal.join(' ') : xVal, + xAxisTTVal: Array.isArray(xAxisTTVal) ? xAxisTTVal.join(' ') : xAxisTTVal, + zVal: zVal + }; + } + }, { + key: "handleCustomTooltip", + value: function handleCustomTooltip(_ref6) { + var i = _ref6.i, + j = _ref6.j, + y1 = _ref6.y1, + y2 = _ref6.y2, + w = _ref6.w; + var tooltipEl = this.ttCtx.getElTooltip(); + var fn = w.config.tooltip.custom; + + if (Array.isArray(fn) && fn[i]) { + fn = fn[i]; + } // override everything with a custom html tooltip and replace it + + + tooltipEl.innerHTML = fn({ + ctx: this.ctx, + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + y1: y1, + y2: y2, + w: w + }); + } + }]); + + return Labels; + }(); + + /** + * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position. + * + * @module Tooltip.Position + **/ + + var Position = /*#__PURE__*/function () { + function Position(tooltipContext) { + _classCallCheck(this, Position); + + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + this.w = tooltipContext.w; + } + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + + + _createClass(Position, [{ + key: "moveXCrosshairs", + value: function moveXCrosshairs(cx) { + var j = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; + var ttCtx = this.ttCtx; + var w = this.w; + var xcrosshairs = ttCtx.getElXCrosshairs(); + var x = cx - ttCtx.xcrosshairsWidth / 2; + var tickAmount = w.globals.labels.slice().length; + + if (j !== null) { + x = w.globals.gridWidth / tickAmount * j; + } + + if (xcrosshairs !== null && !w.globals.isBarHorizontal) { + xcrosshairs.setAttribute('x', x); + xcrosshairs.setAttribute('x1', x); + xcrosshairs.setAttribute('x2', x); + xcrosshairs.setAttribute('y2', w.globals.gridHeight); + xcrosshairs.classList.add('apexcharts-active'); + } + + if (x < 0) { + x = 0; + } + + if (x > w.globals.gridWidth) { + x = w.globals.gridWidth; + } + + if (ttCtx.isXAxisTooltipEnabled) { + var tx = x; + + if (w.config.xaxis.crosshairs.width === 'tickWidth' || w.config.xaxis.crosshairs.width === 'barWidth') { + tx = x + ttCtx.xcrosshairsWidth / 2; + } + + this.moveXAxisTooltip(tx); + } + } + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + + }, { + key: "moveYCrosshairs", + value: function moveYCrosshairs(cy) { + var ttCtx = this.ttCtx; + + if (ttCtx.ycrosshairs !== null) { + Graphics.setAttrs(ttCtx.ycrosshairs, { + y1: cy, + y2: cy + }); + } + + if (ttCtx.ycrosshairsHidden !== null) { + Graphics.setAttrs(ttCtx.ycrosshairsHidden, { + y1: cy, + y2: cy + }); + } + } + /** + ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move + */ + + }, { + key: "moveXAxisTooltip", + value: function moveXAxisTooltip(cx) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.xaxisTooltip !== null && ttCtx.xcrosshairsWidth !== 0) { + ttCtx.xaxisTooltip.classList.add('apexcharts-active'); + var cy = ttCtx.xaxisOffY + w.config.xaxis.tooltip.offsetY + w.globals.translateY + 1 + w.config.xaxis.offsetY; + var xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect(); + var xaxisTTTextWidth = xaxisTTText.width; + cx = cx - xaxisTTTextWidth / 2; + + if (!isNaN(cx)) { + cx = cx + w.globals.translateX; + var textRect = 0; + var graphics = new Graphics(this.ctx); + textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML); + ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px'; + ttCtx.xaxisTooltip.style.left = cx + 'px'; + ttCtx.xaxisTooltip.style.top = cy + 'px'; + } + } + } + }, { + key: "moveYAxisTooltip", + value: function moveYAxisTooltip(index) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (ttCtx.yaxisTTEls === null) { + ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip'); + } + + var ycrosshairsHiddenRectY1 = parseInt(ttCtx.ycrosshairsHidden.getAttribute('y1'), 10); + var cy = w.globals.translateY + ycrosshairsHiddenRectY1; + var yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect(); + var yAxisTTHeight = yAxisTTRect.height; + var cx = w.globals.translateYAxisX[index] - 2; + + if (w.config.yaxis[index].opposite) { + cx = cx - 26; + } + + cy = cy - yAxisTTHeight / 2; + + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + ttCtx.yaxisTTEls[index].classList.add('apexcharts-active'); + ttCtx.yaxisTTEls[index].style.top = cy + 'px'; + ttCtx.yaxisTTEls[index].style.left = cx + w.config.yaxis[index].tooltip.offsetX + 'px'; + } else { + ttCtx.yaxisTTEls[index].classList.remove('apexcharts-active'); + } + } + /** + ** moves the whole tooltip by changing x, y attrs + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip + * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip + * @param {int} - r = point's radius + */ + + }, { + key: "moveTooltip", + value: function moveTooltip(cx, cy) { + var r = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var w = this.w; + var ttCtx = this.ttCtx; + var tooltipEl = ttCtx.getElTooltip(); + var tooltipRect = ttCtx.tooltipRect; + var pointR = r !== null ? parseFloat(r) : 1; + var x = parseFloat(cx) + pointR + 5; + var y = parseFloat(cy) + pointR / 2; // - tooltipRect.ttHeight / 2 + + if (x > w.globals.gridWidth / 2) { + x = x - tooltipRect.ttWidth - pointR - 10; + } + + if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) { + x = w.globals.gridWidth - tooltipRect.ttWidth; + } + + if (x < -20) { + x = -20; + } + + if (w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top - tooltipRect.ttHeight / 2; + } else { + if (!w.globals.isBarHorizontal) { + if (tooltipRect.ttHeight / 2 + y > w.globals.gridHeight) { + y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY; + } + + if (y < 0) { + y = 0; + } + } + } + + if (!isNaN(x)) { + x = x + w.globals.translateX; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + } + } + }, { + key: "moveMarkers", + value: function moveMarkers(i, j) { + var w = this.w; + var ttCtx = this.ttCtx; + + if (w.globals.markers.size[i] > 0) { + var allPoints = w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(i, "'] .apexcharts-marker")); + + for (var p = 0; p < allPoints.length; p++) { + if (parseInt(allPoints[p].getAttribute('rel'), 10) === j) { + ttCtx.marker.resetPointsSize(); + ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]); + } + } + } else { + ttCtx.marker.resetPointsSize(); + this.moveDynamicPointOnHover(j, i); + } + } // This function is used when you need to show markers/points only on hover - + // DIFFERENT X VALUES in multiple series + + }, { + key: "moveDynamicPointOnHover", + value: function moveDynamicPointOnHover(j, capturedSeries) { + var w = this.w; + var ttCtx = this.ttCtx; + var cx = 0; + var cy = 0; + var pointsArr = w.globals.pointsArray; + var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(capturedSeries); + var serType = w.config.series[capturedSeries].type; + + if (serType && (serType === 'column' || serType === 'candlestick' || serType === 'boxPlot')) { + // fix error mentioned in #811 + return; + } + + cx = pointsArr[capturedSeries][j][0]; + cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0; + var point = w.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(capturedSeries, "'] .apexcharts-series-markers circle")); + + if (point && cy < w.globals.gridHeight && cy > 0) { + point.setAttribute('r', hoverSize); + point.setAttribute('cx', cx); + point.setAttribute('cy', cy); + } // point.style.opacity = w.config.markers.hover.opacity + + + this.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + this.moveTooltip(cx, cy, hoverSize); + } + } // This function is used when you need to show markers/points only on hover - + // SAME X VALUES in multiple series + + }, { + key: "moveDynamicPointsOnHover", + value: function moveDynamicPointsOnHover(j) { + var ttCtx = this.ttCtx; + var w = ttCtx.w; + var cx = 0; + var cy = 0; + var activeSeries = 0; + var pointsArr = w.globals.pointsArray; + var series = new Series(this.ctx); + activeSeries = series.getActiveConfigSeriesIndex('asc', ['line', 'area', 'scatter', 'bubble']); + var hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(activeSeries); + + if (pointsArr[activeSeries]) { + cx = pointsArr[activeSeries][j][0]; + cy = pointsArr[activeSeries][j][1]; + } + + var points = ttCtx.tooltipUtil.getAllMarkers(); + + if (points !== null) { + for (var p = 0; p < w.globals.series.length; p++) { + var pointArr = pointsArr[p]; + + if (w.globals.comboCharts) { + // in a combo chart, if column charts are present, markers will not match with the number of series, hence this patch to push a null value in points array + if (typeof pointArr === 'undefined') { + // nodelist to array + points.splice(p, 0, null); + } + } + + if (pointArr && pointArr.length) { + var pcy = pointsArr[p][j][1]; + var pcy2 = void 0; + points[p].setAttribute('cx', cx); + + if (w.config.chart.type === 'rangeArea' && !w.globals.comboCharts) { + var rangeStartIndex = j + w.globals.series[p].length; + pcy2 = pointsArr[p][rangeStartIndex][1]; + var pcyDiff = Math.abs(pcy - pcy2) / 2; + pcy = pcy - pcyDiff; + } + + if (pcy !== null && !isNaN(pcy) && pcy < w.globals.gridHeight + hoverSize && pcy + hoverSize > 0) { + points[p] && points[p].setAttribute('r', hoverSize); + points[p] && points[p].setAttribute('cy', pcy); + } else { + points[p] && points[p].setAttribute('r', 0); + } + } + } + } + + this.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + var tcy = cy || w.globals.gridHeight; + this.moveTooltip(cx, tcy, hoverSize); + } + } + }, { + key: "moveStickyTooltipOverBars", + value: function moveStickyTooltipOverBars(j) { + var w = this.w; + var ttCtx = this.ttCtx; + var barLen = w.globals.columnSeries ? w.globals.columnSeries.length : w.globals.series.length; + var i = barLen >= 2 && barLen % 2 === 0 ? Math.floor(barLen / 2) : Math.floor(barLen / 2) + 1; + + if (w.globals.isBarHorizontal) { + var series = new Series(this.ctx); + i = series.getActiveConfigSeriesIndex('desc') + 1; + } + + var jBar = w.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(i, "'] path[j='").concat(j, "'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(i, "'] path[j='").concat(j, "']")); + var bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0; + var bcy = jBar ? parseFloat(jBar.getAttribute('cy')) : 0; + var bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0; + var bh = jBar ? parseFloat(jBar.getAttribute('barHeight')) : 0; + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + var isBoxOrCandle = jBar.classList.contains('apexcharts-candlestick-area') || jBar.classList.contains('apexcharts-boxPlot-area'); + + if (w.globals.isXNumeric) { + if (jBar && !isBoxOrCandle) { + bcx = bcx - (barLen % 2 !== 0 ? bw / 2 : 0); + } + + if (jBar && // fixes apexcharts.js#2354 + isBoxOrCandle && w.globals.comboCharts) { + bcx = bcx - bw / 2; + } + } else { + if (!w.globals.isBarHorizontal) { + bcx = ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2; + + if (isNaN(bcx)) { + bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2; + } + } + } + + if (!w.globals.isBarHorizontal) { + if (w.config.tooltip.followCursor) { + bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2; + } else { + if (bcy + ttCtx.tooltipRect.ttHeight + 15 > w.globals.gridHeight) { + bcy = w.globals.gridHeight; + } + } + } else { + if (bcy > w.globals.gridHeight / 2) { + bcy = bcy - ttCtx.tooltipRect.ttHeight; + } + + bcy = bcy + w.config.grid.padding.top + bh / 3; + + if (bcy + bh > w.globals.gridHeight) { + bcy = w.globals.gridHeight - bh; + } + } + + if (bcy < -10) { + bcy = -10; + } + + if (!w.globals.isBarHorizontal) { + this.moveXCrosshairs(bcx); + } + + if (!ttCtx.fixedTooltip) { + var tcy = bcy || w.globals.gridHeight; + this.moveTooltip(bcx, tcy); + } + } + }]); + + return Position; + }(); + + /** + * ApexCharts Tooltip.Marker Class to draw texts on the tooltip. + * This file deals with the markers that appear near tooltip in line/area charts. + * These markers helps the user to associate the data-points and the values + * that are shown in the tooltip + * + * @module Tooltip.Marker + **/ + + var Marker = /*#__PURE__*/function () { + function Marker(tooltipContext) { + _classCallCheck(this, Marker); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + this.ctx = tooltipContext.ctx; + this.tooltipPosition = new Position(tooltipContext); + } + + _createClass(Marker, [{ + key: "drawDynamicPoints", + value: function drawDynamicPoints() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var marker = new Markers(this.ctx); + var elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series'); + elsSeries = _toConsumableArray(elsSeries); + + if (w.config.chart.stacked) { + elsSeries.sort(function (a, b) { + return parseFloat(a.getAttribute('data:realIndex')) - parseFloat(b.getAttribute('data:realIndex')); + }); + } + + for (var i = 0; i < elsSeries.length; i++) { + var pointsMain = elsSeries[i].querySelector(".apexcharts-series-markers-wrap"); + + if (pointsMain !== null) { + // it can be null as we have tooltips in donut/bar charts + var point = void 0; + var PointClasses = "apexcharts-marker w".concat((Math.random() + 1).toString(36).substring(4)); + + if ((w.config.chart.type === 'line' || w.config.chart.type === 'area') && !w.globals.comboCharts && !w.config.tooltip.intersect) { + PointClasses += ' no-pointer-events'; + } + + var elPointOptions = marker.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex: Number(pointsMain.getAttribute('data:realIndex')) // fixes apexcharts/apexcharts.js #1427 + + }); + point = graphics.drawMarker(0, 0, elPointOptions); + point.node.setAttribute('default-marker-size', 0); + var elPointsG = document.createElementNS(w.globals.SVGNS, 'g'); + elPointsG.classList.add('apexcharts-series-markers'); + elPointsG.appendChild(point.node); + pointsMain.appendChild(elPointsG); + } + } + } + }, { + key: "enlargeCurrentPoint", + value: function enlargeCurrentPoint(rel, point) { + var x = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + var y = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + var w = this.w; + + if (w.config.chart.type !== 'bubble') { + this.newPointSize(rel, point); + } + + var cx = point.getAttribute('cx'); + var cy = point.getAttribute('cy'); + + if (x !== null && y !== null) { + cx = x; + cy = y; + } + + this.tooltipPosition.moveXCrosshairs(cx); + + if (!this.fixedTooltip) { + if (w.config.chart.type === 'radar') { + var elGrid = this.ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + cx = this.ttCtx.e.clientX - seriesBound.left; + } + + this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size); + } + } + }, { + key: "enlargePoints", + value: function enlargePoints(j) { + var w = this.w; + var me = this; + var ttCtx = this.ttCtx; + var col = j; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker'); + var newSize = w.config.markers.hover.size; + + for (var p = 0; p < points.length; p++) { + var rel = points[p].getAttribute('rel'); + var index = points[p].getAttribute('index'); + + if (newSize === undefined) { + newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + if (col === parseInt(rel, 10)) { + me.newPointSize(col, points[p]); + var cx = points[p].getAttribute('cx'); + var cy = points[p].getAttribute('cy'); + me.tooltipPosition.moveXCrosshairs(cx); + + if (!ttCtx.fixedTooltip) { + me.tooltipPosition.moveTooltip(cx, cy, newSize); + } + } else { + me.oldPointSize(points[p]); + } + } + } + }, { + key: "newPointSize", + value: function newPointSize(rel, point) { + var w = this.w; + var newSize = w.config.markers.hover.size; + var elPoint = rel === 0 ? point.parentNode.firstChild : point.parentNode.lastChild; + + if (elPoint.getAttribute('default-marker-size') !== '0') { + var index = parseInt(elPoint.getAttribute('index'), 10); + + if (newSize === undefined) { + newSize = w.globals.markers.size[index] + w.config.markers.hover.sizeOffset; + } + + if (newSize < 0) newSize = 0; + elPoint.setAttribute('r', newSize); + } + } + }, { + key: "oldPointSize", + value: function oldPointSize(point) { + var size = parseFloat(point.getAttribute('default-marker-size')); + point.setAttribute('r', size); + } + }, { + key: "resetPointsSize", + value: function resetPointsSize() { + var w = this.w; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker'); + + for (var p = 0; p < points.length; p++) { + var size = parseFloat(points[p].getAttribute('default-marker-size')); + + if (Utils$1.isNumber(size) && size >= 0) { + points[p].setAttribute('r', size); + } else { + points[p].setAttribute('r', 0); + } + } + } + }]); + + return Marker; + }(); + + /** + * ApexCharts Tooltip.Intersect Class. + * This file deals with functions related to intersecting tooltips + * (tooltips that appear when user hovers directly over a data-point whether) + * + * @module Tooltip.Intersect + **/ + + var Intersect = /*#__PURE__*/function () { + function Intersect(tooltipContext) { + _classCallCheck(this, Intersect); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + } // a helper function to get an element's attribute value + + + _createClass(Intersect, [{ + key: "getAttr", + value: function getAttr(e, attr) { + return parseFloat(e.target.getAttribute(attr)); + } // handle tooltip for heatmaps and treemaps + + }, { + key: "handleHeatTreeTooltip", + value: function handleHeatTreeTooltip(_ref) { + var e = _ref.e, + opt = _ref.opt, + x = _ref.x, + y = _ref.y, + type = _ref.type; + var ttCtx = this.ttCtx; + var w = this.w; + + if (e.target.classList.contains("apexcharts-".concat(type, "-rect"))) { + var i = this.getAttr(e, 'i'); + var j = this.getAttr(e, 'j'); + var cx = this.getAttr(e, 'cx'); + var cy = this.getAttr(e, 'cy'); + var width = this.getAttr(e, 'width'); + var height = this.getAttr(e, 'height'); + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + shared: false, + e: e + }); + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + x = cx + ttCtx.tooltipRect.ttWidth / 2 + width; + y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2; + ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2); + + if (x > w.globals.gridWidth / 2) { + x = cx - ttCtx.tooltipRect.ttWidth / 2 + width; + } + + if (ttCtx.w.config.tooltip.followCursor) { + var seriesBound = w.globals.dom.elWrap.getBoundingClientRect(); + x = w.globals.clientX - seriesBound.left - (x > w.globals.gridWidth / 2 ? ttCtx.tooltipRect.ttWidth : 0); + y = w.globals.clientY - seriesBound.top - (y > w.globals.gridHeight / 2 ? ttCtx.tooltipRect.ttHeight : 0); + } + } + + return { + x: x, + y: y + }; + } + /** + * handle tooltips for line/area/scatter charts where tooltip.intersect is true + * when user hovers over the marker directly, this function is executed + */ + + }, { + key: "handleMarkerTooltip", + value: function handleMarkerTooltip(_ref2) { + var e = _ref2.e, + opt = _ref2.opt, + x = _ref2.x, + y = _ref2.y; + var w = this.w; + var ttCtx = this.ttCtx; + var i; + var j; + + if (e.target.classList.contains('apexcharts-marker')) { + var cx = parseInt(opt.paths.getAttribute('cx'), 10); + var cy = parseInt(opt.paths.getAttribute('cy'), 10); + var val = parseFloat(opt.paths.getAttribute('val')); + j = parseInt(opt.paths.getAttribute('rel'), 10); + i = parseInt(opt.paths.parentNode.parentNode.parentNode.getAttribute('rel'), 10) - 1; + + if (ttCtx.intersect) { + var el = Utils$1.findAncestor(opt.paths, 'apexcharts-series'); + + if (el) { + i = parseInt(el.getAttribute('data:realIndex'), 10); + } + } + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e: e + }); + + if (e.type === 'mouseup') { + ttCtx.markerClick(e, i, j); + } + + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + x = cx; + y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4; + + if (ttCtx.w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top; + } + + if (val < 0) { + y = cy; + } + + ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y); + } + + return { + x: x, + y: y + }; + } + /** + * handle tooltips for bar/column charts + */ + + }, { + key: "handleBarTooltip", + value: function handleBarTooltip(_ref3) { + var e = _ref3.e, + opt = _ref3.opt; + var w = this.w; + var ttCtx = this.ttCtx; + var tooltipEl = ttCtx.getElTooltip(); + var bx = 0; + var x = 0; + var y = 0; + var i = 0; + var strokeWidth; + var barXY = this.getBarTooltipXY({ + e: e, + opt: opt + }); + i = barXY.i; + var barHeight = barXY.barHeight; + var j = barXY.j; + w.globals.capturedSeriesIndex = i; + w.globals.capturedDataPointIndex = j; + + if (w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars() || !w.config.tooltip.shared) { + x = barXY.x; + y = barXY.y; + strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[i] : w.config.stroke.width; + bx = x; + } else { + if (!w.globals.comboCharts && !w.config.tooltip.shared) { + // todo: re-check this condition as it's always 0 + bx = bx / 2; + } + } // y is NaN, make it touch the bottom of grid area + + + if (isNaN(y)) { + y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight; + } else if (y < 0) { + y = 0; + } + + var seriesIndex = parseInt(opt.paths.parentNode.getAttribute('data:realIndex'), 10); + var isReversed = w.globals.isMultipleYAxis ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed : w.config.yaxis[0].reversed; + + if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth && !isReversed) { + x = x - ttCtx.tooltipRect.ttWidth; + } else if (x < 0) { + x = 0; + } + + if (ttCtx.w.config.tooltip.followCursor) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + y = ttCtx.e.clientY - seriesBound.top; + } // if tooltip is still null, querySelector + + + if (ttCtx.tooltip === null) { + ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip'); + } + + if (!w.config.tooltip.shared) { + if (w.globals.comboBarCount > 0) { + ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2); + } else { + ttCtx.tooltipPosition.moveXCrosshairs(bx); + } + } // move tooltip here + + + if (!ttCtx.fixedTooltip && (!w.config.tooltip.shared || w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) { + if (isReversed) { + x = x - ttCtx.tooltipRect.ttWidth; + + if (x < 0) { + x = 0; + } + } + + if (isReversed && !(w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) { + y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2; + } + + if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) { + y = w.globals.gridHeight - ttCtx.tooltipRect.ttHeight + w.globals.translateY; + } else { + y = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2; + + if (y < 0) { + y = 0; + } + } + + tooltipEl.style.left = x + w.globals.translateX + 'px'; + tooltipEl.style.top = y + 'px'; + } + } + }, { + key: "getBarTooltipXY", + value: function getBarTooltipXY(_ref4) { + var e = _ref4.e, + opt = _ref4.opt; + var w = this.w; + var j = null; + var ttCtx = this.ttCtx; + var i = 0; + var x = 0; + var y = 0; + var barWidth = 0; + var barHeight = 0; + var cl = e.target.classList; + + if (cl.contains('apexcharts-bar-area') || cl.contains('apexcharts-candlestick-area') || cl.contains('apexcharts-boxPlot-area') || cl.contains('apexcharts-rangebar-area')) { + var bar = e.target; + var barRect = bar.getBoundingClientRect(); + var seriesBound = opt.elGrid.getBoundingClientRect(); + var bh = barRect.height; + barHeight = barRect.height; + var bw = barRect.width; + var cx = parseInt(bar.getAttribute('cx'), 10); + var cy = parseInt(bar.getAttribute('cy'), 10); + barWidth = parseFloat(bar.getAttribute('barWidth')); + var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + j = parseInt(bar.getAttribute('j'), 10); + i = parseInt(bar.parentNode.getAttribute('rel'), 10) - 1; + var y1 = bar.getAttribute('data-range-y1'); + var y2 = bar.getAttribute('data-range-y2'); + + if (w.globals.comboCharts) { + i = parseInt(bar.parentNode.getAttribute('data:realIndex'), 10); + } // if (w.config.tooltip.shared) { + // this check not needed at the moment + // const yDivisor = w.globals.gridHeight / (w.globals.series.length) + // const hoverY = ttCtx.clientY - ttCtx.seriesBound.top + // j = Math.ceil(hoverY / yDivisor) + // } + + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: i, + j: j, + y1: y1 ? parseInt(y1, 10) : null, + y2: y2 ? parseInt(y2, 10) : null, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e: e + }); + + if (w.config.tooltip.followCursor) { + if (w.globals.isBarHorizontal) { + x = clientX - seriesBound.left + 15; + y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2; + } else { + if (w.globals.isXNumeric) { + x = cx - bw / 2; + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2; + } + + y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15; + } + } else { + if (w.globals.isBarHorizontal) { + x = cx; + + if (x < ttCtx.xyRatios.baseLineInvertedY) { + x = cx - ttCtx.tooltipRect.ttWidth; + } + + y = cy - ttCtx.dataPointsDividedHeight + bh / 2 - ttCtx.tooltipRect.ttHeight / 2; + } else { + // if columns + if (w.globals.isXNumeric) { + x = cx - bw / 2; + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2; + } + + y = cy; // - ttCtx.tooltipRect.ttHeight / 2 + 10 + } + } + } + + return { + x: x, + y: y, + barHeight: barHeight, + barWidth: barWidth, + i: i, + j: j + }; + } + }]); + + return Intersect; + }(); + + /** + * ApexCharts Tooltip.AxesTooltip Class. + * This file deals with the x-axis and y-axis tooltips. + * + * @module Tooltip.AxesTooltip + **/ + var AxesTooltip = /*#__PURE__*/function () { + function AxesTooltip(tooltipContext) { + _classCallCheck(this, AxesTooltip); + + this.w = tooltipContext.w; + this.ttCtx = tooltipContext; + } + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + + + _createClass(AxesTooltip, [{ + key: "drawXaxisTooltip", + value: function drawXaxisTooltip() { + var w = this.w; + var ttCtx = this.ttCtx; + var isBottom = w.config.xaxis.position === 'bottom'; + ttCtx.xaxisOffY = isBottom ? w.globals.gridHeight + 1 : -w.globals.xAxisHeight - w.config.xaxis.axisTicks.height + 3; + var tooltipCssClass = isBottom ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top'; + var renderTo = w.globals.dom.elWrap; + + if (ttCtx.isXAxisTooltipEnabled) { + var xaxisTooltip = w.globals.dom.baseEl.querySelector('.apexcharts-xaxistooltip'); + + if (xaxisTooltip === null) { + ttCtx.xaxisTooltip = document.createElement('div'); + ttCtx.xaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme); + renderTo.appendChild(ttCtx.xaxisTooltip); + ttCtx.xaxisTooltipText = document.createElement('div'); + ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text'); + ttCtx.xaxisTooltipText.style.fontFamily = w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily; + ttCtx.xaxisTooltipText.style.fontSize = w.config.xaxis.tooltip.style.fontSize; + ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText); + } + } + } + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + + }, { + key: "drawYaxisTooltip", + value: function drawYaxisTooltip() { + var w = this.w; + var ttCtx = this.ttCtx; + + var _loop = function _loop(i) { + var isRight = w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite; + ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1; + var tooltipCssClass = isRight ? "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-right") : "apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i, " apexcharts-yaxistooltip-left"); + w.globals.yAxisSameScaleIndices.map(function (samescales, ssi) { + samescales.map(function (s, si) { + if (si === i) { + tooltipCssClass += w.config.yaxis[si].show ? " " : " apexcharts-yaxistooltip-hidden"; + } + }); + }); + var renderTo = w.globals.dom.elWrap; + var yaxisTooltip = w.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i)); + + if (yaxisTooltip === null) { + ttCtx.yaxisTooltip = document.createElement('div'); + ttCtx.yaxisTooltip.setAttribute('class', tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme); + renderTo.appendChild(ttCtx.yaxisTooltip); + if (i === 0) ttCtx.yaxisTooltipText = []; + ttCtx.yaxisTooltipText[i] = document.createElement('div'); + ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text'); + ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]); + } + }; + + for (var i = 0; i < w.config.yaxis.length; i++) { + _loop(i); + } + } + /** + * @memberof Tooltip + **/ + + }, { + key: "setXCrosshairWidth", + value: function setXCrosshairWidth() { + var w = this.w; + var ttCtx = this.ttCtx; // set xcrosshairs width + + var xcrosshairs = ttCtx.getElXCrosshairs(); + ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width, 10); + + if (!w.globals.comboCharts) { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + var count = w.globals.labels.length; + ttCtx.xcrosshairsWidth = w.globals.gridWidth / count; + } else if (w.config.xaxis.crosshairs.width === 'barWidth') { + var bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area'); + + if (bar !== null) { + var barWidth = parseFloat(bar.getAttribute('barWidth')); + ttCtx.xcrosshairsWidth = barWidth; + } else { + ttCtx.xcrosshairsWidth = 1; + } + } + } else { + var _bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area'); + + if (_bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') { + var _barWidth = parseFloat(_bar.getAttribute('barWidth')); + + ttCtx.xcrosshairsWidth = _barWidth; + } else { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + var _count = w.globals.labels.length; + ttCtx.xcrosshairsWidth = w.globals.gridWidth / _count; + } + } + } + + if (w.globals.isBarHorizontal) { + ttCtx.xcrosshairsWidth = 0; + } + + if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) { + xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth); + } + } + }, { + key: "handleYCrosshair", + value: function handleYCrosshair() { + var w = this.w; + var ttCtx = this.ttCtx; // set ycrosshairs height + + ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs'); + ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector('.apexcharts-ycrosshairs-hidden'); + } + }, { + key: "drawYaxisTooltipText", + value: function drawYaxisTooltipText(index, clientY, xyRatios) { + var ttCtx = this.ttCtx; + var w = this.w; + var lbFormatter = w.globals.yLabelFormatters[index]; + + if (ttCtx.yaxisTooltips[index]) { + var elGrid = ttCtx.getElGrid(); + var seriesBound = elGrid.getBoundingClientRect(); + var hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index]; + var height = w.globals.maxYArr[index] - w.globals.minYArr[index]; + var val = w.globals.minYArr[index] + (height - hoverY); + ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top); + ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val); + ttCtx.tooltipPosition.moveYAxisTooltip(index); + } + } + }]); + + return AxesTooltip; + }(); + + /** + * ApexCharts Core Tooltip Class to handle the tooltip generation. + * + * @module Tooltip + **/ + + var Tooltip = /*#__PURE__*/function () { + function Tooltip(ctx) { + _classCallCheck(this, Tooltip); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.tConfig = w.config.tooltip; + this.tooltipUtil = new Utils(this); + this.tooltipLabels = new Labels(this); + this.tooltipPosition = new Position(this); + this.marker = new Marker(this); + this.intersect = new Intersect(this); + this.axesTooltip = new AxesTooltip(this); + this.showOnIntersect = this.tConfig.intersect; + this.showTooltipTitle = this.tConfig.x.show; + this.fixedTooltip = this.tConfig.fixed.enabled; + this.xaxisTooltip = null; + this.yaxisTTEls = null; + this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared; + this.lastHoverTime = Date.now(); + } + + _createClass(Tooltip, [{ + key: "getElTooltip", + value: function getElTooltip(ctx) { + if (!ctx) ctx = this; + if (!ctx.w.globals.dom.baseEl) return null; + return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip'); + } + }, { + key: "getElXCrosshairs", + value: function getElXCrosshairs() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs'); + } + }, { + key: "getElGrid", + value: function getElGrid() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid'); + } + }, { + key: "drawTooltip", + value: function drawTooltip(xyRatios) { + var w = this.w; + this.xyRatios = xyRatios; + this.isXAxisTooltipEnabled = w.config.xaxis.tooltip.enabled && w.globals.axisCharts; + this.yaxisTooltips = w.config.yaxis.map(function (y, i) { + return y.show && y.tooltip.enabled && w.globals.axisCharts ? true : false; + }); + this.allTooltipSeriesGroups = []; + + if (!w.globals.axisCharts) { + this.showTooltipTitle = false; + } + + var tooltipEl = document.createElement('div'); + tooltipEl.classList.add('apexcharts-tooltip'); + + if (w.config.tooltip.cssClass) { + tooltipEl.classList.add(w.config.tooltip.cssClass); + } + + tooltipEl.classList.add("apexcharts-theme-".concat(this.tConfig.theme)); + w.globals.dom.elWrap.appendChild(tooltipEl); + + if (w.globals.axisCharts) { + this.axesTooltip.drawXaxisTooltip(); + this.axesTooltip.drawYaxisTooltip(); + this.axesTooltip.setXCrosshairWidth(); + this.axesTooltip.handleYCrosshair(); + var xAxis = new XAxis(this.ctx); + this.xAxisTicksPositions = xAxis.getXAxisTicksPositions(); + } // we forcefully set intersect true for these conditions + + + if ((w.globals.comboCharts || this.tConfig.intersect || w.config.chart.type === 'rangeBar') && !this.tConfig.shared) { + this.showOnIntersect = true; + } + + if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) { + // when user don't want to show points all the time, but only on when hovering on series + this.marker.drawDynamicPoints(this); + } // no visible series, exit + + + if (w.globals.collapsedSeries.length === w.globals.series.length) return; + this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints; + this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints; + + if (this.showTooltipTitle) { + this.tooltipTitle = document.createElement('div'); + this.tooltipTitle.classList.add('apexcharts-tooltip-title'); + this.tooltipTitle.style.fontFamily = this.tConfig.style.fontFamily || w.config.chart.fontFamily; + this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize; + tooltipEl.appendChild(this.tooltipTitle); + } + + var ttItemsCnt = w.globals.series.length; // whether shared or not, default is shared + + if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) { + if (!this.showOnIntersect) { + ttItemsCnt = w.globals.series.length; + } else { + ttItemsCnt = 1; + } + } + + this.legendLabels = w.globals.dom.baseEl.querySelectorAll('.apexcharts-legend-text'); + this.ttItems = this.createTTElements(ttItemsCnt); + this.addSVGEvents(); + } + }, { + key: "createTTElements", + value: function createTTElements(ttItemsCnt) { + var _this = this; + + var w = this.w; + var ttItems = []; + var tooltipEl = this.getElTooltip(); + + var _loop = function _loop(i) { + var gTxt = document.createElement('div'); + gTxt.classList.add('apexcharts-tooltip-series-group'); + gTxt.style.order = w.config.tooltip.inverseOrder ? ttItemsCnt - i : i + 1; + + if (_this.tConfig.shared && _this.tConfig.enabledOnSeries && Array.isArray(_this.tConfig.enabledOnSeries)) { + if (_this.tConfig.enabledOnSeries.indexOf(i) < 0) { + gTxt.classList.add('apexcharts-tooltip-series-group-hidden'); + } + } + + var point = document.createElement('span'); + point.classList.add('apexcharts-tooltip-marker'); + point.style.backgroundColor = w.globals.colors[i]; + gTxt.appendChild(point); + var gYZ = document.createElement('div'); + gYZ.classList.add('apexcharts-tooltip-text'); + gYZ.style.fontFamily = _this.tConfig.style.fontFamily || w.config.chart.fontFamily; + gYZ.style.fontSize = _this.tConfig.style.fontSize; + ['y', 'goals', 'z'].forEach(function (g) { + var gValText = document.createElement('div'); + gValText.classList.add("apexcharts-tooltip-".concat(g, "-group")); + var txtLabel = document.createElement('span'); + txtLabel.classList.add("apexcharts-tooltip-text-".concat(g, "-label")); + gValText.appendChild(txtLabel); + var txtValue = document.createElement('span'); + txtValue.classList.add("apexcharts-tooltip-text-".concat(g, "-value")); + gValText.appendChild(txtValue); + gYZ.appendChild(gValText); + }); + gTxt.appendChild(gYZ); + tooltipEl.appendChild(gTxt); + ttItems.push(gTxt); + }; + + for (var i = 0; i < ttItemsCnt; i++) { + _loop(i); + } + + return ttItems; + } + }, { + key: "addSVGEvents", + value: function addSVGEvents() { + var w = this.w; + var type = w.config.chart.type; + var tooltipEl = this.getElTooltip(); + var commonBar = !!(type === 'bar' || type === 'candlestick' || type === 'boxPlot' || type === 'rangeBar'); + var chartWithmarkers = type === 'area' || type === 'line' || type === 'scatter' || type === 'bubble' || type === 'radar'; + var hoverArea = w.globals.dom.Paper.node; + var elGrid = this.getElGrid(); + + if (elGrid) { + this.seriesBound = elGrid.getBoundingClientRect(); + } + + var tooltipY = []; + var tooltipX = []; + var seriesHoverParams = { + hoverArea: hoverArea, + elGrid: elGrid, + tooltipEl: tooltipEl, + tooltipY: tooltipY, + tooltipX: tooltipX, + ttItems: this.ttItems + }; + var points; + + if (w.globals.axisCharts) { + if (chartWithmarkers) { + points = w.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker"); + } else if (commonBar) { + points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area'); + } else if (type === 'heatmap' || type === 'treemap') { + points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap'); + } + + if (points && points.length) { + for (var p = 0; p < points.length; p++) { + tooltipY.push(points[p].getAttribute('cy')); + tooltipX.push(points[p].getAttribute('cx')); + } + } + } + + var validSharedChartTypes = w.globals.xyCharts && !this.showOnIntersect || w.globals.comboCharts && !this.showOnIntersect || commonBar && this.tooltipUtil.hasBars() && this.tConfig.shared; + + if (validSharedChartTypes) { + this.addPathsEventListeners([hoverArea], seriesHoverParams); + } else if (commonBar && !w.globals.comboCharts || chartWithmarkers && this.showOnIntersect) { + this.addDatapointEventsListeners(seriesHoverParams); + } else if (!w.globals.axisCharts || type === 'heatmap' || type === 'treemap') { + var seriesAll = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series'); + this.addPathsEventListeners(seriesAll, seriesHoverParams); + } + + if (this.showOnIntersect) { + var lineAreaPoints = w.globals.dom.baseEl.querySelectorAll('.apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker'); + + if (lineAreaPoints.length > 0) { + // if we find any lineSeries, addEventListeners for them + this.addPathsEventListeners(lineAreaPoints, seriesHoverParams); + } // combo charts may have bars, so add event listeners here too + + + if (this.tooltipUtil.hasBars() && !this.tConfig.shared) { + this.addDatapointEventsListeners(seriesHoverParams); + } + } + } + }, { + key: "drawFixedTooltipRect", + value: function drawFixedTooltipRect() { + var w = this.w; + var tooltipEl = this.getElTooltip(); + var tooltipRect = tooltipEl.getBoundingClientRect(); + var ttWidth = tooltipRect.width + 10; + var ttHeight = tooltipRect.height + 10; + var x = this.tConfig.fixed.offsetX; + var y = this.tConfig.fixed.offsetY; + var fixed = this.tConfig.fixed.position.toLowerCase(); + + if (fixed.indexOf('right') > -1) { + x = x + w.globals.svgWidth - ttWidth + 10; + } + + if (fixed.indexOf('bottom') > -1) { + y = y + w.globals.svgHeight - ttHeight - 10; + } + + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + return { + x: x, + y: y, + ttWidth: ttWidth, + ttHeight: ttHeight + }; + } + }, { + key: "addDatapointEventsListeners", + value: function addDatapointEventsListeners(seriesHoverParams) { + var w = this.w; + var points = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area'); + this.addPathsEventListeners(points, seriesHoverParams); + } + }, { + key: "addPathsEventListeners", + value: function addPathsEventListeners(paths, opts) { + var self = this; + + var _loop2 = function _loop2(p) { + var extendedOpts = { + paths: paths[p], + tooltipEl: opts.tooltipEl, + tooltipY: opts.tooltipY, + tooltipX: opts.tooltipX, + elGrid: opts.elGrid, + hoverArea: opts.hoverArea, + ttItems: opts.ttItems + }; + var events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend']; + events.map(function (ev) { + return paths[p].addEventListener(ev, self.onSeriesHover.bind(self, extendedOpts), { + capture: false, + passive: true + }); + }); + }; + + for (var p = 0; p < paths.length; p++) { + _loop2(p); + } + } + /* + ** Check to see if the tooltips should be updated based on a mouse / touch event + */ + + }, { + key: "onSeriesHover", + value: function onSeriesHover(opt, e) { + var _this2 = this; + + // If a user is moving their mouse quickly, don't bother updating the tooltip every single frame + var targetDelay = 100; + var timeSinceLastUpdate = Date.now() - this.lastHoverTime; + + if (timeSinceLastUpdate >= targetDelay) { + // The tooltip was last updated over 100ms ago - redraw it even if the user is still moving their + // mouse so they get some feedback that their moves are being registered + this.seriesHover(opt, e); + } else { + // The tooltip was last updated less than 100ms ago + // Cancel any other delayed draw, so we don't show stale data + clearTimeout(this.seriesHoverTimeout); // Schedule the next draw so that it happens about 100ms after the last update + + this.seriesHoverTimeout = setTimeout(function () { + _this2.seriesHover(opt, e); + }, targetDelay - timeSinceLastUpdate); + } + } + /* + ** The actual series hover function + */ + + }, { + key: "seriesHover", + value: function seriesHover(opt, e) { + var _this3 = this; + + this.lastHoverTime = Date.now(); + var chartGroups = []; + var w = this.w; // if user has more than one charts in group, we need to sync + + if (w.config.chart.group) { + chartGroups = this.ctx.getGroupedCharts(); + } + + if (w.globals.axisCharts && (w.globals.minX === -Infinity && w.globals.maxX === Infinity || w.globals.dataPoints === 0)) { + return; + } + + if (chartGroups.length) { + chartGroups.forEach(function (ch) { + var tooltipEl = _this3.getElTooltip(ch); + + var newOpts = { + paths: opt.paths, + tooltipEl: tooltipEl, + tooltipY: opt.tooltipY, + tooltipX: opt.tooltipX, + elGrid: opt.elGrid, + hoverArea: opt.hoverArea, + ttItems: ch.w.globals.tooltip.ttItems + }; // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly + + if (ch.w.globals.minX === _this3.w.globals.minX && ch.w.globals.maxX === _this3.w.globals.maxX) { + ch.w.globals.tooltip.seriesHoverByContext({ + chartCtx: ch, + ttCtx: ch.w.globals.tooltip, + opt: newOpts, + e: e + }); + } + }); + } else { + this.seriesHoverByContext({ + chartCtx: this.ctx, + ttCtx: this.w.globals.tooltip, + opt: opt, + e: e + }); + } + } + }, { + key: "seriesHoverByContext", + value: function seriesHoverByContext(_ref) { + var chartCtx = _ref.chartCtx, + ttCtx = _ref.ttCtx, + opt = _ref.opt, + e = _ref.e; + var w = chartCtx.w; + var tooltipEl = this.getElTooltip(); + if (!tooltipEl) return; // tooltipRect is calculated on every mousemove, because the text is dynamic + + ttCtx.tooltipRect = { + x: 0, + y: 0, + ttWidth: tooltipEl.getBoundingClientRect().width, + ttHeight: tooltipEl.getBoundingClientRect().height + }; + ttCtx.e = e; // highlight the current hovered bars + + if (ttCtx.tooltipUtil.hasBars() && !w.globals.comboCharts && !ttCtx.isBarShared) { + if (this.tConfig.onDatasetHover.highlightDataSeries) { + var series = new Series(chartCtx); + series.toggleSeriesOnHover(e, e.target.parentNode); + } + } + + if (ttCtx.fixedTooltip) { + ttCtx.drawFixedTooltipRect(); + } + + if (w.globals.axisCharts) { + ttCtx.axisChartsTooltips({ + e: e, + opt: opt, + tooltipRect: ttCtx.tooltipRect + }); + } else { + // non-plot charts i.e pie/donut/circle + ttCtx.nonAxisChartsTooltips({ + e: e, + opt: opt, + tooltipRect: ttCtx.tooltipRect + }); + } + } // tooltip handling for line/area/bar/columns/scatter + + }, { + key: "axisChartsTooltips", + value: function axisChartsTooltips(_ref2) { + var e = _ref2.e, + opt = _ref2.opt; + var w = this.w; + var x, y; + var seriesBound = opt.elGrid.getBoundingClientRect(); + var clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX; + var clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY; + this.clientY = clientY; + this.clientX = clientX; + w.globals.capturedSeriesIndex = -1; + w.globals.capturedDataPointIndex = -1; + + if (clientY < seriesBound.top || clientY > seriesBound.top + seriesBound.height) { + this.handleMouseOut(opt); + return; + } + + if (Array.isArray(this.tConfig.enabledOnSeries) && !w.config.tooltip.shared) { + var index = parseInt(opt.paths.getAttribute('index'), 10); + + if (this.tConfig.enabledOnSeries.indexOf(index) < 0) { + this.handleMouseOut(opt); + return; + } + } + + var tooltipEl = this.getElTooltip(); + var xcrosshairs = this.getElXCrosshairs(); + var isStickyTooltip = w.globals.xyCharts || w.config.chart.type === 'bar' && !w.globals.isBarHorizontal && this.tooltipUtil.hasBars() && this.tConfig.shared || w.globals.comboCharts && this.tooltipUtil.hasBars(); + + if (e.type === 'mousemove' || e.type === 'touchmove' || e.type === 'mouseup') { + // there is no series to hover over + if (w.globals.collapsedSeries.length + w.globals.ancillaryCollapsedSeries.length === w.globals.series.length) { + return; + } + + if (xcrosshairs !== null) { + xcrosshairs.classList.add('apexcharts-active'); + } + + var hasYAxisTooltip = this.yaxisTooltips.filter(function (b) { + return b === true; + }); + + if (this.ycrosshairs !== null && hasYAxisTooltip.length) { + this.ycrosshairs.classList.add('apexcharts-active'); + } + + if (isStickyTooltip && !this.showOnIntersect) { + this.handleStickyTooltip(e, clientX, clientY, opt); + } else { + if (w.config.chart.type === 'heatmap' || w.config.chart.type === 'treemap') { + var markerXY = this.intersect.handleHeatTreeTooltip({ + e: e, + opt: opt, + x: x, + y: y, + type: w.config.chart.type + }); + x = markerXY.x; + y = markerXY.y; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + } else { + if (this.tooltipUtil.hasBars()) { + this.intersect.handleBarTooltip({ + e: e, + opt: opt + }); + } + + if (this.tooltipUtil.hasMarkers()) { + // intersect - line/area/scatter/bubble + this.intersect.handleMarkerTooltip({ + e: e, + opt: opt, + x: x, + y: y + }); + } + } + } + + if (this.yaxisTooltips.length) { + for (var yt = 0; yt < w.config.yaxis.length; yt++) { + this.axesTooltip.drawYaxisTooltipText(yt, clientY, this.xyRatios); + } + } + + opt.tooltipEl.classList.add('apexcharts-active'); + } else if (e.type === 'mouseout' || e.type === 'touchend') { + this.handleMouseOut(opt); + } + } // tooltip handling for pie/donuts + + }, { + key: "nonAxisChartsTooltips", + value: function nonAxisChartsTooltips(_ref3) { + var e = _ref3.e, + opt = _ref3.opt, + tooltipRect = _ref3.tooltipRect; + var w = this.w; + var rel = opt.paths.getAttribute('rel'); + var tooltipEl = this.getElTooltip(); + var seriesBound = w.globals.dom.elWrap.getBoundingClientRect(); + + if (e.type === 'mousemove' || e.type === 'touchmove') { + tooltipEl.classList.add('apexcharts-active'); + this.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: parseInt(rel, 10) - 1, + shared: false + }); + var x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2; + var y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10; + tooltipEl.style.left = x + 'px'; + tooltipEl.style.top = y + 'px'; + + if (w.config.legend.tooltipHoverFormatter) { + var legendFormatter = w.config.legend.tooltipHoverFormatter; + var i = rel - 1; + var legendName = this.legendLabels[i].getAttribute('data:default-text'); + var text = legendFormatter(legendName, { + seriesIndex: i, + dataPointIndex: i, + w: w + }); + this.legendLabels[i].innerHTML = text; + } + } else if (e.type === 'mouseout' || e.type === 'touchend') { + tooltipEl.classList.remove('apexcharts-active'); + + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach(function (l) { + var defaultText = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(defaultText); + }); + } + } + } + }, { + key: "handleStickyTooltip", + value: function handleStickyTooltip(e, clientX, clientY, opt) { + var w = this.w; + var capj = this.tooltipUtil.getNearestValues({ + context: this, + hoverArea: opt.hoverArea, + elGrid: opt.elGrid, + clientX: clientX, + clientY: clientY + }); + var j = capj.j; + var capturedSeries = capj.capturedSeries; + var bounds = opt.elGrid.getBoundingClientRect(); + + if (capj.hoverX < 0 || capj.hoverX > bounds.width) { + this.handleMouseOut(opt); + return; + } + + if (capturedSeries !== null) { + this.handleStickyCapturedSeries(e, capturedSeries, opt, j); + } else { + // couldn't capture any series. check if shared X is same, + // if yes, draw a grouped tooltip + if (this.tooltipUtil.isXoverlap(j) || w.globals.isBarHorizontal) { + this.create(e, this, 0, j, opt.ttItems); + } + } + } + }, { + key: "handleStickyCapturedSeries", + value: function handleStickyCapturedSeries(e, capturedSeries, opt, j) { + var w = this.w; + + if (!this.tConfig.shared) { + var ignoreNull = w.globals.series[capturedSeries][j] === null; + + if (ignoreNull) { + this.handleMouseOut(opt); + return; + } + } + + if (typeof w.globals.series[capturedSeries][j] !== 'undefined') { + if (this.tConfig.shared && this.tooltipUtil.isXoverlap(j) && this.tooltipUtil.isInitialSeriesSameLen()) { + this.create(e, this, capturedSeries, j, opt.ttItems); + } else { + this.create(e, this, capturedSeries, j, opt.ttItems, false); + } + } else { + if (this.tooltipUtil.isXoverlap(j)) { + this.create(e, this, 0, j, opt.ttItems); + } + } + } + }, { + key: "deactivateHoverFilter", + value: function deactivateHoverFilter() { + var w = this.w; + var graphics = new Graphics(this.ctx); + var allPaths = w.globals.dom.Paper.select(".apexcharts-bar-area"); + + for (var b = 0; b < allPaths.length; b++) { + graphics.pathMouseLeave(allPaths[b]); + } + } + }, { + key: "handleMouseOut", + value: function handleMouseOut(opt) { + var w = this.w; + var xcrosshairs = this.getElXCrosshairs(); + opt.tooltipEl.classList.remove('apexcharts-active'); + this.deactivateHoverFilter(); + + if (w.config.chart.type !== 'bubble') { + this.marker.resetPointsSize(); + } + + if (xcrosshairs !== null) { + xcrosshairs.classList.remove('apexcharts-active'); + } + + if (this.ycrosshairs !== null) { + this.ycrosshairs.classList.remove('apexcharts-active'); + } + + if (this.isXAxisTooltipEnabled) { + this.xaxisTooltip.classList.remove('apexcharts-active'); + } + + if (this.yaxisTooltips.length) { + if (this.yaxisTTEls === null) { + this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll('.apexcharts-yaxistooltip'); + } + + for (var i = 0; i < this.yaxisTTEls.length; i++) { + this.yaxisTTEls[i].classList.remove('apexcharts-active'); + } + } + + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach(function (l) { + var defaultText = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(defaultText); + }); + } + } + }, { + key: "markerClick", + value: function markerClick(e, seriesIndex, dataPointIndex) { + var w = this.w; + + if (typeof w.config.chart.events.markerClick === 'function') { + w.config.chart.events.markerClick(e, this.ctx, { + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + w: w + }); + } + + this.ctx.events.fireEvent('markerClick', [e, this.ctx, { + seriesIndex: seriesIndex, + dataPointIndex: dataPointIndex, + w: w + }]); + } + }, { + key: "create", + value: function create(e, context, capturedSeries, j, ttItems) { + var shared = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : null; + var w = this.w; + var ttCtx = context; + + if (e.type === 'mouseup') { + this.markerClick(e, capturedSeries, j); + } + + if (shared === null) shared = this.tConfig.shared; + var hasMarkers = this.tooltipUtil.hasMarkers(); + var bars = this.tooltipUtil.getElBars(); + + if (w.config.legend.tooltipHoverFormatter) { + var legendFormatter = w.config.legend.tooltipHoverFormatter; + var els = Array.from(this.legendLabels); // reset all legend values first + + els.forEach(function (l) { + var legendName = l.getAttribute('data:default-text'); + l.innerHTML = decodeURIComponent(legendName); + }); // for irregular time series + + for (var i = 0; i < els.length; i++) { + var l = els[i]; + var lsIndex = parseInt(l.getAttribute('i'), 10); + var legendName = decodeURIComponent(l.getAttribute('data:default-text')); + var text = legendFormatter(legendName, { + seriesIndex: shared ? lsIndex : capturedSeries, + dataPointIndex: j, + w: w + }); + + if (!shared) { + l.innerHTML = lsIndex === capturedSeries ? text : legendName; + + if (capturedSeries === lsIndex) { + break; + } + } else { + l.innerHTML = w.globals.collapsedSeriesIndices.indexOf(lsIndex) < 0 ? text : legendName; + } + } + } + + if (shared) { + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: ttItems, + i: capturedSeries, + j: j, + shared: this.showOnIntersect ? false : this.tConfig.shared + }); + + if (hasMarkers) { + if (w.globals.markers.largestSize > 0) { + ttCtx.marker.enlargePoints(j); + } else { + ttCtx.tooltipPosition.moveDynamicPointsOnHover(j); + } + } + + if (this.tooltipUtil.hasBars()) { + this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars); + + if (this.barSeriesHeight > 0) { + // hover state, activate snap filter + var graphics = new Graphics(this.ctx); + var paths = w.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(j, "']")); // de-activate first + + this.deactivateHoverFilter(); + this.tooltipPosition.moveStickyTooltipOverBars(j); + + for (var b = 0; b < paths.length; b++) { + graphics.pathMouseEnter(paths[b]); + } + } + } + } else { + ttCtx.tooltipLabels.drawSeriesTexts({ + shared: false, + ttItems: ttItems, + i: capturedSeries, + j: j + }); + + if (this.tooltipUtil.hasBars()) { + ttCtx.tooltipPosition.moveStickyTooltipOverBars(j); + } + + if (hasMarkers) { + ttCtx.tooltipPosition.moveMarkers(capturedSeries, j); + } + } + } + }]); + + return Tooltip; + }(); + + var BarDataLabels = /*#__PURE__*/function () { + function BarDataLabels(barCtx) { + _classCallCheck(this, BarDataLabels); + + this.w = barCtx.w; + this.barCtx = barCtx; + this.totalFormatter = this.w.config.plotOptions.bar.dataLabels.total.formatter; + + if (!this.totalFormatter) { + this.totalFormatter = this.w.config.dataLabels.formatter; + } + } + /** handleBarDataLabels is used to calculate the positions for the data-labels + * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels() + * After calculating, it also calls the function to draw data labels + * @memberof Bar + * @param {object} {barProps} most of the bar properties used throughout the bar + * drawing function + * @return {object} dataLabels node-element which you can append later + **/ + + + _createClass(BarDataLabels, [{ + key: "handleBarDataLabels", + value: function handleBarDataLabels(opts) { + var x = opts.x, + y = opts.y, + y1 = opts.y1, + y2 = opts.y2, + i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + series = opts.series, + barHeight = opts.barHeight, + barWidth = opts.barWidth, + barYPosition = opts.barYPosition, + visibleSeries = opts.visibleSeries, + renderedPath = opts.renderedPath; + var w = this.w; + var graphics = new Graphics(this.barCtx.ctx); + var strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth; + var bcx = x + parseFloat(barWidth * visibleSeries); + var bcy = y + parseFloat(barHeight * visibleSeries); + + if (w.globals.isXNumeric && !w.globals.isBarHorizontal) { + bcx = x + parseFloat(barWidth * (visibleSeries + 1)); + bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth; + } + + var dataLabels = null; + var totalDataLabels = null; + var dataLabelsX = x; + var dataLabelsY = y; + var dataLabelsPos = {}; + var dataLabelsConfig = w.config.dataLabels; + var barDataLabelsConfig = this.barCtx.barOptions.dataLabels; + var barTotalDataLabelsConfig = this.barCtx.barOptions.dataLabels.total; + + if (typeof barYPosition !== 'undefined' && this.barCtx.isRangeBar) { + bcy = barYPosition; + dataLabelsY = barYPosition; + } + + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + var textRects = { + width: 0, + height: 0 + }; + + if (w.config.dataLabels.enabled) { + var yLabel = this.barCtx.series[i][j]; + textRects = graphics.getTextRects(w.globals.yLabelFormatters[0](yLabel), parseFloat(dataLabelsConfig.style.fontSize)); + } + + var params = { + x: x, + y: y, + i: i, + j: j, + realIndex: realIndex, + renderedPath: renderedPath, + bcx: bcx, + bcy: bcy, + barHeight: barHeight, + barWidth: barWidth, + textRects: textRects, + strokeWidth: strokeWidth, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + dataLabelsConfig: dataLabelsConfig, + barDataLabelsConfig: barDataLabelsConfig, + barTotalDataLabelsConfig: barTotalDataLabelsConfig, + offX: offX, + offY: offY + }; + + if (this.barCtx.isHorizontal) { + dataLabelsPos = this.calculateBarsDataLabelsPosition(params); + } else { + dataLabelsPos = this.calculateColumnsDataLabelsPosition(params); + } + + renderedPath.attr({ + cy: dataLabelsPos.bcy, + cx: dataLabelsPos.bcx, + j: j, + val: series[i][j], + barHeight: barHeight, + barWidth: barWidth + }); + dataLabels = this.drawCalculatedDataLabels({ + x: dataLabelsPos.dataLabelsX, + y: dataLabelsPos.dataLabelsY, + val: this.barCtx.isRangeBar ? [y1, y2] : series[i][j], + i: realIndex, + j: j, + barWidth: barWidth, + barHeight: barHeight, + textRects: textRects, + dataLabelsConfig: dataLabelsConfig + }); + + if (w.config.chart.stacked && barTotalDataLabelsConfig.enabled) { + totalDataLabels = this.drawTotalDataLabels({ + x: dataLabelsPos.totalDataLabelsX, + y: dataLabelsPos.totalDataLabelsY, + realIndex: realIndex, + textAnchor: dataLabelsPos.totalDataLabelsAnchor, + val: this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), + dataLabelsConfig: dataLabelsConfig, + barTotalDataLabelsConfig: barTotalDataLabelsConfig + }); + } + + return { + dataLabels: dataLabels, + totalDataLabels: totalDataLabels + }; + } + }, { + key: "getStackedTotalDataLabel", + value: function getStackedTotalDataLabel(_ref) { + var realIndex = _ref.realIndex, + j = _ref.j; + var w = this.w; + var val = this.barCtx.stackedSeriesTotals[j]; + + if (this.totalFormatter) { + val = this.totalFormatter(val, _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: realIndex, + dataPointIndex: j, + w: w + })); + } + + return val; + } + }, { + key: "calculateColumnsDataLabelsPosition", + value: function calculateColumnsDataLabelsPosition(opts) { + var w = this.w; + var i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + y = opts.y, + bcx = opts.bcx, + barWidth = opts.barWidth, + barHeight = opts.barHeight, + textRects = opts.textRects, + dataLabelsY = opts.dataLabelsY, + dataLabelsConfig = opts.dataLabelsConfig, + barDataLabelsConfig = opts.barDataLabelsConfig, + barTotalDataLabelsConfig = opts.barTotalDataLabelsConfig, + strokeWidth = opts.strokeWidth, + offX = opts.offX, + offY = opts.offY; + var dataLabelsX; + var totalDataLabelsY; + var totalDataLabelsX; + var totalDataLabelsAnchor = 'middle'; + barHeight = Math.abs(barHeight); + var vertical = w.config.plotOptions.bar.dataLabels.orientation === 'vertical'; + bcx = bcx - strokeWidth / 2; + var dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints; + + if (w.globals.isXNumeric) { + dataLabelsX = bcx - barWidth / 2 + offX; + } else { + dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX; + } + + if (vertical) { + var offsetDLX = 2; + dataLabelsX = dataLabelsX + textRects.height / 2 - strokeWidth / 2 - offsetDLX; + } + + var valIsNegative = this.barCtx.series[i][j] < 0; + var newY = y; + + if (this.barCtx.isReversed) { + newY = y - barHeight + (valIsNegative ? barHeight * 2 : 0); + y = y - barHeight; + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight / 2 + offY; + } else { + dataLabelsY = newY + barHeight / 2 - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - barHeight / 2 + textRects.height / 2 + offY; + } else { + dataLabelsY = newY + barHeight / 2 + textRects.height / 2 - offY; + } + } + + break; + + case 'bottom': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight + offY; + } else { + dataLabelsY = newY + barHeight - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - barHeight + textRects.height + strokeWidth + offY; + } else { + dataLabelsY = newY + barHeight - textRects.height / 2 + strokeWidth - offY; + } + } + + break; + + case 'top': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + offY; + } else { + dataLabelsY = newY - offY; + } + } else { + if (valIsNegative) { + dataLabelsY = newY - textRects.height / 2 - offY; + } else { + dataLabelsY = newY + textRects.height + offY; + } + } + + break; + } + + if (this.barCtx.lastActiveBarSerieIndex === realIndex && barTotalDataLabelsConfig.enabled) { + var ADDITIONAL_OFFX = 18; + var graphics = new Graphics(this.barCtx.ctx); + var totalLabeltextRects = graphics.getTextRects(this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), dataLabelsConfig.fontSize); + + if (valIsNegative) { + totalDataLabelsY = newY - totalLabeltextRects.height / 2 - offY - barTotalDataLabelsConfig.offsetY + ADDITIONAL_OFFX; + } else { + totalDataLabelsY = newY + totalLabeltextRects.height + offY + barTotalDataLabelsConfig.offsetY - ADDITIONAL_OFFX; + } + + totalDataLabelsX = dataLabelsX + barTotalDataLabelsConfig.offsetX; + } + + if (!w.config.chart.stacked) { + if (dataLabelsY < 0) { + dataLabelsY = 0 + strokeWidth; + } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) { + dataLabelsY = w.globals.gridHeight - strokeWidth; + } + } + + return { + bcx: bcx, + bcy: y, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + totalDataLabelsX: totalDataLabelsX, + totalDataLabelsY: totalDataLabelsY, + totalDataLabelsAnchor: totalDataLabelsAnchor + }; + } + }, { + key: "calculateBarsDataLabelsPosition", + value: function calculateBarsDataLabelsPosition(opts) { + var w = this.w; + var x = opts.x, + i = opts.i, + j = opts.j, + realIndex = opts.realIndex, + bcy = opts.bcy, + barHeight = opts.barHeight, + barWidth = opts.barWidth, + textRects = opts.textRects, + dataLabelsX = opts.dataLabelsX, + strokeWidth = opts.strokeWidth, + dataLabelsConfig = opts.dataLabelsConfig, + barDataLabelsConfig = opts.barDataLabelsConfig, + barTotalDataLabelsConfig = opts.barTotalDataLabelsConfig, + offX = opts.offX, + offY = opts.offY; + var dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints; + barWidth = Math.abs(barWidth); + var dataLabelsY = bcy - (this.barCtx.isRangeBar ? 0 : dataPointsDividedHeight) + barHeight / 2 + textRects.height / 2 + offY - 3; + var totalDataLabelsX; + var totalDataLabelsY; + var totalDataLabelsAnchor = 'start'; + var valIsNegative = this.barCtx.series[i][j] < 0; + var newX = x; + + if (this.barCtx.isReversed) { + newX = x + barWidth - (valIsNegative ? barWidth * 2 : 0); + x = w.globals.gridWidth - barWidth; + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (valIsNegative) { + dataLabelsX = newX + barWidth / 2 - offX; + } else { + dataLabelsX = Math.max(textRects.width / 2, newX - barWidth / 2) + offX; + } + + break; + + case 'bottom': + if (valIsNegative) { + dataLabelsX = newX + barWidth - strokeWidth - Math.round(textRects.width / 2) - offX; + } else { + dataLabelsX = newX - barWidth + strokeWidth + Math.round(textRects.width / 2) + offX; + } + + break; + + case 'top': + if (valIsNegative) { + dataLabelsX = newX - strokeWidth + Math.round(textRects.width / 2) - offX; + } else { + dataLabelsX = newX - strokeWidth - Math.round(textRects.width / 2) + offX; + } + + break; + } + + if (this.barCtx.lastActiveBarSerieIndex === realIndex && barTotalDataLabelsConfig.enabled) { + var ADDITIONAL_OFFX = 15; + var graphics = new Graphics(this.barCtx.ctx); + var totalLabeltextRects = graphics.getTextRects(this.getStackedTotalDataLabel({ + realIndex: realIndex, + j: j + }), dataLabelsConfig.fontSize); + + if (valIsNegative) { + totalDataLabelsX = newX - strokeWidth + Math.round(totalLabeltextRects.width / 2) - offX - barTotalDataLabelsConfig.offsetX - ADDITIONAL_OFFX; + totalDataLabelsAnchor = 'end'; + } else { + totalDataLabelsX = newX - strokeWidth - Math.round(totalLabeltextRects.width / 2) + offX + barTotalDataLabelsConfig.offsetX + ADDITIONAL_OFFX; + } + + totalDataLabelsY = dataLabelsY + barTotalDataLabelsConfig.offsetY; + } + + if (!w.config.chart.stacked) { + if (dataLabelsX < 0) { + dataLabelsX = dataLabelsX + textRects.width + strokeWidth; + } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) { + dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth; + } + } + + return { + bcx: x, + bcy: bcy, + dataLabelsX: dataLabelsX, + dataLabelsY: dataLabelsY, + totalDataLabelsX: totalDataLabelsX, + totalDataLabelsY: totalDataLabelsY, + totalDataLabelsAnchor: totalDataLabelsAnchor + }; + } + }, { + key: "drawCalculatedDataLabels", + value: function drawCalculatedDataLabels(_ref2) { + var x = _ref2.x, + y = _ref2.y, + val = _ref2.val, + i = _ref2.i, + j = _ref2.j, + textRects = _ref2.textRects, + barHeight = _ref2.barHeight, + barWidth = _ref2.barWidth, + dataLabelsConfig = _ref2.dataLabelsConfig; + var w = this.w; + var rotate = 'rotate(0)'; + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') rotate = "rotate(-90, ".concat(x, ", ").concat(y, ")"); + var dataLabels = new DataLabels(this.barCtx.ctx); + var graphics = new Graphics(this.barCtx.ctx); + var formatter = dataLabelsConfig.formatter; + var elDataLabelsWrap = null; + var isSeriesNotCollapsed = w.globals.collapsedSeriesIndices.indexOf(i) > -1; + + if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels', + transform: rotate + }); + var text = ''; + + if (typeof val !== 'undefined') { + text = formatter(val, _objectSpread2(_objectSpread2({}, w), {}, { + seriesIndex: i, + dataPointIndex: j, + w: w + })); + } + + var valIsNegative = w.globals.series[i][j] < 0; + var position = w.config.plotOptions.bar.dataLabels.position; + + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') { + if (position === 'top') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start'; + } + + if (position === 'center') { + dataLabelsConfig.textAnchor = 'middle'; + } + + if (position === 'bottom') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end';else dataLabelsConfig.textAnchor = 'start'; + } + } + + if (this.barCtx.isRangeBar && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) { + // hide the datalabel if it cannot fit into the rect + var txRect = graphics.getTextRects(text, parseFloat(dataLabelsConfig.style.fontSize)); + + if (barWidth < txRect.width) { + text = ''; + } + } + + if (w.config.chart.stacked && this.barCtx.barOptions.dataLabels.hideOverflowingLabels) { + // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect + // Note: This issue is only seen in stacked charts + if (this.barCtx.isHorizontal) { + if (textRects.width / 1.6 > Math.abs(barWidth)) { + text = ''; + } + } else { + if (textRects.height / 1.6 > Math.abs(barHeight)) { + text = ''; + } + } + } + + var modifiedDataLabelsConfig = _objectSpread2({}, dataLabelsConfig); + + if (this.barCtx.isHorizontal) { + if (val < 0) { + if (dataLabelsConfig.textAnchor === 'start') { + modifiedDataLabelsConfig.textAnchor = 'end'; + } else if (dataLabelsConfig.textAnchor === 'end') { + modifiedDataLabelsConfig.textAnchor = 'start'; + } + } + } + + dataLabels.plotDataLabelsText({ + x: x, + y: y, + text: text, + i: i, + j: j, + parent: elDataLabelsWrap, + dataLabelsConfig: modifiedDataLabelsConfig, + alwaysDrawDataLabel: true, + offsetCorrection: true + }); + } + + return elDataLabelsWrap; + } + }, { + key: "drawTotalDataLabels", + value: function drawTotalDataLabels(_ref3) { + var x = _ref3.x, + y = _ref3.y, + val = _ref3.val, + realIndex = _ref3.realIndex, + textAnchor = _ref3.textAnchor, + barTotalDataLabelsConfig = _ref3.barTotalDataLabelsConfig; + var graphics = new Graphics(this.barCtx.ctx); + var totalDataLabelText; + + if (barTotalDataLabelsConfig.enabled && typeof x !== 'undefined' && typeof y !== 'undefined' && this.barCtx.lastActiveBarSerieIndex === realIndex) { + totalDataLabelText = graphics.drawText({ + x: x, + y: y, + foreColor: barTotalDataLabelsConfig.style.color, + text: val, + textAnchor: textAnchor, + fontFamily: barTotalDataLabelsConfig.style.fontFamily, + fontSize: barTotalDataLabelsConfig.style.fontSize, + fontWeight: barTotalDataLabelsConfig.style.fontWeight + }); + } + + return totalDataLabelText; + } + }]); + + return BarDataLabels; + }(); + + var Helpers$1 = /*#__PURE__*/function () { + function Helpers(barCtx) { + _classCallCheck(this, Helpers); + + this.w = barCtx.w; + this.barCtx = barCtx; + } + + _createClass(Helpers, [{ + key: "initVariables", + value: function initVariables(series) { + var w = this.w; + this.barCtx.series = series; + this.barCtx.totalItems = 0; + this.barCtx.seriesLen = 0; + this.barCtx.visibleI = -1; // visible Series + + this.barCtx.visibleItems = 1; // number of visible bars after user zoomed in/out + + for (var sl = 0; sl < series.length; sl++) { + if (series[sl].length > 0) { + this.barCtx.seriesLen = this.barCtx.seriesLen + 1; + this.barCtx.totalItems += series[sl].length; + } + + if (w.globals.isXNumeric) { + // get max visible items + for (var j = 0; j < series[sl].length; j++) { + if (w.globals.seriesX[sl][j] > w.globals.minX && w.globals.seriesX[sl][j] < w.globals.maxX) { + this.barCtx.visibleItems++; + } + } + } else { + this.barCtx.visibleItems = w.globals.dataPoints; + } + } + + if (this.barCtx.seriesLen === 0) { + // A small adjustment when combo charts are used + this.barCtx.seriesLen = 1; + } + + this.barCtx.zeroSerieses = []; + this.barCtx.radiusOnSeriesNumber = series.length - 1; // which series to draw ending shape on + + if (!w.globals.comboCharts) { + this.checkZeroSeries({ + series: series + }); + } + } + }, { + key: "initialPositions", + value: function initialPositions() { + var w = this.w; + var x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW; + var dataPoints = w.globals.dataPoints; + + if (this.barCtx.isRangeBar) { + // timeline rangebar chart + dataPoints = w.globals.labels.length; + } + + var seriesLen = this.barCtx.seriesLen; + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1; + } + + if (this.barCtx.isHorizontal) { + // height divided into equal parts + yDivision = w.globals.gridHeight / dataPoints; + barHeight = yDivision / seriesLen; + + if (w.globals.isXNumeric) { + yDivision = w.globals.gridHeight / this.barCtx.totalItems; + barHeight = yDivision / this.barCtx.seriesLen; + } + + barHeight = barHeight * parseInt(this.barCtx.barOptions.barHeight, 10) / 100; + zeroW = this.barCtx.baseLineInvertedY + w.globals.padHorizontal + (this.barCtx.isReversed ? w.globals.gridWidth : 0) - (this.barCtx.isReversed ? this.barCtx.baseLineInvertedY * 2 : 0); + y = (yDivision - barHeight * this.barCtx.seriesLen) / 2; + } else { + // width divided into equal parts + xDivision = w.globals.gridWidth / this.barCtx.visibleItems; + + if (w.config.xaxis.convertedCatToNumeric) { + xDivision = w.globals.gridWidth / w.globals.dataPoints; + } + + barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100; + + if (w.globals.isXNumeric) { + // max barwidth should be equal to minXDiff to avoid overlap + var xRatio = this.barCtx.xRatio; + + if (w.config.xaxis.convertedCatToNumeric) { + xRatio = this.barCtx.initialXRatio; + } + + if (w.globals.minXDiff && w.globals.minXDiff !== 0.5 && w.globals.minXDiff / xRatio > 0) { + xDivision = w.globals.minXDiff / xRatio; + } + + barWidth = xDivision / this.barCtx.seriesLen * parseInt(this.barCtx.barOptions.columnWidth, 10) / 100; + + if (barWidth < 1) { + barWidth = 1; + } + } + + zeroH = w.globals.gridHeight - this.barCtx.baseLineY[this.barCtx.yaxisIndex] - (this.barCtx.isReversed ? w.globals.gridHeight : 0) + (this.barCtx.isReversed ? this.barCtx.baseLineY[this.barCtx.yaxisIndex] * 2 : 0); + x = w.globals.padHorizontal + (xDivision - barWidth * this.barCtx.seriesLen) / 2; + } + + return { + x: x, + y: y, + yDivision: yDivision, + xDivision: xDivision, + barHeight: barHeight, + barWidth: barWidth, + zeroH: zeroH, + zeroW: zeroW + }; + } + }, { + key: "getPathFillColor", + value: function getPathFillColor(series, i, j, realIndex) { + var _w$config$series$i$da, _w$config$series$i$da2, _w$config$series$i$da3, _w$config$series$i$da4; + + var w = this.w; + var fill = new Fill(this.barCtx.ctx); + var fillColor = null; + var seriesNumber = this.barCtx.barOptions.distributed ? j : i; + + if (this.barCtx.barOptions.colors.ranges.length > 0) { + var colorRange = this.barCtx.barOptions.colors.ranges; + colorRange.map(function (range) { + if (series[i][j] >= range.from && series[i][j] <= range.to) { + fillColor = range.color; + } + }); + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) { + fillColor = w.config.series[i].data[j].fillColor; + } + + var pathFill = fill.fillPath({ + seriesNumber: this.barCtx.barOptions.distributed ? seriesNumber : realIndex, + dataPointIndex: j, + color: fillColor, + value: series[i][j], + fillConfig: (_w$config$series$i$da = w.config.series[i].data[j]) === null || _w$config$series$i$da === void 0 ? void 0 : _w$config$series$i$da.fill, + fillType: (_w$config$series$i$da2 = w.config.series[i].data[j]) !== null && _w$config$series$i$da2 !== void 0 && (_w$config$series$i$da3 = _w$config$series$i$da2.fill) !== null && _w$config$series$i$da3 !== void 0 && _w$config$series$i$da3.type ? (_w$config$series$i$da4 = w.config.series[i].data[j]) === null || _w$config$series$i$da4 === void 0 ? void 0 : _w$config$series$i$da4.fill.type : w.config.fill.type + }); + return pathFill; + } + }, { + key: "getStrokeWidth", + value: function getStrokeWidth(i, j, realIndex) { + var strokeWidth = 0; + var w = this.w; + + if (typeof this.barCtx.series[i][j] === 'undefined' || this.barCtx.series[i][j] === null) { + this.barCtx.isNullValue = true; + } else { + this.barCtx.isNullValue = false; + } + + if (w.config.stroke.show) { + if (!this.barCtx.isNullValue) { + strokeWidth = Array.isArray(this.barCtx.strokeWidth) ? this.barCtx.strokeWidth[realIndex] : this.barCtx.strokeWidth; + } + } + + return strokeWidth; + } + }, { + key: "shouldApplyRadius", + value: function shouldApplyRadius(realIndex) { + var w = this.w; + var applyRadius = false; + + if (w.config.plotOptions.bar.borderRadius > 0) { + if (w.config.chart.stacked) { + if (w.config.plotOptions.bar.borderRadiusWhenStacked === 'last') { + if (this.barCtx.lastActiveBarSerieIndex === realIndex) { + applyRadius = true; + } + } else { + applyRadius = true; + } + } else { + applyRadius = true; + } + } + + return applyRadius; + } + }, { + key: "barBackground", + value: function barBackground(_ref) { + var j = _ref.j, + i = _ref.i, + x1 = _ref.x1, + x2 = _ref.x2, + y1 = _ref.y1, + y2 = _ref.y2, + elSeries = _ref.elSeries; + var w = this.w; + var graphics = new Graphics(this.barCtx.ctx); + var sr = new Series(this.barCtx.ctx); + var activeSeriesIndex = sr.getActiveConfigSeriesIndex(); + + if (this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && activeSeriesIndex === i) { + if (j >= this.barCtx.barOptions.colors.backgroundBarColors.length) { + j %= this.barCtx.barOptions.colors.backgroundBarColors.length; + } + + var bcolor = this.barCtx.barOptions.colors.backgroundBarColors[j]; + var rect = graphics.drawRect(typeof x1 !== 'undefined' ? x1 : 0, typeof y1 !== 'undefined' ? y1 : 0, typeof x2 !== 'undefined' ? x2 : w.globals.gridWidth, typeof y2 !== 'undefined' ? y2 : w.globals.gridHeight, this.barCtx.barOptions.colors.backgroundBarRadius, bcolor, this.barCtx.barOptions.colors.backgroundBarOpacity); + elSeries.add(rect); + rect.node.classList.add('apexcharts-backgroundBar'); + } + } + }, { + key: "getColumnPaths", + value: function getColumnPaths(_ref2) { + var _w$config$series$real; + + var barWidth = _ref2.barWidth, + barXPosition = _ref2.barXPosition, + y1 = _ref2.y1, + y2 = _ref2.y2, + strokeWidth = _ref2.strokeWidth, + realIndex = _ref2.realIndex, + i = _ref2.i, + j = _ref2.j, + w = _ref2.w; + var graphics = new Graphics(this.barCtx.ctx); + strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth; + if (!strokeWidth) strokeWidth = 0; + var bW = barWidth; + var bXP = barXPosition; + + if ((_w$config$series$real = w.config.series[realIndex].data[j]) !== null && _w$config$series$real !== void 0 && _w$config$series$real.columnWidthOffset) { + bXP = barXPosition - w.config.series[realIndex].data[j].columnWidthOffset / 2; + bW = barWidth + w.config.series[realIndex].data[j].columnWidthOffset; + } + + var x1 = bXP; + var x2 = bXP + bW; // append tiny pixels to avoid exponentials (which cause issues in border-radius) + + y1 += 0.001; + y2 += 0.001; + var pathTo = graphics.move(x1, y1); + var pathFrom = graphics.move(x1, y1); + var sl = graphics.line(x2 - strokeWidth, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false); + } + + pathTo = pathTo + graphics.line(x1, y2) + graphics.line(x2 - strokeWidth, y2) + graphics.line(x2 - strokeWidth, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); // the lines in pathFrom are repeated to equal it to the points of pathTo + // this is to avoid weird animation (bug in svg.js) + + pathFrom = pathFrom + graphics.line(x1, y1) + sl + sl + sl + sl + sl + graphics.line(x1, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + + if (this.shouldApplyRadius(realIndex)) { + pathTo = graphics.roundPathCorners(pathTo, w.config.plotOptions.bar.borderRadius); + } + + if (w.config.chart.stacked) { + this.barCtx.yArrj.push(y2); + this.barCtx.yArrjF.push(Math.abs(y1 - y2)); + this.barCtx.yArrjVal.push(this.barCtx.series[i][j]); + } + + return { + pathTo: pathTo, + pathFrom: pathFrom + }; + } + }, { + key: "getBarpaths", + value: function getBarpaths(_ref3) { + var _w$config$series$real2; + + var barYPosition = _ref3.barYPosition, + barHeight = _ref3.barHeight, + x1 = _ref3.x1, + x2 = _ref3.x2, + strokeWidth = _ref3.strokeWidth, + realIndex = _ref3.realIndex, + i = _ref3.i, + j = _ref3.j, + w = _ref3.w; + var graphics = new Graphics(this.barCtx.ctx); + strokeWidth = Array.isArray(strokeWidth) ? strokeWidth[realIndex] : strokeWidth; + if (!strokeWidth) strokeWidth = 0; + var bYP = barYPosition; + var bH = barHeight; + + if ((_w$config$series$real2 = w.config.series[realIndex].data[j]) !== null && _w$config$series$real2 !== void 0 && _w$config$series$real2.barHeightOffset) { + bYP = barYPosition - w.config.series[realIndex].data[j].barHeightOffset / 2; + bH = barHeight + w.config.series[realIndex].data[j].barHeightOffset; + } + + var y1 = bYP; + var y2 = bYP + bH; // append tiny pixels to avoid exponentials (which cause issues in border-radius) + + x1 += 0.001; + x2 += 0.001; + var pathTo = graphics.move(x1, y1); + var pathFrom = graphics.move(x1, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false); + } + + var sl = graphics.line(x1, y2 - strokeWidth); + pathTo = pathTo + graphics.line(x2, y1) + graphics.line(x2, y2 - strokeWidth) + sl + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + pathFrom = pathFrom + graphics.line(x1, y1) + sl + sl + sl + sl + sl + graphics.line(x1, y1) + (w.config.plotOptions.bar.borderRadiusApplication === 'around' ? ' Z' : ' z'); + + if (this.shouldApplyRadius(realIndex)) { + pathTo = graphics.roundPathCorners(pathTo, w.config.plotOptions.bar.borderRadius); + } + + if (w.config.chart.stacked) { + this.barCtx.xArrj.push(x2); + this.barCtx.xArrjF.push(Math.abs(x1 - x2)); + this.barCtx.xArrjVal.push(this.barCtx.series[i][j]); + } + + return { + pathTo: pathTo, + pathFrom: pathFrom + }; + } + }, { + key: "checkZeroSeries", + value: function checkZeroSeries(_ref4) { + var series = _ref4.series; + var w = this.w; + + for (var zs = 0; zs < series.length; zs++) { + var total = 0; + + for (var zsj = 0; zsj < series[w.globals.maxValsInArrayIndex].length; zsj++) { + total += series[zs][zsj]; + } + + if (total === 0) { + this.barCtx.zeroSerieses.push(zs); + } + } // After getting all zeroserieses, we need to ensure whether radiusOnSeriesNumber is not in that zeroseries array + + + for (var s = series.length - 1; s >= 0; s--) { + if (this.barCtx.zeroSerieses.indexOf(s) > -1 && s === this.radiusOnSeriesNumber) { + this.barCtx.radiusOnSeriesNumber -= 1; + } + } + + for (var _s = series.length - 1; _s >= 0; _s--) { + if (w.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber) > -1) { + this.barCtx.radiusOnSeriesNumber -= 1; + } + } + } + }, { + key: "getXForValue", + value: function getXForValue(value, zeroW) { + var zeroPositionForNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var xForVal = zeroPositionForNull ? zeroW : null; + + if (typeof value !== 'undefined' && value !== null) { + xForVal = zeroW + value / this.barCtx.invertedYRatio - (this.barCtx.isReversed ? value / this.barCtx.invertedYRatio : 0) * 2; + } + + return xForVal; + } + }, { + key: "getYForValue", + value: function getYForValue(value, zeroH) { + var zeroPositionForNull = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var yForVal = zeroPositionForNull ? zeroH : null; + + if (typeof value !== 'undefined' && value !== null) { + yForVal = zeroH - value / this.barCtx.yRatio[this.barCtx.yaxisIndex] + (this.barCtx.isReversed ? value / this.barCtx.yRatio[this.barCtx.yaxisIndex] : 0) * 2; + } + + return yForVal; + } + }, { + key: "getGoalValues", + value: function getGoalValues(type, zeroW, zeroH, i, j) { + var _this = this; + + var w = this.w; + var goals = []; + + if (w.globals.seriesGoals[i] && w.globals.seriesGoals[i][j] && Array.isArray(w.globals.seriesGoals[i][j])) { + w.globals.seriesGoals[i][j].forEach(function (goal) { + var _goals$push; + + goals.push((_goals$push = {}, _defineProperty(_goals$push, type, type === 'x' ? _this.getXForValue(goal.value, zeroW, false) : _this.getYForValue(goal.value, zeroH, false)), _defineProperty(_goals$push, "attrs", goal), _goals$push)); + }); + } + + return goals; + } + }, { + key: "drawGoalLine", + value: function drawGoalLine(_ref5) { + var barXPosition = _ref5.barXPosition, + barYPosition = _ref5.barYPosition, + goalX = _ref5.goalX, + goalY = _ref5.goalY, + barWidth = _ref5.barWidth, + barHeight = _ref5.barHeight; + var graphics = new Graphics(this.barCtx.ctx); + var lineGroup = graphics.group({ + className: 'apexcharts-bar-goals-groups' + }); + var line = null; + + if (this.barCtx.isHorizontal) { + if (Array.isArray(goalX)) { + goalX.forEach(function (goal) { + var sHeight = typeof goal.attrs.strokeHeight !== 'undefined' ? goal.attrs.strokeHeight : barHeight / 2; + var y = barYPosition + sHeight + barHeight / 2; + line = graphics.drawLine(goal.x, y - sHeight * 2, goal.x, y, goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, goal.attrs.strokeDashArray, goal.attrs.strokeWidth ? goal.attrs.strokeWidth : 2, goal.attrs.strokeLineCap); + lineGroup.add(line); + }); + } + } else { + if (Array.isArray(goalY)) { + goalY.forEach(function (goal) { + var sWidth = typeof goal.attrs.strokeWidth !== 'undefined' ? goal.attrs.strokeWidth : barWidth / 2; + var x = barXPosition + sWidth + barWidth / 2; + line = graphics.drawLine(x - sWidth * 2, goal.y, x, goal.y, goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, goal.attrs.strokeDashArray, goal.attrs.strokeHeight ? goal.attrs.strokeHeight : 2, goal.attrs.strokeLineCap); + lineGroup.add(line); + }); + } + } + + return lineGroup; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Bar Class responsible for drawing both Columns and Bars. + * + * @module Bar + **/ + + var Bar = /*#__PURE__*/function () { + function Bar(ctx, xyRatios) { + _classCallCheck(this, Bar); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.barOptions = w.config.plotOptions.bar; + this.isHorizontal = this.barOptions.horizontal; + this.strokeWidth = w.config.stroke.width; + this.isNullValue = false; + this.isRangeBar = w.globals.seriesRange.length && this.isHorizontal; + this.xyRatios = xyRatios; + + if (this.xyRatios !== null) { + this.xRatio = xyRatios.xRatio; + this.initialXRatio = xyRatios.initialXRatio; + this.yRatio = xyRatios.yRatio; + this.invertedXRatio = xyRatios.invertedXRatio; + this.invertedYRatio = xyRatios.invertedYRatio; + this.baseLineY = xyRatios.baseLineY; + this.baseLineInvertedY = xyRatios.baseLineInvertedY; + } + + this.yaxisIndex = 0; + this.seriesLen = 0; + var ser = new Series(this.ctx); + this.lastActiveBarSerieIndex = ser.getActiveConfigSeriesIndex('desc', ['bar', 'column']); + var barSeriesIndices = ser.getBarSeriesIndices(); + var coreUtils = new CoreUtils(this.ctx); + this.stackedSeriesTotals = coreUtils.getStackedSeriesTotals(this.w.config.series.map(function (s, i) { + return barSeriesIndices.indexOf(i) === -1 ? i : -1; + }).filter(function (s) { + return s !== -1; + })); + this.barHelpers = new Helpers$1(this); + } + /** primary draw method which is called on bar object + * @memberof Bar + * @param {array} series - user supplied series values + * @param {int} seriesIndex - the index by which series will be drawn on the svg + * @return {node} element which is supplied to parent chart draw method for appending + **/ + + + _createClass(Bar, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.series = series; + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }); + + if (w.config.dataLabels.enabled) { + if (this.totalItems > this.barOptions.dataLabels.maxItems) { + console.warn('WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.'); + } + } + + for (var i = 0, bc = 0; i < series.length; i++, bc++) { + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + rel: i + 1, + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + 'data:realIndex': realIndex + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; + var initPositions = this.barHelpers.initialPositions(); + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + + if (!this.horizontal) { + xArrj.push(x + barWidth / 2); + } // eldatalabels + + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var elGoalsMarkers = graphics.group({ + class: 'apexcharts-bar-goals-markers', + style: "pointer-events: none" + }); + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex); + var paths = null; + var pathsParams = { + indexes: { + i: i, + j: j, + realIndex: realIndex, + bc: bc + }, + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + + if (this.isHorizontal) { + paths = this.drawBarPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + barHeight: barHeight, + zeroW: zeroW, + yDivision: yDivision + })); + barWidth = this.series[i][j] / this.invertedYRatio; + } else { + paths = this.drawColumnPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex]; + } + + var barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: paths.barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; // push current X + + if (j > 0) { + xArrj.push(x + barWidth / 2); + } + + yArrj.push(y); + var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex); + this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + j: j, + i: i, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: barHeight, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'bar' + }); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrj; + w.globals.seriesYvalues[realIndex] = yArrj; + ret.add(elSeries); + } + + return ret; + } + }, { + key: "renderSeries", + value: function renderSeries(_ref) { + var realIndex = _ref.realIndex, + pathFill = _ref.pathFill, + lineFill = _ref.lineFill, + j = _ref.j, + i = _ref.i, + pathFrom = _ref.pathFrom, + pathTo = _ref.pathTo, + strokeWidth = _ref.strokeWidth, + elSeries = _ref.elSeries, + x = _ref.x, + y = _ref.y, + y1 = _ref.y1, + y2 = _ref.y2, + series = _ref.series, + barHeight = _ref.barHeight, + barWidth = _ref.barWidth, + barYPosition = _ref.barYPosition, + elDataLabelsWrap = _ref.elDataLabelsWrap, + elGoalsMarkers = _ref.elGoalsMarkers, + visibleSeries = _ref.visibleSeries, + type = _ref.type; + var w = this.w; + var graphics = new Graphics(this.ctx); + + if (!lineFill) { + /* fix apexcharts#341 */ + lineFill = this.barOptions.distributed ? w.globals.stroke.colors[j] : w.globals.stroke.colors[realIndex]; + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) { + lineFill = w.config.series[i].data[j].strokeColor; + } + + if (this.isNullValue) { + pathFill = 'none'; + } + + var delay = j / w.config.chart.animations.animateGradually.delay * (w.config.chart.animations.speed / w.globals.dataPoints) / 2.4; + var renderedPath = graphics.renderPaths({ + i: i, + j: j, + realIndex: realIndex, + pathFrom: pathFrom, + pathTo: pathTo, + stroke: lineFill, + strokeWidth: strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: pathFill, + animationDelay: delay, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-".concat(type, "-area") + }); + renderedPath.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); + var forecast = w.config.forecastDataPoints; + + if (forecast.count > 0) { + if (j >= w.globals.dataPoints - forecast.count) { + renderedPath.node.setAttribute('stroke-dasharray', forecast.dashArray); + renderedPath.node.setAttribute('stroke-width', forecast.strokeWidth); + renderedPath.node.setAttribute('fill-opacity', forecast.fillOpacity); + } + } + + if (typeof y1 !== 'undefined' && typeof y2 !== 'undefined') { + renderedPath.attr('data-range-y1', y1); + renderedPath.attr('data-range-y2', y2); + } + + var filters = new Filters(this.ctx); + filters.setSelectionFilter(renderedPath, realIndex, j); + elSeries.add(renderedPath); + var barDataLabels = new BarDataLabels(this); + var dataLabelsObj = barDataLabels.handleBarDataLabels({ + x: x, + y: y, + y1: y1, + y2: y2, + i: i, + j: j, + series: series, + realIndex: realIndex, + barHeight: barHeight, + barWidth: barWidth, + barYPosition: barYPosition, + renderedPath: renderedPath, + visibleSeries: visibleSeries + }); + + if (dataLabelsObj.dataLabels !== null) { + elDataLabelsWrap.add(dataLabelsObj.dataLabels); + } + + if (dataLabelsObj.totalDataLabels) { + elDataLabelsWrap.add(dataLabelsObj.totalDataLabels); + } + + elSeries.add(elDataLabelsWrap); + + if (elGoalsMarkers) { + elSeries.add(elGoalsMarkers); + } + + return elSeries; + } + }, { + key: "drawBarPaths", + value: function drawBarPaths(_ref2) { + var indexes = _ref2.indexes, + barHeight = _ref2.barHeight, + strokeWidth = _ref2.strokeWidth, + zeroW = _ref2.zeroW, + x = _ref2.x, + y = _ref2.y, + yDivision = _ref2.yDivision, + elSeries = _ref2.elSeries; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + + if (w.globals.isXNumeric) { + y = (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - barHeight; + } + + var barYPosition = y + barHeight * this.visibleI; + x = this.barHelpers.getXForValue(this.series[i][j], zeroW); + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: zeroW, + x2: x, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + this.barHelpers.barBackground({ + j: j, + i: i, + y1: barYPosition - barHeight * this.visibleI, + y2: barHeight * this.seriesLen, + elSeries: elSeries + }); + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x: x, + y: y, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, i, j), + barYPosition: barYPosition + }; + } + }, { + key: "drawColumnPaths", + value: function drawColumnPaths(_ref3) { + var indexes = _ref3.indexes, + x = _ref3.x, + y = _ref3.y, + xDivision = _ref3.xDivision, + barWidth = _ref3.barWidth, + zeroH = _ref3.zeroH, + strokeWidth = _ref3.strokeWidth, + elSeries = _ref3.elSeries; + var w = this.w; + var realIndex = indexes.realIndex; + var i = indexes.i; + var j = indexes.j; + var bc = indexes.bc; + + if (w.globals.isXNumeric) { + var sxI = realIndex; + + if (!w.globals.seriesX[realIndex].length) { + sxI = w.globals.maxValsInArrayIndex; + } + + x = (w.globals.seriesX[sxI][j] - w.globals.minX) / this.xRatio - barWidth * this.seriesLen / 2; + } + + var barXPosition = x + barWidth * this.visibleI; + y = this.barHelpers.getYForValue(this.series[i][j], zeroH); + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: zeroH, + y2: y, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + this.barHelpers.barBackground({ + bc: bc, + j: j, + i: i, + x1: barXPosition - strokeWidth / 2 - barWidth * this.visibleI, + x2: barWidth * this.seriesLen + strokeWidth / 2, + elSeries: elSeries + }); + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x: x, + y: y, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition + }; + } + /** getPreviousPath is a common function for bars/columns which is used to get previous paths when data changes. + * @memberof Bar + * @param {int} realIndex - current iterating i + * @param {int} j - current iterating series's j index + * @return {string} pathFrom is the string which will be appended in animations + **/ + + }, { + key: "getPreviousPath", + value: function getPreviousPath(realIndex, j) { + var w = this.w; + var pathFrom; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if (gpp.paths && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[j].d; + } + } + } + + return pathFrom; + } + }]); + + return Bar; + }(); + + /** + * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars. + * + * @module BarStacked + * The whole calculation for stacked bar/column is different from normal bar/column, + * hence it makes sense to derive a new class for it extending most of the props of Parent Bar + **/ + + var BarStacked = /*#__PURE__*/function (_Bar) { + _inherits(BarStacked, _Bar); + + var _super = _createSuper(BarStacked); + + function BarStacked() { + _classCallCheck(this, BarStacked); + + return _super.apply(this, arguments); + } + + _createClass(BarStacked, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var _this = this; + + var w = this.w; + this.graphics = new Graphics(this.ctx); + this.bar = new Bar(this.ctx, this.xyRatios); + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + + if (w.config.chart.stackType === '100%') { + series = w.globals.seriesPercent.slice(); + } + + this.series = series; + this.totalItems = 0; + this.prevY = []; // y position on chart + + this.prevX = []; // x position on chart + + this.prevYF = []; // y position including shapes on chart + + this.prevXF = []; // x position including shapes on chart + + this.prevYVal = []; // y values (series[i][j]) in columns + + this.prevXVal = []; // x values (series[i][j]) in bars + + this.xArrj = []; // xj indicates x position on graph in bars + + this.xArrjF = []; // xjF indicates bar's x position + roundedShape's positions in bars + + this.xArrjVal = []; // x val means the actual series's y values in horizontal/bars + + this.yArrj = []; // yj indicates y position on graph in columns + + this.yArrjF = []; // yjF indicates bar's y position + roundedShape's positions in columns + + this.yArrjVal = []; // y val means the actual series's y values in columns + + for (var sl = 0; sl < series.length; sl++) { + if (series[sl].length > 0) { + this.totalItems += series[sl].length; + } + } + + var ret = this.graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }); + var x = 0; + var y = 0; + + var _loop = function _loop(i, bc) { + var xDivision = void 0; // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + + var yDivision = void 0; // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + + var zeroH = void 0; // zeroH is the baseline where 0 meets y axis + + var zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var xArrValues = []; + var yArrValues = []; + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; + + if (_this.yRatio.length > 1) { + _this.yaxisIndex = realIndex; + } + + _this.isReversed = w.config.yaxis[_this.yaxisIndex] && w.config.yaxis[_this.yaxisIndex].reversed; // el to which series will be drawn + + var elSeries = _this.graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + + _this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); // eldatalabels + + + var elDataLabelsWrap = _this.graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + + var elGoalsMarkers = _this.graphics.group({ + class: 'apexcharts-bar-goals-markers', + style: "pointer-events: none" + }); + + var barHeight = 0; + var barWidth = 0; + + var initPositions = _this.initialPositions(x, y, xDivision, yDivision, zeroH, zeroW); + + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + _this.yArrj = []; + _this.yArrjF = []; + _this.yArrjVal = []; + _this.xArrj = []; + _this.xArrjF = []; + _this.xArrjVal = []; // if (!this.horizontal) { + // this.xArrj.push(x + barWidth / 2) + // } + // fix issue #1215; + // where all stack bar disappear after collapsing the first series + // sol: if only 1 arr in this.prevY(this.prevY.length === 1) and all are NaN + + if (_this.prevY.length === 1 && _this.prevY[0].every(function (val) { + return isNaN(val); + })) { + // make this.prevY[0] all zeroH + _this.prevY[0] = _this.prevY[0].map(function (val) { + return zeroH; + }); // make this.prevYF[0] all 0 + + _this.prevYF[0] = _this.prevYF[0].map(function (val) { + return 0; + }); + } + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = _this.barHelpers.getStrokeWidth(i, j, realIndex); + + var commonPathOpts = { + indexes: { + i: i, + j: j, + realIndex: realIndex, + bc: bc + }, + strokeWidth: strokeWidth, + x: x, + y: y, + elSeries: elSeries + }; + var paths = null; + + if (_this.isHorizontal) { + paths = _this.drawStackedBarPaths(_objectSpread2(_objectSpread2({}, commonPathOpts), {}, { + zeroW: zeroW, + barHeight: barHeight, + yDivision: yDivision + })); + barWidth = _this.series[i][j] / _this.invertedYRatio; + } else { + paths = _this.drawStackedColumnPaths(_objectSpread2(_objectSpread2({}, commonPathOpts), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + barHeight = _this.series[i][j] / _this.yRatio[_this.yaxisIndex]; + } + + var barGoalLine = _this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: paths.barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; + xArrValues.push(x); + yArrValues.push(y); + + var pathFill = _this.barHelpers.getPathFillColor(series, i, j, realIndex); + + elSeries = _this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + j: j, + i: i, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: barHeight, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + type: 'bar', + visibleSeries: 0 + }); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrValues; + w.globals.seriesYvalues[realIndex] = yArrValues; // push all current y values array to main PrevY Array + + _this.prevY.push(_this.yArrj); + + _this.prevYF.push(_this.yArrjF); + + _this.prevYVal.push(_this.yArrjVal); + + _this.prevX.push(_this.xArrj); + + _this.prevXF.push(_this.xArrjF); + + _this.prevXVal.push(_this.xArrjVal); + + ret.add(elSeries); + }; + + for (var i = 0, bc = 0; i < series.length; i++, bc++) { + _loop(i, bc); + } + + return ret; + } + }, { + key: "initialPositions", + value: function initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) { + var w = this.w; + var barHeight, barWidth; + + if (this.isHorizontal) { + // height divided into equal parts + yDivision = w.globals.gridHeight / w.globals.dataPoints; + barHeight = yDivision; + barHeight = barHeight * parseInt(w.config.plotOptions.bar.barHeight, 10) / 100; + zeroW = this.baseLineInvertedY + w.globals.padHorizontal + (this.isReversed ? w.globals.gridWidth : 0) - (this.isReversed ? this.baseLineInvertedY * 2 : 0); // initial y position is half of barHeight * half of number of Bars + + y = (yDivision - barHeight) / 2; + } else { + // width divided into equal parts + xDivision = w.globals.gridWidth / w.globals.dataPoints; + barWidth = xDivision; + + if (w.globals.isXNumeric && w.globals.dataPoints > 1) { + // the check (w.globals.dataPoints > 1) fixes apexcharts.js #1617 + xDivision = w.globals.minXDiff / this.xRatio; + barWidth = xDivision * parseInt(this.barOptions.columnWidth, 10) / 100; + } else { + barWidth = barWidth * parseInt(w.config.plotOptions.bar.columnWidth, 10) / 100; + } + + zeroH = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); // initial x position is one third of barWidth + + x = w.globals.padHorizontal + (xDivision - barWidth) / 2; + } + + return { + x: x, + y: y, + yDivision: yDivision, + xDivision: xDivision, + barHeight: barHeight, + barWidth: barWidth, + zeroH: zeroH, + zeroW: zeroW + }; + } + }, { + key: "drawStackedBarPaths", + value: function drawStackedBarPaths(_ref) { + var indexes = _ref.indexes, + barHeight = _ref.barHeight, + strokeWidth = _ref.strokeWidth, + zeroW = _ref.zeroW, + x = _ref.x, + y = _ref.y, + yDivision = _ref.yDivision, + elSeries = _ref.elSeries; + var w = this.w; + var barYPosition = y; + var barXPosition; + var i = indexes.i; + var j = indexes.j; + var prevBarW = 0; + + for (var k = 0; k < this.prevXF.length; k++) { + prevBarW = prevBarW + this.prevXF[k][j]; + } + + if (i > 0) { + var bXP = zeroW; + + if (this.prevXVal[i - 1][j] < 0) { + bXP = this.series[i][j] >= 0 ? this.prevX[i - 1][j] + prevBarW - (this.isReversed ? prevBarW : 0) * 2 : this.prevX[i - 1][j]; + } else if (this.prevXVal[i - 1][j] >= 0) { + bXP = this.series[i][j] >= 0 ? this.prevX[i - 1][j] : this.prevX[i - 1][j] - prevBarW + (this.isReversed ? prevBarW : 0) * 2; + } + + barXPosition = bXP; + } else { + // the first series will not have prevX values + barXPosition = zeroW; + } + + if (this.series[i][j] === null) { + x = barXPosition; + } else { + x = barXPosition + this.series[i][j] / this.invertedYRatio - (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2; + } + + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: barXPosition, + x2: x, + strokeWidth: strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + this.barHelpers.barBackground({ + j: j, + i: i, + y1: barYPosition, + y2: barHeight, + elSeries: elSeries + }); + y = y + yDivision; + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, i, j), + barYPosition: barYPosition, + x: x, + y: y + }; + } + }, { + key: "drawStackedColumnPaths", + value: function drawStackedColumnPaths(_ref2) { + var indexes = _ref2.indexes, + x = _ref2.x, + y = _ref2.y, + xDivision = _ref2.xDivision, + barWidth = _ref2.barWidth, + zeroH = _ref2.zeroH; + _ref2.strokeWidth; + var elSeries = _ref2.elSeries; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + var bc = indexes.bc; + + if (w.globals.isXNumeric) { + var seriesVal = w.globals.seriesX[i][j]; + if (!seriesVal) seriesVal = 0; + x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2; + } + + var barXPosition = x; + var barYPosition; + var prevBarH = 0; + + for (var k = 0; k < this.prevYF.length; k++) { + // fix issue #1215 + // in case where this.prevYF[k][j] is NaN, use 0 instead + prevBarH = prevBarH + (!isNaN(this.prevYF[k][j]) ? this.prevYF[k][j] : 0); + } + + if (i > 0 && !w.globals.isXNumeric || i > 0 && w.globals.isXNumeric && w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) { + var bYP; + var prevYValue; + var p = Math.min(this.yRatio.length + 1, i + 1); + + if (this.prevY[i - 1] !== undefined) { + for (var ii = 1; ii < p; ii++) { + if (!isNaN(this.prevY[i - ii][j])) { + // find the previous available value to give prevYValue + prevYValue = this.prevY[i - ii][j]; // if found it, break the loop + + break; + } + } + } + + for (var _ii = 1; _ii < p; _ii++) { + // find the previous available value(non-NaN) to give bYP + if (this.prevYVal[i - _ii][j] < 0) { + bYP = this.series[i][j] >= 0 ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 : prevYValue; // found it? break the loop + + break; + } else if (this.prevYVal[i - _ii][j] >= 0) { + bYP = this.series[i][j] >= 0 ? prevYValue : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2; // found it? break the loop + + break; + } + } + + if (typeof bYP === 'undefined') bYP = w.globals.gridHeight; // if this.prevYF[0] is all 0 resulted from line #486 + // AND every arr starting from the second only contains NaN + + if (this.prevYF[0].every(function (val) { + return val === 0; + }) && this.prevYF.slice(1, i).every(function (arr) { + return arr.every(function (val) { + return isNaN(val); + }); + })) { + // Use the same calc way as line #485 + barYPosition = zeroH; + } else { + // Nothing special + barYPosition = bYP; + } + } else { + // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero + barYPosition = zeroH; + } + + y = barYPosition - this.series[i][j] / this.yRatio[this.yaxisIndex] + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * 2; + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: barYPosition, + y2: y, + yRatio: this.yRatio[this.yaxisIndex], + strokeWidth: this.strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i: i, + j: j, + w: w + }); + this.barHelpers.barBackground({ + bc: bc, + j: j, + i: i, + x1: barXPosition, + x2: barWidth, + elSeries: elSeries + }); + x = x + xDivision; + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition, + x: w.globals.isXNumeric ? x - xDivision : x, + y: y + }; + } + }]); + + return BarStacked; + }(Bar); + + /** + * ApexCharts BoxCandleStick Class responsible for drawing both Stacked Columns and Bars. + * + * @module BoxCandleStick + **/ + + var BoxCandleStick = /*#__PURE__*/function (_Bar) { + _inherits(BoxCandleStick, _Bar); + + var _super = _createSuper(BoxCandleStick); + + function BoxCandleStick() { + _classCallCheck(this, BoxCandleStick); + + return _super.apply(this, arguments); + } + + _createClass(BoxCandleStick, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + this.candlestickOptions = this.w.config.plotOptions.candlestick; + this.boxOptions = this.w.config.plotOptions.boxPlot; + this.isHorizontal = w.config.plotOptions.bar.horizontal; + var coreUtils = new CoreUtils(this.ctx, w); + series = coreUtils.getLogSeries(series); + this.series = series; + this.yRatio = coreUtils.getLogYRatios(this.yRatio); + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: "apexcharts-".concat(w.config.chart.type, "-series apexcharts-plot-series") + }); + + var _loop = function _loop(i) { + _this.isBoxPlot = w.config.chart.type === 'boxPlot' || w.config.series[i].type === 'boxPlot'; + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + + _this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + _this.visibleI = _this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (_this.yRatio.length > 1) { + _this.yaxisIndex = realIndex; + } + + var initPositions = _this.barHelpers.initialPositions(); + + y = initPositions.y; + barHeight = initPositions.barHeight; + yDivision = initPositions.yDivision; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; + xArrj.push(x + barWidth / 2); // eldatalabels + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + + var _loop2 = function _loop2(j) { + var strokeWidth = _this.barHelpers.getStrokeWidth(i, j, realIndex); + + var paths = null; + var pathsParams = { + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + + if (_this.isHorizontal) { + paths = _this.drawHorizontalBoxPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + yDivision: yDivision, + barHeight: barHeight, + zeroW: zeroW + })); + } else { + paths = _this.drawVerticalBoxPaths(_objectSpread2(_objectSpread2({}, pathsParams), {}, { + xDivision: xDivision, + barWidth: barWidth, + zeroH: zeroH + })); + } + + y = paths.y; + x = paths.x; // push current X + + if (j > 0) { + xArrj.push(x + barWidth / 2); + } + + yArrj.push(y); + paths.pathTo.forEach(function (pathTo, pi) { + var lineFill = !_this.isBoxPlot && _this.candlestickOptions.wick.useFillColor ? paths.color[pi] : w.globals.stroke.colors[i]; + var pathFill = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex: j, + color: paths.color[pi], + value: series[i][j] + }); + + _this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + lineFill: lineFill, + j: j, + i: i, + pathFrom: paths.pathFrom, + pathTo: pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + x: x, + y: y, + series: series, + barHeight: barHeight, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + visibleSeries: _this.visibleI, + type: w.config.chart.type + }); + }); + }; + + for (var j = 0; j < w.globals.dataPoints; j++) { + _loop2(j); + } // push all x val arrays into main xArr + + + w.globals.seriesXvalues[realIndex] = xArrj; + w.globals.seriesYvalues[realIndex] = yArrj; + ret.add(elSeries); + }; + + for (var i = 0; i < series.length; i++) { + _loop(i); + } + + return ret; + } + }, { + key: "drawVerticalBoxPaths", + value: function drawVerticalBoxPaths(_ref) { + var indexes = _ref.indexes, + x = _ref.x; + _ref.y; + var xDivision = _ref.xDivision, + barWidth = _ref.barWidth, + zeroH = _ref.zeroH, + strokeWidth = _ref.strokeWidth; + var w = this.w; + var graphics = new Graphics(this.ctx); + var i = indexes.i; + var j = indexes.j; + var isPositive = true; + var colorPos = w.config.plotOptions.candlestick.colors.upward; + var colorNeg = w.config.plotOptions.candlestick.colors.downward; + var color = ''; + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]; + } + + var yRatio = this.yRatio[this.yaxisIndex]; + var realIndex = indexes.realIndex; + var ohlc = this.getOHLCValue(realIndex, j); + var l1 = zeroH; + var l2 = zeroH; + + if (ohlc.o > ohlc.c) { + isPositive = false; + } + + var y1 = Math.min(ohlc.o, ohlc.c); + var y2 = Math.max(ohlc.o, ohlc.c); + var m = ohlc.m; + + if (w.globals.isXNumeric) { + x = (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio - barWidth / 2; + } + + var barXPosition = x + barWidth * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + y1 = zeroH; + y2 = zeroH; + } else { + y1 = zeroH - y1 / yRatio; + y2 = zeroH - y2 / yRatio; + l1 = zeroH - ohlc.h / yRatio; + l2 = zeroH - ohlc.l / yRatio; + m = zeroH - ohlc.m / yRatio; + } + + var pathTo = graphics.move(barXPosition, zeroH); + var pathFrom = graphics.move(barXPosition + barWidth / 2, y1); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true); + } + + if (this.isBoxPlot) { + pathTo = [graphics.move(barXPosition, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 4, l1) + graphics.line(barXPosition + barWidth - barWidth / 4, l1) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth, m) + graphics.line(barXPosition, m) + graphics.line(barXPosition, y1 + strokeWidth / 2), graphics.move(barXPosition, m) + graphics.line(barXPosition + barWidth, m) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth - barWidth / 4, l2) + graphics.line(barXPosition + barWidth / 4, l2) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition, y2) + graphics.line(barXPosition, m) + 'z']; + } else { + // candlestick + pathTo = [graphics.move(barXPosition, y2) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth / 2, l1) + graphics.line(barXPosition + barWidth / 2, y2) + graphics.line(barXPosition + barWidth, y2) + graphics.line(barXPosition + barWidth, y1) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition + barWidth / 2, l2) + graphics.line(barXPosition + barWidth / 2, y1) + graphics.line(barXPosition, y1) + graphics.line(barXPosition, y2 - strokeWidth / 2)]; + } + + pathFrom = pathFrom + graphics.move(barXPosition, y1); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + return { + pathTo: pathTo, + pathFrom: pathFrom, + x: x, + y: y2, + barXPosition: barXPosition, + color: this.isBoxPlot ? color : isPositive ? [colorPos] : [colorNeg] + }; + } + }, { + key: "drawHorizontalBoxPaths", + value: function drawHorizontalBoxPaths(_ref2) { + var indexes = _ref2.indexes; + _ref2.x; + var y = _ref2.y, + yDivision = _ref2.yDivision, + barHeight = _ref2.barHeight, + zeroW = _ref2.zeroW, + strokeWidth = _ref2.strokeWidth; + var w = this.w; + var graphics = new Graphics(this.ctx); + var i = indexes.i; + var j = indexes.j; + var color = this.boxOptions.colors.lower; + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper]; + } + + var yRatio = this.invertedYRatio; + var realIndex = indexes.realIndex; + var ohlc = this.getOHLCValue(realIndex, j); + var l1 = zeroW; + var l2 = zeroW; + var x1 = Math.min(ohlc.o, ohlc.c); + var x2 = Math.max(ohlc.o, ohlc.c); + var m = ohlc.m; + + if (w.globals.isXNumeric) { + y = (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.invertedXRatio - barHeight / 2; + } + + var barYPosition = y + barHeight * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + x1 = zeroW; + x2 = zeroW; + } else { + x1 = zeroW + x1 / yRatio; + x2 = zeroW + x2 / yRatio; + l1 = zeroW + ohlc.h / yRatio; + l2 = zeroW + ohlc.l / yRatio; + m = zeroW + ohlc.m / yRatio; + } + + var pathTo = graphics.move(zeroW, barYPosition); + var pathFrom = graphics.move(x1, barYPosition + barHeight / 2); + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true); + } + + pathTo = [graphics.move(x1, barYPosition) + graphics.line(x1, barYPosition + barHeight / 2) + graphics.line(l1, barYPosition + barHeight / 2) + graphics.line(l1, barYPosition + barHeight / 2 - barHeight / 4) + graphics.line(l1, barYPosition + barHeight / 2 + barHeight / 4) + graphics.line(l1, barYPosition + barHeight / 2) + graphics.line(x1, barYPosition + barHeight / 2) + graphics.line(x1, barYPosition + barHeight) + graphics.line(m, barYPosition + barHeight) + graphics.line(m, barYPosition) + graphics.line(x1 + strokeWidth / 2, barYPosition), graphics.move(m, barYPosition) + graphics.line(m, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(l2, barYPosition + barHeight - barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 4) + graphics.line(l2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition + barHeight / 2) + graphics.line(x2, barYPosition) + graphics.line(m, barYPosition) + 'z']; + pathFrom = pathFrom + graphics.move(x1, barYPosition); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + return { + pathTo: pathTo, + pathFrom: pathFrom, + x: x2, + y: y, + barYPosition: barYPosition, + color: color + }; + } + }, { + key: "getOHLCValue", + value: function getOHLCValue(i, j) { + var w = this.w; + return { + o: this.isBoxPlot ? w.globals.seriesCandleH[i][j] : w.globals.seriesCandleO[i][j], + h: this.isBoxPlot ? w.globals.seriesCandleO[i][j] : w.globals.seriesCandleH[i][j], + m: w.globals.seriesCandleM[i][j], + l: this.isBoxPlot ? w.globals.seriesCandleC[i][j] : w.globals.seriesCandleL[i][j], + c: this.isBoxPlot ? w.globals.seriesCandleL[i][j] : w.globals.seriesCandleC[i][j] + }; + } + }]); + + return BoxCandleStick; + }(Bar); + + var TreemapHelpers = /*#__PURE__*/function () { + function TreemapHelpers(ctx) { + _classCallCheck(this, TreemapHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(TreemapHelpers, [{ + key: "checkColorRange", + value: function checkColorRange() { + var w = this.w; + var negRange = false; + var chartOpts = w.config.plotOptions[w.config.chart.type]; + + if (chartOpts.colorScale.ranges.length > 0) { + chartOpts.colorScale.ranges.map(function (range, index) { + if (range.from <= 0) { + negRange = true; + } + }); + } + + return negRange; + } + }, { + key: "getShadeColor", + value: function getShadeColor(chartType, i, j, negRange) { + var w = this.w; + var colorShadePercent = 1; + var shadeIntensity = w.config.plotOptions[chartType].shadeIntensity; + var colorProps = this.determineColor(chartType, i, j); + + if (w.globals.hasNegs || negRange) { + if (w.config.plotOptions[chartType].reverseNegativeShade) { + if (colorProps.percent < 0) { + colorShadePercent = colorProps.percent / 100 * (shadeIntensity * 1.25); + } else { + colorShadePercent = (1 - colorProps.percent / 100) * (shadeIntensity * 1.25); + } + } else { + if (colorProps.percent <= 0) { + colorShadePercent = 1 - (1 + colorProps.percent / 100) * shadeIntensity; + } else { + colorShadePercent = (1 - colorProps.percent / 100) * shadeIntensity; + } + } + } else { + colorShadePercent = 1 - colorProps.percent / 100; + + if (chartType === 'treemap') { + colorShadePercent = (1 - colorProps.percent / 100) * (shadeIntensity * 1.25); + } + } + + var color = colorProps.color; + var utils = new Utils$1(); + + if (w.config.plotOptions[chartType].enableShades) { + if (this.w.config.theme.mode === 'dark') { + color = Utils$1.hexToRgba(utils.shadeColor(colorShadePercent * -1, colorProps.color), w.config.fill.opacity); + } else { + color = Utils$1.hexToRgba(utils.shadeColor(colorShadePercent, colorProps.color), w.config.fill.opacity); + } + } + + return { + color: color, + colorProps: colorProps + }; + } + }, { + key: "determineColor", + value: function determineColor(chartType, i, j) { + var w = this.w; + var val = w.globals.series[i][j]; + var chartOpts = w.config.plotOptions[chartType]; + var seriesNumber = chartOpts.colorScale.inverse ? j : i; + + if (chartOpts.distributed && w.config.chart.type === 'treemap') { + seriesNumber = j; + } + + var color = w.globals.colors[seriesNumber]; + var foreColor = null; + var min = Math.min.apply(Math, _toConsumableArray(w.globals.series[i])); + var max = Math.max.apply(Math, _toConsumableArray(w.globals.series[i])); + + if (!chartOpts.distributed && chartType === 'heatmap') { + min = w.globals.minY; + max = w.globals.maxY; + } + + if (typeof chartOpts.colorScale.min !== 'undefined') { + min = chartOpts.colorScale.min < w.globals.minY ? chartOpts.colorScale.min : w.globals.minY; + max = chartOpts.colorScale.max > w.globals.maxY ? chartOpts.colorScale.max : w.globals.maxY; + } + + var total = Math.abs(max) + Math.abs(min); + var percent = 100 * val / (total === 0 ? total - 0.000001 : total); + + if (chartOpts.colorScale.ranges.length > 0) { + var colorRange = chartOpts.colorScale.ranges; + colorRange.map(function (range, index) { + if (val >= range.from && val <= range.to) { + color = range.color; + foreColor = range.foreColor ? range.foreColor : null; + min = range.from; + max = range.to; + var rTotal = Math.abs(max) + Math.abs(min); + percent = 100 * val / (rTotal === 0 ? rTotal - 0.000001 : rTotal); + } + }); + } + + return { + color: color, + foreColor: foreColor, + percent: percent + }; + } + }, { + key: "calculateDataLabels", + value: function calculateDataLabels(_ref) { + var text = _ref.text, + x = _ref.x, + y = _ref.y, + i = _ref.i, + j = _ref.j, + colorProps = _ref.colorProps, + fontSize = _ref.fontSize; + var w = this.w; + var dataLabelsConfig = w.config.dataLabels; + var graphics = new Graphics(this.ctx); + var dataLabels = new DataLabels(this.ctx); + var elDataLabelsWrap = null; + + if (dataLabelsConfig.enabled) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + var offX = dataLabelsConfig.offsetX; + var offY = dataLabelsConfig.offsetY; + var dataLabelsX = x + offX; + var dataLabelsY = y + parseFloat(dataLabelsConfig.style.fontSize) / 3 + offY; + dataLabels.plotDataLabelsText({ + x: dataLabelsX, + y: dataLabelsY, + text: text, + i: i, + j: j, + color: colorProps.foreColor, + parent: elDataLabelsWrap, + fontSize: fontSize, + dataLabelsConfig: dataLabelsConfig + }); + } + + return elDataLabelsWrap; + } + }, { + key: "addListeners", + value: function addListeners(elRect) { + var graphics = new Graphics(this.ctx); + elRect.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elRect)); + elRect.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elRect)); + elRect.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elRect)); + } + }]); + + return TreemapHelpers; + }(); + + /** + * ApexCharts HeatMap Class. + * @module HeatMap + **/ + + var HeatMap = /*#__PURE__*/function () { + function HeatMap(ctx, xyRatios) { + _classCallCheck(this, HeatMap); + + this.ctx = ctx; + this.w = ctx.w; + this.xRatio = xyRatios.xRatio; + this.yRatio = xyRatios.yRatio; + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation; + this.helpers = new TreemapHelpers(ctx); + this.rectRadius = this.w.config.plotOptions.heatmap.radius; + this.strokeWidth = this.w.config.stroke.show ? this.w.config.stroke.width : 0; + } + + _createClass(HeatMap, [{ + key: "draw", + value: function draw(series) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-heatmap' + }); + ret.attr('clip-path', "url(#gridRectMask".concat(w.globals.cuid, ")")); // width divided into equal parts + + var xDivision = w.globals.gridWidth / w.globals.dataPoints; + var yDivision = w.globals.gridHeight / w.globals.series.length; + var y1 = 0; + var rev = false; + this.negRange = this.helpers.checkColorRange(); + var heatSeries = series.slice(); + + if (w.config.yaxis[0].reversed) { + rev = true; + heatSeries.reverse(); + } + + for (var i = rev ? 0 : heatSeries.length - 1; rev ? i < heatSeries.length : i >= 0; rev ? i++ : i--) { + // el to which series will be drawn + var elSeries = graphics.group({ + class: "apexcharts-series apexcharts-heatmap-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, i); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + var filters = new Filters(this.ctx); + filters.dropShadow(elSeries, shadow, i); + } + + var x1 = 0; + var shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity; + + for (var j = 0; j < heatSeries[i].length; j++) { + var heatColor = this.helpers.getShadeColor(w.config.chart.type, i, j, this.negRange); + var color = heatColor.color; + var heatColorProps = heatColor.colorProps; + + if (w.config.fill.type === 'image') { + var fill = new Fill(this.ctx); + color = fill.fillPath({ + seriesNumber: i, + dataPointIndex: j, + opacity: w.globals.hasNegs ? heatColorProps.percent < 0 ? 1 - (1 + heatColorProps.percent / 100) : shadeIntensity + heatColorProps.percent / 100 : heatColorProps.percent / 100, + patternID: Utils$1.randomId(), + width: w.config.fill.image.width ? w.config.fill.image.width : xDivision, + height: w.config.fill.image.height ? w.config.fill.image.height : yDivision + }); + } + + var radius = this.rectRadius; + var rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius); + rect.attr({ + cx: x1, + cy: y1 + }); + rect.node.classList.add('apexcharts-heatmap-rect'); + elSeries.add(rect); + rect.attr({ + fill: color, + i: i, + index: i, + j: j, + val: heatSeries[i][j], + 'stroke-width': this.strokeWidth, + stroke: w.config.plotOptions.heatmap.useFillColorAsStroke ? color : w.globals.stroke.colors[0], + color: color + }); + this.helpers.addListeners(rect); + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + var speed = 1; + + if (!w.globals.resized) { + speed = w.config.chart.animations.speed; + } + + this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed); + } + + if (w.globals.dataChanged) { + var _speed = 1; + + if (this.dynamicAnim.enabled && w.globals.shouldAnimate) { + _speed = this.dynamicAnim.speed; + var colorFrom = w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].color; + if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)'; + this.animateHeatColor(rect, Utils$1.isColorHex(colorFrom) ? colorFrom : Utils$1.rgb2hex(colorFrom), Utils$1.isColorHex(color) ? color : Utils$1.rgb2hex(color), _speed); + } + } + + var formatter = w.config.dataLabels.formatter; + var formattedText = formatter(w.globals.series[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w: w + }); + var dataLabels = this.helpers.calculateDataLabels({ + text: formattedText, + x: x1 + xDivision / 2, + y: y1 + yDivision / 2, + i: i, + j: j, + colorProps: heatColorProps, + series: heatSeries + }); + + if (dataLabels !== null) { + elSeries.add(dataLabels); + } + + x1 = x1 + xDivision; + } + + y1 = y1 + yDivision; + ret.add(elSeries); + } // adjust yaxis labels for heatmap + + + var yAxisScale = w.globals.yAxisScale[0].result.slice(); + + if (w.config.yaxis[0].reversed) { + yAxisScale.unshift(''); + } else { + yAxisScale.push(''); + } + + w.globals.yAxisScale[0].result = yAxisScale; + var divisor = w.globals.gridHeight / w.globals.series.length; + w.config.yaxis[0].labels.offsetY = -(divisor / 2); + return ret; + } + }, { + key: "animateHeatMap", + value: function animateHeatMap(el, x, y, width, height, speed) { + var animations = new Animations(this.ctx); + animations.animateRect(el, { + x: x + width / 2, + y: y + height / 2, + width: 0, + height: 0 + }, { + x: x, + y: y, + width: width, + height: height + }, speed, function () { + animations.animationCompleted(el); + }); + } + }, { + key: "animateHeatColor", + value: function animateHeatColor(el, colorFrom, colorTo, speed) { + el.attr({ + fill: colorFrom + }).animate(speed).attr({ + fill: colorTo + }); + } + }]); + + return HeatMap; + }(); + + var CircularChartsHelpers = /*#__PURE__*/function () { + function CircularChartsHelpers(ctx) { + _classCallCheck(this, CircularChartsHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(CircularChartsHelpers, [{ + key: "drawYAxisTexts", + value: function drawYAxisTexts(x, y, i, text) { + var w = this.w; + var yaxisConfig = w.config.yaxis[0]; + var formatter = w.globals.yLabelFormatters[0]; + var graphics = new Graphics(this.ctx); + var yaxisLabel = graphics.drawText({ + x: x + yaxisConfig.labels.offsetX, + y: y + yaxisConfig.labels.offsetY, + text: formatter(text, i), + textAnchor: 'middle', + fontSize: yaxisConfig.labels.style.fontSize, + fontFamily: yaxisConfig.labels.style.fontFamily, + foreColor: Array.isArray(yaxisConfig.labels.style.colors) ? yaxisConfig.labels.style.colors[i] : yaxisConfig.labels.style.colors + }); + return yaxisLabel; + } + }]); + + return CircularChartsHelpers; + }(); + + /** + * ApexCharts Pie Class for drawing Pie / Donut Charts. + * @module Pie + **/ + + var Pie = /*#__PURE__*/function () { + function Pie(ctx) { + _classCallCheck(this, Pie); + + this.ctx = ctx; + this.w = ctx.w; + var w = this.w; + this.chartType = this.w.config.chart.type; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + this.animBeginArr = [0]; + this.animDur = 0; + this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels; + this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors; + this.defaultSize = Math.min(w.globals.gridWidth, w.globals.gridHeight); + this.centerY = this.defaultSize / 2; + this.centerX = w.globals.gridWidth / 2; + + if (w.config.chart.type === 'radialBar') { + this.fullAngle = 360; + } else { + this.fullAngle = Math.abs(w.config.plotOptions.pie.endAngle - w.config.plotOptions.pie.startAngle); + } + + this.initialAngle = w.config.plotOptions.pie.startAngle % this.fullAngle; + w.globals.radialSize = this.defaultSize / 2.05 - w.config.stroke.width - (!w.config.chart.sparkline.enabled ? w.config.chart.dropShadow.blur : 0); + this.donutSize = w.globals.radialSize * parseInt(w.config.plotOptions.pie.donut.size, 10) / 100; + this.maxY = 0; + this.sliceLabels = []; + this.sliceSizes = []; + this.prevSectorAngleArr = []; // for dynamic animations + } + + _createClass(Pie, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var self = this; + var w = this.w; + var graphics = new Graphics(this.ctx); + this.ret = graphics.group({ + class: 'apexcharts-pie' + }); + if (w.globals.noData) return this.ret; + var total = 0; + + for (var k = 0; k < series.length; k++) { + // CALCULATE THE TOTAL + total += Utils$1.negToZero(series[k]); + } + + var sectorAngleArr = []; // el to which series will be drawn + + var elSeries = graphics.group(); // prevent division by zero error if there is no data + + if (total === 0) { + total = 0.00001; + } + + series.forEach(function (m) { + _this.maxY = Math.max(_this.maxY, m); + }); // override maxY if user provided in config + + if (w.config.yaxis[0].max) { + this.maxY = w.config.yaxis[0].max; + } + + if (w.config.grid.position === 'back' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret); + } + + for (var i = 0; i < series.length; i++) { + // CALCULATE THE ANGLES + var angle = this.fullAngle * Utils$1.negToZero(series[i]) / total; + sectorAngleArr.push(angle); + + if (this.chartType === 'polarArea') { + sectorAngleArr[i] = this.fullAngle / series.length; + this.sliceSizes.push(w.globals.radialSize * series[i] / this.maxY); + } else { + this.sliceSizes.push(w.globals.radialSize); + } + } + + if (w.globals.dataChanged) { + var prevTotal = 0; + + for (var _k = 0; _k < w.globals.previousPaths.length; _k++) { + // CALCULATE THE PREV TOTAL + prevTotal += Utils$1.negToZero(w.globals.previousPaths[_k]); + } + + var previousAngle; + + for (var _i = 0; _i < w.globals.previousPaths.length; _i++) { + // CALCULATE THE PREVIOUS ANGLES + previousAngle = this.fullAngle * Utils$1.negToZero(w.globals.previousPaths[_i]) / prevTotal; + this.prevSectorAngleArr.push(previousAngle); + } + } // on small chart size after few count of resizes browser window donutSize can be negative + + + if (this.donutSize < 0) { + this.donutSize = 0; + } + + var scaleSize = w.config.plotOptions.pie.customScale; + var halfW = w.globals.gridWidth / 2; + var halfH = w.globals.gridHeight / 2; + var translateX = halfW - w.globals.gridWidth / 2 * scaleSize; + var translateY = halfH - w.globals.gridHeight / 2 * scaleSize; + + if (this.chartType === 'donut') { + // draw the inner circle and add some text to it + var circle = graphics.drawCircle(this.donutSize); + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: w.config.plotOptions.pie.donut.background ? w.config.plotOptions.pie.donut.background : 'transparent' + }); + elSeries.add(circle); + } + + var elG = self.drawArcs(sectorAngleArr, series); // add slice dataLabels at the end + + this.sliceLabels.forEach(function (s) { + elG.add(s); + }); + elSeries.attr({ + transform: "translate(".concat(translateX, ", ").concat(translateY, ") scale(").concat(scaleSize, ")") + }); + elSeries.add(elG); + this.ret.add(elSeries); + + if (this.donutDataLabels.show) { + var dataLabels = this.renderInnerDataLabels(this.donutDataLabels, { + hollowSize: this.donutSize, + centerX: this.centerX, + centerY: this.centerY, + opacity: this.donutDataLabels.show, + translateX: translateX, + translateY: translateY + }); + this.ret.add(dataLabels); + } + + if (w.config.grid.position === 'front' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret); + } + + return this.ret; + } // core function for drawing pie arcs + + }, { + key: "drawArcs", + value: function drawArcs(sectorAngleArr, series) { + var w = this.w; + var filters = new Filters(this.ctx); + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var g = graphics.group({ + class: 'apexcharts-slices' + }); + var startAngle = this.initialAngle; + var prevStartAngle = this.initialAngle; + var endAngle = this.initialAngle; + var prevEndAngle = this.initialAngle; + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0; + + for (var i = 0; i < sectorAngleArr.length; i++) { + var elPieArc = graphics.group({ + class: "apexcharts-series apexcharts-pie-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + g.add(elPieArc); + startAngle = endAngle; + prevStartAngle = prevEndAngle; + endAngle = startAngle + sectorAngleArr[i]; + prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i]; + var angle = endAngle < startAngle ? this.fullAngle + endAngle - startAngle : endAngle - startAngle; + var pathFill = fill.fillPath({ + seriesNumber: i, + size: this.sliceSizes[i], + value: series[i] + }); // additionally, pass size for gradient drawing in the fillPath function + + var path = this.getChangedPath(prevStartAngle, prevEndAngle); + var elPath = graphics.drawPath({ + d: path, + stroke: Array.isArray(this.lineColorArr) ? this.lineColorArr[i] : this.lineColorArr, + strokeWidth: 0, + fill: pathFill, + fillOpacity: w.config.fill.opacity, + classes: "apexcharts-pie-area apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(i) + }); + elPath.attr({ + index: 0, + j: i + }); + filters.setSelectionFilter(elPath, 0, i); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + filters.dropShadow(elPath, shadow, i); + } + + this.addListeners(elPath, this.donutDataLabels); + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:startAngle': startAngle, + 'data:strokeWidth': this.strokeWidth, + 'data:value': series[i] + }); + var labelPosition = { + x: 0, + y: 0 + }; + + if (this.chartType === 'pie' || this.chartType === 'polarArea') { + labelPosition = Utils$1.polarToCartesian(this.centerX, this.centerY, w.globals.radialSize / 1.25 + w.config.plotOptions.pie.dataLabels.offset, (startAngle + angle / 2) % this.fullAngle); + } else if (this.chartType === 'donut') { + labelPosition = Utils$1.polarToCartesian(this.centerX, this.centerY, (w.globals.radialSize + this.donutSize) / 2 + w.config.plotOptions.pie.dataLabels.offset, (startAngle + angle / 2) % this.fullAngle); + } + + elPieArc.add(elPath); // Animation code starts + + var dur = 0; + + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = angle / this.fullAngle * w.config.chart.animations.speed; + if (dur === 0) dur = 1; + this.animDur = dur + this.animDur; + this.animBeginArr.push(this.animDur); + } else { + this.animBeginArr.push(0); + } + + if (this.dynamicAnim && w.globals.dataChanged) { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle: endAngle, + startAngle: startAngle, + prevStartAngle: prevStartAngle, + prevEndAngle: prevEndAngle, + animateStartingPos: true, + i: i, + animBeginArr: this.animBeginArr, + shouldSetPrevPaths: true, + dur: w.config.chart.animations.dynamicAnimation.speed + }); + } else { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle: endAngle, + startAngle: startAngle, + i: i, + totalItems: sectorAngleArr.length - 1, + animBeginArr: this.animBeginArr, + dur: dur + }); + } // animation code ends + + + if (w.config.plotOptions.pie.expandOnClick && this.chartType !== 'polarArea') { + elPath.click(this.pieClicked.bind(this, i)); + } + + if (typeof w.globals.selectedDataPoints[0] !== 'undefined' && w.globals.selectedDataPoints[0].indexOf(i) > -1) { + this.pieClicked(i); + } + + if (w.config.dataLabels.enabled) { + var xPos = labelPosition.x; + var yPos = labelPosition.y; + var text = 100 * angle / this.fullAngle + '%'; + + if (angle !== 0 && w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < sectorAngleArr[i]) { + var formatter = w.config.dataLabels.formatter; + + if (formatter !== undefined) { + text = formatter(w.globals.seriesPercent[i][0], { + seriesIndex: i, + w: w + }); + } + + var foreColor = w.globals.dataLabels.style.colors[i]; + var elPieLabelWrap = graphics.group({ + class: "apexcharts-datalabels" + }); + var elPieLabel = graphics.drawText({ + x: xPos, + y: yPos, + text: text, + textAnchor: 'middle', + fontSize: w.config.dataLabels.style.fontSize, + fontFamily: w.config.dataLabels.style.fontFamily, + fontWeight: w.config.dataLabels.style.fontWeight, + foreColor: foreColor + }); + elPieLabelWrap.add(elPieLabel); + + if (w.config.dataLabels.dropShadow.enabled) { + var textShadow = w.config.dataLabels.dropShadow; + filters.dropShadow(elPieLabel, textShadow); + } + + elPieLabel.node.classList.add('apexcharts-pie-label'); + + if (w.config.chart.animations.animate && w.globals.resized === false) { + elPieLabel.node.classList.add('apexcharts-pie-label-delay'); + elPieLabel.node.style.animationDelay = w.config.chart.animations.speed / 940 + 's'; + } + + this.sliceLabels.push(elPieLabelWrap); + } + } + } + + return g; + } + }, { + key: "addListeners", + value: function addListeners(elPath, dataLabels) { + var graphics = new Graphics(this.ctx); // append filters on mouseenter and mouseleave + + elPath.node.addEventListener('mouseenter', graphics.pathMouseEnter.bind(this, elPath)); + elPath.node.addEventListener('mouseleave', graphics.pathMouseLeave.bind(this, elPath)); + elPath.node.addEventListener('mouseleave', this.revertDataLabelsInner.bind(this, elPath.node, dataLabels)); + elPath.node.addEventListener('mousedown', graphics.pathMouseDown.bind(this, elPath)); + + if (!this.donutDataLabels.total.showAlways) { + elPath.node.addEventListener('mouseenter', this.printDataLabelsInner.bind(this, elPath.node, dataLabels)); + elPath.node.addEventListener('mousedown', this.printDataLabelsInner.bind(this, elPath.node, dataLabels)); + } + } // This function can be used for other circle charts too + + }, { + key: "animatePaths", + value: function animatePaths(el, opts) { + var w = this.w; + var me = this; + var angle = opts.endAngle < opts.startAngle ? this.fullAngle + opts.endAngle - opts.startAngle : opts.endAngle - opts.startAngle; + var prevAngle = angle; + var fromStartAngle = opts.startAngle; + var toStartAngle = opts.startAngle; + + if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) { + fromStartAngle = opts.prevEndAngle; + prevAngle = opts.prevEndAngle < opts.prevStartAngle ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle : opts.prevEndAngle - opts.prevStartAngle; + } + + if (opts.i === w.config.series.length - 1) { + // some adjustments for the last overlapping paths + if (angle + toStartAngle > this.fullAngle) { + opts.endAngle = opts.endAngle - (angle + toStartAngle); + } else if (angle + toStartAngle < this.fullAngle) { + opts.endAngle = opts.endAngle + (this.fullAngle - (angle + toStartAngle)); + } + } + + if (angle === this.fullAngle) angle = this.fullAngle - 0.01; + me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts); + } + }, { + key: "animateArc", + value: function animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) { + var me = this; + var w = this.w; + var animations = new Animations(this.ctx); + var size = opts.size; + var path; + + if (isNaN(fromStartAngle) || isNaN(prevAngle)) { + fromStartAngle = toStartAngle; + prevAngle = angle; + opts.dur = 0; + } + + var currAngle = angle; + var startAngle = toStartAngle; + var fromAngle = fromStartAngle < toStartAngle ? this.fullAngle + fromStartAngle - toStartAngle : fromStartAngle - toStartAngle; + + if (w.globals.dataChanged && opts.shouldSetPrevPaths) { + // to avoid flicker when updating, set prev path first and then animate from there + if (opts.prevEndAngle) { + path = me.getPiePath({ + me: me, + startAngle: opts.prevStartAngle, + angle: opts.prevEndAngle < opts.prevStartAngle ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle : opts.prevEndAngle - opts.prevStartAngle, + size: size + }); + el.attr({ + d: path + }); + } + } + + if (opts.dur !== 0) { + el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]).afterAll(function () { + if (me.chartType === 'pie' || me.chartType === 'donut' || me.chartType === 'polarArea') { + this.animate(w.config.chart.animations.dynamicAnimation.speed).attr({ + 'stroke-width': me.strokeWidth + }); + } + + if (opts.i === w.config.series.length - 1) { + animations.animationCompleted(el); + } + }).during(function (pos) { + currAngle = fromAngle + (angle - fromAngle) * pos; + + if (opts.animateStartingPos) { + currAngle = prevAngle + (angle - prevAngle) * pos; + startAngle = fromStartAngle - prevAngle + (toStartAngle - (fromStartAngle - prevAngle)) * pos; + } + + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: currAngle, + size: size + }); + el.node.setAttribute('data:pathOrig', path); + el.attr({ + d: path + }); + }); + } else { + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: angle, + size: size + }); + + if (!opts.isTrack) { + w.globals.animationEnded = true; + } + + el.node.setAttribute('data:pathOrig', path); + el.attr({ + d: path, + 'stroke-width': me.strokeWidth + }); + } + } + }, { + key: "pieClicked", + value: function pieClicked(i) { + var w = this.w; + var me = this; + var path; + var size = me.sliceSizes[i] + (w.config.plotOptions.pie.expandOnClick ? 4 : 0); + var elPath = w.globals.dom.Paper.select(".apexcharts-".concat(me.chartType.toLowerCase(), "-slice-").concat(i)).members[0]; + + if (elPath.attr('data:pieClicked') === 'true') { + elPath.attr({ + 'data:pieClicked': 'false' + }); + this.revertDataLabelsInner(elPath.node, this.donutDataLabels); + var origPath = elPath.attr('data:pathOrig'); + elPath.attr({ + d: origPath + }); + return; + } else { + // reset all elems + var allEls = w.globals.dom.baseEl.getElementsByClassName('apexcharts-pie-area'); + Array.prototype.forEach.call(allEls, function (pieSlice) { + pieSlice.setAttribute('data:pieClicked', 'false'); + var origPath = pieSlice.getAttribute('data:pathOrig'); + pieSlice.setAttribute('d', origPath); + }); + elPath.attr('data:pieClicked', 'true'); + } + + var startAngle = parseInt(elPath.attr('data:startAngle'), 10); + var angle = parseInt(elPath.attr('data:angle'), 10); + path = me.getPiePath({ + me: me, + startAngle: startAngle, + angle: angle, + size: size + }); + if (angle === 360) return; + elPath.plot(path); + } + }, { + key: "getChangedPath", + value: function getChangedPath(prevStartAngle, prevEndAngle) { + var path = ''; + + if (this.dynamicAnim && this.w.globals.dataChanged) { + path = this.getPiePath({ + me: this, + startAngle: prevStartAngle, + angle: prevEndAngle - prevStartAngle, + size: this.size + }); + } + + return path; + } + }, { + key: "getPiePath", + value: function getPiePath(_ref) { + var me = _ref.me, + startAngle = _ref.startAngle, + angle = _ref.angle, + size = _ref.size; + var path; + var startDeg = startAngle; + var startRadians = Math.PI * (startDeg - 90) / 180; + var endDeg = angle + startAngle; // prevent overlap + + if (Math.ceil(endDeg) >= this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle) { + endDeg = this.fullAngle + this.w.config.plotOptions.pie.startAngle % this.fullAngle - 0.01; + } + + if (Math.ceil(endDeg) > this.fullAngle) endDeg -= this.fullAngle; + var endRadians = Math.PI * (endDeg - 90) / 180; + var x1 = me.centerX + size * Math.cos(startRadians); + var y1 = me.centerY + size * Math.sin(startRadians); + var x2 = me.centerX + size * Math.cos(endRadians); + var y2 = me.centerY + size * Math.sin(endRadians); + var startInner = Utils$1.polarToCartesian(me.centerX, me.centerY, me.donutSize, endDeg); + var endInner = Utils$1.polarToCartesian(me.centerX, me.centerY, me.donutSize, startDeg); + var largeArc = angle > 180 ? 1 : 0; + var pathBeginning = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2]; + + if (me.chartType === 'donut') { + path = [].concat(pathBeginning, ['L', startInner.x, startInner.y, 'A', me.donutSize, me.donutSize, 0, largeArc, 0, endInner.x, endInner.y, 'L', x1, y1, 'z']).join(' '); + } else if (me.chartType === 'pie' || me.chartType === 'polarArea') { + path = [].concat(pathBeginning, ['L', me.centerX, me.centerY, 'L', x1, y1]).join(' '); + } else { + path = [].concat(pathBeginning).join(' '); + } + + return path; + } + }, { + key: "drawPolarElements", + value: function drawPolarElements(parent) { + var w = this.w; + var scale = new Range$1(this.ctx); + var graphics = new Graphics(this.ctx); + var helpers = new CircularChartsHelpers(this.ctx); + var gCircles = graphics.group(); + var gYAxis = graphics.group(); + var yScale = scale.niceScale(0, Math.ceil(this.maxY), w.config.yaxis[0].tickAmount, 0, true); + var yTexts = yScale.result.reverse(); + var len = yScale.result.length; + this.maxY = yScale.niceMax; + var circleSize = w.globals.radialSize; + var diff = circleSize / (len - 1); + + for (var i = 0; i < len - 1; i++) { + var circle = graphics.drawCircle(circleSize); + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: 'none', + 'stroke-width': w.config.plotOptions.polarArea.rings.strokeWidth, + stroke: w.config.plotOptions.polarArea.rings.strokeColor + }); + + if (w.config.yaxis[0].show) { + var yLabel = helpers.drawYAxisTexts(this.centerX, this.centerY - circleSize + parseInt(w.config.yaxis[0].labels.style.fontSize, 10) / 2, i, yTexts[i]); + gYAxis.add(yLabel); + } + + gCircles.add(circle); + circleSize = circleSize - diff; + } + + this.drawSpokes(parent); + parent.add(gCircles); + parent.add(gYAxis); + } + }, { + key: "renderInnerDataLabels", + value: function renderInnerDataLabels(dataLabelsConfig, opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var g = graphics.group({ + class: 'apexcharts-datalabels-group', + transform: "translate(".concat(opts.translateX ? opts.translateX : 0, ", ").concat(opts.translateY ? opts.translateY : 0, ") scale(").concat(w.config.plotOptions.pie.customScale, ")") + }); + var showTotal = dataLabelsConfig.total.show; + g.node.style.opacity = opts.opacity; + var x = opts.centerX; + var y = opts.centerY; + var labelColor, valueColor; + + if (dataLabelsConfig.name.color === undefined) { + labelColor = w.globals.colors[0]; + } else { + labelColor = dataLabelsConfig.name.color; + } + + var labelFontSize = dataLabelsConfig.name.fontSize; + var labelFontFamily = dataLabelsConfig.name.fontFamily; + var labelFontWeight = dataLabelsConfig.name.fontWeight; + + if (dataLabelsConfig.value.color === undefined) { + valueColor = w.config.chart.foreColor; + } else { + valueColor = dataLabelsConfig.value.color; + } + + var lbFormatter = dataLabelsConfig.value.formatter; + var val = ''; + var name = ''; + + if (showTotal) { + labelColor = dataLabelsConfig.total.color; + labelFontSize = dataLabelsConfig.total.fontSize; + labelFontFamily = dataLabelsConfig.total.fontFamily; + labelFontWeight = dataLabelsConfig.total.fontWeight; + name = dataLabelsConfig.total.label; + val = dataLabelsConfig.total.formatter(w); + } else { + if (w.globals.series.length === 1) { + val = lbFormatter(w.globals.series[0], w); + name = w.globals.seriesNames[0]; + } + } + + if (name) { + name = dataLabelsConfig.name.formatter(name, dataLabelsConfig.total.show, w); + } + + if (dataLabelsConfig.name.show) { + var elLabel = graphics.drawText({ + x: x, + y: y + parseFloat(dataLabelsConfig.name.offsetY), + text: name, + textAnchor: 'middle', + foreColor: labelColor, + fontSize: labelFontSize, + fontWeight: labelFontWeight, + fontFamily: labelFontFamily + }); + elLabel.node.classList.add('apexcharts-datalabel-label'); + g.add(elLabel); + } + + if (dataLabelsConfig.value.show) { + var valOffset = dataLabelsConfig.name.show ? parseFloat(dataLabelsConfig.value.offsetY) + 16 : dataLabelsConfig.value.offsetY; + var elValue = graphics.drawText({ + x: x, + y: y + valOffset, + text: val, + textAnchor: 'middle', + foreColor: valueColor, + fontWeight: dataLabelsConfig.value.fontWeight, + fontSize: dataLabelsConfig.value.fontSize, + fontFamily: dataLabelsConfig.value.fontFamily + }); + elValue.node.classList.add('apexcharts-datalabel-value'); + g.add(elValue); + } // for a multi-series circle chart, we need to show total value instead of first series labels + + + return g; + } + /** + * + * @param {string} name - The name of the series + * @param {string} val - The value of that series + * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total + */ + + }, { + key: "printInnerLabels", + value: function printInnerLabels(labelsConfig, name, val, el) { + var w = this.w; + var labelColor; + + if (el) { + if (labelsConfig.name.color === undefined) { + labelColor = w.globals.colors[parseInt(el.parentNode.getAttribute('rel'), 10) - 1]; + } else { + labelColor = labelsConfig.name.color; + } + } else { + if (w.globals.series.length > 1 && labelsConfig.total.show) { + labelColor = labelsConfig.total.color; + } + } + + var elLabel = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-label'); + var elValue = w.globals.dom.baseEl.querySelector('.apexcharts-datalabel-value'); + var lbFormatter = labelsConfig.value.formatter; + val = lbFormatter(val, w); // we need to show Total Val - so get the formatter of it + + if (!el && typeof labelsConfig.total.formatter === 'function') { + val = labelsConfig.total.formatter(w); + } + + var isTotal = name === labelsConfig.total.label; + name = labelsConfig.name.formatter(name, isTotal, w); + + if (elLabel !== null) { + elLabel.textContent = name; + } + + if (elValue !== null) { + elValue.textContent = val; + } + + if (elLabel !== null) { + elLabel.style.fill = labelColor; + } + } + }, { + key: "printDataLabelsInner", + value: function printDataLabelsInner(el, dataLabelsConfig) { + var w = this.w; + var val = el.getAttribute('data:value'); + var name = w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel'), 10) - 1]; + + if (w.globals.series.length > 1) { + this.printInnerLabels(dataLabelsConfig, name, val, el); + } + + var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group'); + + if (dataLabelsGroup !== null) { + dataLabelsGroup.style.opacity = 1; + } + } + }, { + key: "drawSpokes", + value: function drawSpokes(parent) { + var _this2 = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var spokeConfig = w.config.plotOptions.polarArea.spokes; + if (spokeConfig.strokeWidth === 0) return; + var spokes = []; + var angleDivision = 360 / w.globals.series.length; + + for (var i = 0; i < w.globals.series.length; i++) { + spokes.push(Utils$1.polarToCartesian(this.centerX, this.centerY, w.globals.radialSize, w.config.plotOptions.pie.startAngle + angleDivision * i)); + } + + spokes.forEach(function (p, i) { + var line = graphics.drawLine(p.x, p.y, _this2.centerX, _this2.centerY, Array.isArray(spokeConfig.connectorColors) ? spokeConfig.connectorColors[i] : spokeConfig.connectorColors); + parent.add(line); + }); + } + }, { + key: "revertDataLabelsInner", + value: function revertDataLabelsInner(elem, dataLabelsConfig, event) { + var _this3 = this; + + var w = this.w; + var dataLabelsGroup = w.globals.dom.baseEl.querySelector('.apexcharts-datalabels-group'); + var sliceOut = false; + var slices = w.globals.dom.baseEl.getElementsByClassName("apexcharts-pie-area"); + + var selectSlice = function selectSlice(_ref2) { + var makeSliceOut = _ref2.makeSliceOut, + printLabel = _ref2.printLabel; + Array.prototype.forEach.call(slices, function (s) { + if (s.getAttribute('data:pieClicked') === 'true') { + if (makeSliceOut) { + sliceOut = true; + } + + if (printLabel) { + _this3.printDataLabelsInner(s, dataLabelsConfig); + } + } + }); + }; + + selectSlice({ + makeSliceOut: true, + printLabel: false + }); + + if (dataLabelsConfig.total.show && w.globals.series.length > 1) { + if (sliceOut && !dataLabelsConfig.total.showAlways) { + selectSlice({ + makeSliceOut: false, + printLabel: true + }); + } else { + this.printInnerLabels(dataLabelsConfig, dataLabelsConfig.total.label, dataLabelsConfig.total.formatter(w)); + } + } else { + selectSlice({ + makeSliceOut: false, + printLabel: true + }); + + if (!sliceOut) { + if (w.globals.selectedDataPoints.length && w.globals.series.length > 1) { + if (w.globals.selectedDataPoints[0].length > 0) { + var index = w.globals.selectedDataPoints[0]; + var el = w.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(), "-slice-").concat(index)); + this.printDataLabelsInner(el, dataLabelsConfig); + } else if (dataLabelsGroup && w.globals.selectedDataPoints.length && w.globals.selectedDataPoints[0].length === 0) { + dataLabelsGroup.style.opacity = 0; + } + } else { + if (dataLabelsGroup && w.globals.series.length > 1) { + dataLabelsGroup.style.opacity = 0; + } + } + } + } + } + }]); + + return Pie; + }(); + + /** + * ApexCharts Radar Class for Spider/Radar Charts. + * @module Radar + **/ + + var Radar = /*#__PURE__*/function () { + function Radar(ctx) { + _classCallCheck(this, Radar); + + this.ctx = ctx; + this.w = ctx.w; + this.chartType = this.w.config.chart.type; + this.initialAnim = this.w.config.chart.animations.enabled; + this.dynamicAnim = this.initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled; + this.animDur = 0; + var w = this.w; + this.graphics = new Graphics(this.ctx); + this.lineColorArr = w.globals.stroke.colors !== undefined ? w.globals.stroke.colors : w.globals.colors; + this.defaultSize = w.globals.svgHeight < w.globals.svgWidth ? w.globals.gridHeight + w.globals.goldenPadding * 1.5 : w.globals.gridWidth; + this.isLog = w.config.yaxis[0].logarithmic; + this.coreUtils = new CoreUtils(this.ctx); + this.maxValue = this.isLog ? this.coreUtils.getLogVal(w.globals.maxY, 0) : w.globals.maxY; + this.minValue = this.isLog ? this.coreUtils.getLogVal(this.w.globals.minY, 0) : w.globals.minY; + this.polygons = w.config.plotOptions.radar.polygons; + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0; + this.size = this.defaultSize / 2.1 - this.strokeWidth - w.config.chart.dropShadow.blur; + + if (w.config.xaxis.labels.show) { + this.size = this.size - w.globals.xAxisLabelsWidth / 1.75; + } + + if (w.config.plotOptions.radar.size !== undefined) { + this.size = w.config.plotOptions.radar.size; + } + + this.dataRadiusOfPercent = []; + this.dataRadius = []; + this.angleArr = []; + this.yaxisLabelsTextsPos = []; + } + + _createClass(Radar, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var w = this.w; + var fill = new Fill(this.ctx); + var allSeries = []; + var dataLabels = new DataLabels(this.ctx); + + if (series.length) { + this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length; + } + + this.disAngle = Math.PI * 2 / this.dataPointsLen; + var halfW = w.globals.gridWidth / 2; + var halfH = w.globals.gridHeight / 2; + var translateX = halfW + w.config.plotOptions.radar.offsetX; + var translateY = halfH + w.config.plotOptions.radar.offsetY; + var ret = this.graphics.group({ + class: 'apexcharts-radar-series apexcharts-plot-series', + transform: "translate(".concat(translateX || 0, ", ").concat(translateY || 0, ")") + }); + var dataPointsPos = []; + var elPointsMain = null; + var elDataPointsMain = null; + this.yaxisLabels = this.graphics.group({ + class: 'apexcharts-yaxis' + }); + series.forEach(function (s, i) { + var longestSeries = s.length === w.globals.dataPoints; // el to which series will be drawn + + var elSeries = _this.graphics.group().attr({ + class: "apexcharts-series", + 'data:longestSeries': longestSeries, + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + + _this.dataRadiusOfPercent[i] = []; + _this.dataRadius[i] = []; + _this.angleArr[i] = []; + s.forEach(function (dv, j) { + var range = Math.abs(_this.maxValue - _this.minValue); + dv = dv + Math.abs(_this.minValue); + + if (_this.isLog) { + dv = _this.coreUtils.getLogVal(dv, 0); + } + + _this.dataRadiusOfPercent[i][j] = dv / range; + _this.dataRadius[i][j] = _this.dataRadiusOfPercent[i][j] * _this.size; + _this.angleArr[i][j] = j * _this.disAngle; + }); + dataPointsPos = _this.getDataPointsPos(_this.dataRadius[i], _this.angleArr[i]); + + var paths = _this.createPaths(dataPointsPos, { + x: 0, + y: 0 + }); // points + + + elPointsMain = _this.graphics.group({ + class: 'apexcharts-series-markers-wrap apexcharts-element-hidden' + }); // datapoints + + elDataPointsMain = _this.graphics.group({ + class: "apexcharts-datalabels", + 'data:realIndex': i + }); + w.globals.delayedElements.push({ + el: elPointsMain.node, + index: i + }); + var defaultRenderedPathOptions = { + i: i, + realIndex: i, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-radar", + shouldClipToGrid: false, + bindEventsOnPaths: false, + stroke: w.globals.stroke.colors[i], + strokeLineCap: w.config.stroke.lineCap + }; + var pathFrom = null; + + if (w.globals.previousPaths.length > 0) { + pathFrom = _this.getPreviousPath(i); + } + + for (var p = 0; p < paths.linePathsTo.length; p++) { + var renderedLinePath = _this.graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom, + pathTo: paths.linePathsTo[p], + strokeWidth: Array.isArray(_this.strokeWidth) ? _this.strokeWidth[i] : _this.strokeWidth, + fill: 'none', + drawShadow: false + })); + + elSeries.add(renderedLinePath); + var pathFill = fill.fillPath({ + seriesNumber: i + }); + + var renderedAreaPath = _this.graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom, + pathTo: paths.areaPathsTo[p], + strokeWidth: 0, + fill: pathFill, + drawShadow: false + })); + + if (w.config.chart.dropShadow.enabled) { + var filters = new Filters(_this.ctx); + var shadow = w.config.chart.dropShadow; + filters.dropShadow(renderedAreaPath, Object.assign({}, shadow, { + noUserSpaceOnUse: true + }), i); + } + + elSeries.add(renderedAreaPath); + } + + s.forEach(function (sj, j) { + var markers = new Markers(_this.ctx); + var opts = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex: j + }); + + var point = _this.graphics.drawMarker(dataPointsPos[j].x, dataPointsPos[j].y, opts); + + point.attr('rel', j); + point.attr('j', j); + point.attr('index', i); + point.node.setAttribute('default-marker-size', opts.pSize); + + var elPointsWrap = _this.graphics.group({ + class: 'apexcharts-series-markers' + }); + + if (elPointsWrap) { + elPointsWrap.add(point); + } + + elPointsMain.add(elPointsWrap); + elSeries.add(elPointsMain); + var dataLabelsConfig = w.config.dataLabels; + + if (dataLabelsConfig.enabled) { + var text = dataLabelsConfig.formatter(w.globals.series[i][j], { + seriesIndex: i, + dataPointIndex: j, + w: w + }); + dataLabels.plotDataLabelsText({ + x: dataPointsPos[j].x, + y: dataPointsPos[j].y, + text: text, + textAnchor: 'middle', + i: i, + j: i, + parent: elDataPointsMain, + offsetCorrection: false, + dataLabelsConfig: _objectSpread2({}, dataLabelsConfig) + }); + } + + elSeries.add(elDataPointsMain); + }); + allSeries.push(elSeries); + }); + this.drawPolygons({ + parent: ret + }); + + if (w.config.xaxis.labels.show) { + var xaxisTexts = this.drawXAxisTexts(); + ret.add(xaxisTexts); + } + + allSeries.forEach(function (elS) { + ret.add(elS); + }); + ret.add(this.yaxisLabels); + return ret; + } + }, { + key: "drawPolygons", + value: function drawPolygons(opts) { + var _this2 = this; + + var w = this.w; + var parent = opts.parent; + var helpers = new CircularChartsHelpers(this.ctx); + var yaxisTexts = w.globals.yAxisScale[0].result.reverse(); + var layers = yaxisTexts.length; + var radiusSizes = []; + var layerDis = this.size / (layers - 1); + + for (var i = 0; i < layers; i++) { + radiusSizes[i] = layerDis * i; + } + + radiusSizes.reverse(); + var polygonStrings = []; + var lines = []; + radiusSizes.forEach(function (radiusSize, r) { + var polygon = Utils$1.getPolygonPos(radiusSize, _this2.dataPointsLen); + var string = ''; + polygon.forEach(function (p, i) { + if (r === 0) { + var line = _this2.graphics.drawLine(p.x, p.y, 0, 0, Array.isArray(_this2.polygons.connectorColors) ? _this2.polygons.connectorColors[i] : _this2.polygons.connectorColors); + + lines.push(line); + } + + if (i === 0) { + _this2.yaxisLabelsTextsPos.push({ + x: p.x, + y: p.y + }); + } + + string += p.x + ',' + p.y + ' '; + }); + polygonStrings.push(string); + }); + polygonStrings.forEach(function (p, i) { + var strokeColors = _this2.polygons.strokeColors; + var strokeWidth = _this2.polygons.strokeWidth; + + var polygon = _this2.graphics.drawPolygon(p, Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, Array.isArray(strokeWidth) ? strokeWidth[i] : strokeWidth, w.globals.radarPolygons.fill.colors[i]); + + parent.add(polygon); + }); + lines.forEach(function (l) { + parent.add(l); + }); + + if (w.config.yaxis[0].show) { + this.yaxisLabelsTextsPos.forEach(function (p, i) { + var yText = helpers.drawYAxisTexts(p.x, p.y, i, yaxisTexts[i]); + + _this2.yaxisLabels.add(yText); + }); + } + } + }, { + key: "drawXAxisTexts", + value: function drawXAxisTexts() { + var _this3 = this; + + var w = this.w; + var xaxisLabelsConfig = w.config.xaxis.labels; + var elXAxisWrap = this.graphics.group({ + class: 'apexcharts-xaxis' + }); + var polygonPos = Utils$1.getPolygonPos(this.size, this.dataPointsLen); + w.globals.labels.forEach(function (label, i) { + var formatter = w.config.xaxis.labels.formatter; + var dataLabels = new DataLabels(_this3.ctx); + + if (polygonPos[i]) { + var textPos = _this3.getTextPos(polygonPos[i], _this3.size); + + var text = formatter(label, { + seriesIndex: -1, + dataPointIndex: i, + w: w + }); + dataLabels.plotDataLabelsText({ + x: textPos.newX, + y: textPos.newY, + text: text, + textAnchor: textPos.textAnchor, + i: i, + j: i, + parent: elXAxisWrap, + color: Array.isArray(xaxisLabelsConfig.style.colors) && xaxisLabelsConfig.style.colors[i] ? xaxisLabelsConfig.style.colors[i] : '#a8a8a8', + dataLabelsConfig: _objectSpread2({ + textAnchor: textPos.textAnchor, + dropShadow: { + enabled: false + } + }, xaxisLabelsConfig), + offsetCorrection: false + }); + } + }); + return elXAxisWrap; + } + }, { + key: "createPaths", + value: function createPaths(pos, origin) { + var _this4 = this; + + var linePathsTo = []; + var linePathsFrom = []; + var areaPathsTo = []; + var areaPathsFrom = []; + + if (pos.length) { + linePathsFrom = [this.graphics.move(origin.x, origin.y)]; + areaPathsFrom = [this.graphics.move(origin.x, origin.y)]; + var linePathTo = this.graphics.move(pos[0].x, pos[0].y); + var areaPathTo = this.graphics.move(pos[0].x, pos[0].y); + pos.forEach(function (p, i) { + linePathTo += _this4.graphics.line(p.x, p.y); + areaPathTo += _this4.graphics.line(p.x, p.y); + + if (i === pos.length - 1) { + linePathTo += 'Z'; + areaPathTo += 'Z'; + } + }); + linePathsTo.push(linePathTo); + areaPathsTo.push(areaPathTo); + } + + return { + linePathsFrom: linePathsFrom, + linePathsTo: linePathsTo, + areaPathsFrom: areaPathsFrom, + areaPathsTo: areaPathsTo + }; + } + }, { + key: "getTextPos", + value: function getTextPos(pos, polygonSize) { + var limit = 10; + var textAnchor = 'middle'; + var newX = pos.x; + var newY = pos.y; + + if (Math.abs(pos.x) >= limit) { + if (pos.x > 0) { + textAnchor = 'start'; + newX += 10; + } else if (pos.x < 0) { + textAnchor = 'end'; + newX -= 10; + } + } else { + textAnchor = 'middle'; + } + + if (Math.abs(pos.y) >= polygonSize - limit) { + if (pos.y < 0) { + newY -= 10; + } else if (pos.y > 0) { + newY += 10; + } + } + + return { + textAnchor: textAnchor, + newX: newX, + newY: newY + }; + } + }, { + key: "getPreviousPath", + value: function getPreviousPath(realIndex) { + var w = this.w; + var pathFrom = null; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if (gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[0].d; + } + } + } + + return pathFrom; + } + }, { + key: "getDataPointsPos", + value: function getDataPointsPos(dataRadiusArr, angleArr) { + var dataPointsLen = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.dataPointsLen; + dataRadiusArr = dataRadiusArr || []; + angleArr = angleArr || []; + var dataPointsPosArray = []; + + for (var j = 0; j < dataPointsLen; j++) { + var curPointPos = {}; + curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]); + curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]); + dataPointsPosArray.push(curPointPos); + } + + return dataPointsPosArray; + } + }]); + + return Radar; + }(); + + /** + * ApexCharts Radial Class for drawing Circle / Semi Circle Charts. + * @module Radial + **/ + + var Radial = /*#__PURE__*/function (_Pie) { + _inherits(Radial, _Pie); + + var _super = _createSuper(Radial); + + function Radial(ctx) { + var _this; + + _classCallCheck(this, Radial); + + _this = _super.call(this, ctx); + _this.ctx = ctx; + _this.w = ctx.w; + _this.animBeginArr = [0]; + _this.animDur = 0; + var w = _this.w; + _this.startAngle = w.config.plotOptions.radialBar.startAngle; + _this.endAngle = w.config.plotOptions.radialBar.endAngle; + _this.totalAngle = Math.abs(w.config.plotOptions.radialBar.endAngle - w.config.plotOptions.radialBar.startAngle); + _this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle; + _this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle; + _this.donutDataLabels = _this.w.config.plotOptions.radialBar.dataLabels; + _this.radialDataLabels = _this.donutDataLabels; // make a copy for easy reference + + if (!_this.trackStartAngle) _this.trackStartAngle = _this.startAngle; + if (!_this.trackEndAngle) _this.trackEndAngle = _this.endAngle; + if (_this.endAngle === 360) _this.endAngle = 359.99; + _this.margin = parseInt(w.config.plotOptions.radialBar.track.margin, 10); + return _this; + } + + _createClass(Radial, [{ + key: "draw", + value: function draw(series) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-radialbar' + }); + if (w.globals.noData) return ret; + var elSeries = graphics.group(); + var centerY = this.defaultSize / 2; + var centerX = w.globals.gridWidth / 2; + var size = this.defaultSize / 2.05; + + if (!w.config.chart.sparkline.enabled) { + size = size - w.config.stroke.width - w.config.chart.dropShadow.blur; + } + + var colorArr = w.globals.fill.colors; + + if (w.config.plotOptions.radialBar.track.show) { + var elTracks = this.drawTracks({ + size: size, + centerX: centerX, + centerY: centerY, + colorArr: colorArr, + series: series + }); + elSeries.add(elTracks); + } + + var elG = this.drawArcs({ + size: size, + centerX: centerX, + centerY: centerY, + colorArr: colorArr, + series: series + }); + var totalAngle = 360; + + if (w.config.plotOptions.radialBar.startAngle < 0) { + totalAngle = this.totalAngle; + } + + var angleRatio = (360 - totalAngle) / 360; + w.globals.radialSize = size - size * angleRatio; + + if (this.radialDataLabels.value.show) { + var offset = Math.max(this.radialDataLabels.value.offsetY, this.radialDataLabels.name.offsetY); + w.globals.radialSize += offset * angleRatio; + } + + elSeries.add(elG.g); + + if (w.config.plotOptions.radialBar.hollow.position === 'front') { + elG.g.add(elG.elHollow); + + if (elG.dataLabels) { + elG.g.add(elG.dataLabels); + } + } + + ret.add(elSeries); + return ret; + } + }, { + key: "drawTracks", + value: function drawTracks(opts) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var g = graphics.group({ + class: 'apexcharts-tracks' + }); + var filters = new Filters(this.ctx); + var fill = new Fill(this.ctx); + var strokeWidth = this.getStrokeWidth(opts); + opts.size = opts.size - strokeWidth / 2; + + for (var i = 0; i < opts.series.length; i++) { + var elRadialBarTrack = graphics.group({ + class: 'apexcharts-radialbar-track apexcharts-track' + }); + g.add(elRadialBarTrack); + elRadialBarTrack.attr({ + rel: i + 1 + }); + opts.size = opts.size - strokeWidth - this.margin; + var trackConfig = w.config.plotOptions.radialBar.track; + var pathFill = fill.fillPath({ + seriesNumber: 0, + size: opts.size, + fillColors: Array.isArray(trackConfig.background) ? trackConfig.background[i] : trackConfig.background, + solid: true + }); + var startAngle = this.trackStartAngle; + var endAngle = this.trackEndAngle; + if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) endAngle = 360 - Math.abs(this.startAngle) - 0.1; + var elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth: strokeWidth * parseInt(trackConfig.strokeWidth, 10) / 100, + fill: 'none', + strokeOpacity: trackConfig.opacity, + classes: 'apexcharts-radialbar-area' + }); + + if (trackConfig.dropShadow.enabled) { + var shadow = trackConfig.dropShadow; + filters.dropShadow(elPath, shadow); + } + + elRadialBarTrack.add(elPath); + elPath.attr('id', 'apexcharts-radialbarTrack-' + i); + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle: endAngle, + startAngle: startAngle, + size: opts.size, + i: i, + totalItems: 2, + animBeginArr: 0, + dur: 0, + isTrack: true, + easing: w.globals.easing + }); + } + + return g; + } + }, { + key: "drawArcs", + value: function drawArcs(opts) { + var w = this.w; // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series + + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var filters = new Filters(this.ctx); + var g = graphics.group(); + var strokeWidth = this.getStrokeWidth(opts); + opts.size = opts.size - strokeWidth / 2; + var hollowFillID = w.config.plotOptions.radialBar.hollow.background; + var hollowSize = opts.size - strokeWidth * opts.series.length - this.margin * opts.series.length - strokeWidth * parseInt(w.config.plotOptions.radialBar.track.strokeWidth, 10) / 100 / 2; + var hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin; + + if (w.config.plotOptions.radialBar.hollow.image !== undefined) { + hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID); + } + + var elHollow = this.drawHollow({ + size: hollowRadius, + centerX: opts.centerX, + centerY: opts.centerY, + fill: hollowFillID ? hollowFillID : 'transparent' + }); + + if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) { + var shadow = w.config.plotOptions.radialBar.hollow.dropShadow; + filters.dropShadow(elHollow, shadow); + } + + var shown = 1; + + if (!this.radialDataLabels.total.show && w.globals.series.length > 1) { + shown = 0; + } + + var dataLabels = null; + + if (this.radialDataLabels.show) { + dataLabels = this.renderInnerDataLabels(this.radialDataLabels, { + hollowSize: hollowSize, + centerX: opts.centerX, + centerY: opts.centerY, + opacity: shown + }); + } + + if (w.config.plotOptions.radialBar.hollow.position === 'back') { + g.add(elHollow); + + if (dataLabels) { + g.add(dataLabels); + } + } + + var reverseLoop = false; + + if (w.config.plotOptions.radialBar.inverseOrder) { + reverseLoop = true; + } + + for (var i = reverseLoop ? opts.series.length - 1 : 0; reverseLoop ? i >= 0 : i < opts.series.length; reverseLoop ? i-- : i++) { + var elRadialBarArc = graphics.group({ + class: "apexcharts-series apexcharts-radial-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]) + }); + g.add(elRadialBarArc); + elRadialBarArc.attr({ + rel: i + 1, + 'data:realIndex': i + }); + this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i); + opts.size = opts.size - strokeWidth - this.margin; + var pathFill = fill.fillPath({ + seriesNumber: i, + size: opts.size, + value: opts.series[i] + }); + var startAngle = this.startAngle; + var prevStartAngle = void 0; // if data exceeds 100, make it 100 + + var dataValue = Utils$1.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100; + var endAngle = Math.round(this.totalAngle * dataValue) + this.startAngle; + var prevEndAngle = void 0; + + if (w.globals.dataChanged) { + prevStartAngle = this.startAngle; + prevEndAngle = Math.round(this.totalAngle * Utils$1.negToZero(w.globals.previousPaths[i]) / 100) + prevStartAngle; + } + + var currFullAngle = Math.abs(endAngle) + Math.abs(startAngle); + + if (currFullAngle >= 360) { + endAngle = endAngle - 0.01; + } + + var prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle); + + if (prevFullAngle >= 360) { + prevEndAngle = prevEndAngle - 0.01; + } + + var angle = endAngle - startAngle; + var dashArray = Array.isArray(w.config.stroke.dashArray) ? w.config.stroke.dashArray[i] : w.config.stroke.dashArray; + var elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth: strokeWidth, + fill: 'none', + fillOpacity: w.config.fill.opacity, + classes: 'apexcharts-radialbar-area apexcharts-radialbar-slice-' + i, + strokeDashArray: dashArray + }); + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:value': opts.series[i] + }); + + if (w.config.chart.dropShadow.enabled) { + var _shadow = w.config.chart.dropShadow; + filters.dropShadow(elPath, _shadow, i); + } + + filters.setSelectionFilter(elPath, 0, i); + this.addListeners(elPath, this.radialDataLabels); + elRadialBarArc.add(elPath); + elPath.attr({ + index: 0, + j: i + }); + var dur = 0; + + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = w.config.chart.animations.speed; + } + + if (w.globals.dataChanged) { + dur = w.config.chart.animations.dynamicAnimation.speed; + } + + this.animDur = dur / (opts.series.length * 1.2) + this.animDur; + this.animBeginArr.push(this.animDur); + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle: endAngle, + startAngle: startAngle, + prevEndAngle: prevEndAngle, + prevStartAngle: prevStartAngle, + size: opts.size, + i: i, + totalItems: 2, + animBeginArr: this.animBeginArr, + dur: dur, + shouldSetPrevPaths: true, + easing: w.globals.easing + }); + } + + return { + g: g, + elHollow: elHollow, + dataLabels: dataLabels + }; + } + }, { + key: "drawHollow", + value: function drawHollow(opts) { + var graphics = new Graphics(this.ctx); + var circle = graphics.drawCircle(opts.size * 2); + circle.attr({ + class: 'apexcharts-radialbar-hollow', + cx: opts.centerX, + cy: opts.centerY, + r: opts.size, + fill: opts.fill + }); + return circle; + } + }, { + key: "drawHollowImage", + value: function drawHollowImage(opts, g, hollowSize, hollowFillID) { + var w = this.w; + var fill = new Fill(this.ctx); + var randID = Utils$1.randomId(); + var hollowFillImg = w.config.plotOptions.radialBar.hollow.image; + + if (w.config.plotOptions.radialBar.hollow.imageClipped) { + fill.clippedImgArea({ + width: hollowSize, + height: hollowSize, + image: hollowFillImg, + patternID: "pattern".concat(w.globals.cuid).concat(randID) + }); + hollowFillID = "url(#pattern".concat(w.globals.cuid).concat(randID, ")"); + } else { + var imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth; + var imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight; + + if (imgWidth === undefined && imgHeight === undefined) { + var image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) { + this.move(opts.centerX - loader.width / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - loader.height / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY); + }); + g.add(image); + } else { + var _image = w.globals.dom.Paper.image(hollowFillImg).loaded(function (loader) { + this.move(opts.centerX - imgWidth / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetX, opts.centerY - imgHeight / 2 + w.config.plotOptions.radialBar.hollow.imageOffsetY); + this.size(imgWidth, imgHeight); + }); + + g.add(_image); + } + } + + return hollowFillID; + } + }, { + key: "getStrokeWidth", + value: function getStrokeWidth(opts) { + var w = this.w; + return opts.size * (100 - parseInt(w.config.plotOptions.radialBar.hollow.size, 10)) / 100 / (opts.series.length + 1) - this.margin; + } + }]); + + return Radial; + }(Pie); + + /** + * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars. + * + * @module RangeBar + **/ + + var RangeBar = /*#__PURE__*/function (_Bar) { + _inherits(RangeBar, _Bar); + + var _super = _createSuper(RangeBar); + + function RangeBar() { + _classCallCheck(this, RangeBar); + + return _super.apply(this, arguments); + } + + _createClass(RangeBar, [{ + key: "draw", + value: function draw(series, seriesIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); + this.rangeBarOptions = this.w.config.plotOptions.rangeBar; + this.series = series; + this.seriesRangeStart = w.globals.seriesRangeStart; + this.seriesRangeEnd = w.globals.seriesRangeEnd; + this.barHelpers.initVariables(series); + var ret = graphics.group({ + class: 'apexcharts-rangebar-series apexcharts-plot-series' + }); + + for (var i = 0; i < series.length; i++) { + var x = void 0, + y = void 0, + xDivision = void 0, + // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision = void 0, + // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH = void 0, + // zeroH is the baseline where 0 meets y axis + zeroW = void 0; // zeroW is the baseline where 0 meets x axis + + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; // el to which series will be drawn + + var elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }); + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex); + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1; + } + + var barHeight = 0; + var barWidth = 0; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + var initPositions = this.barHelpers.initialPositions(); + y = initPositions.y; + zeroW = initPositions.zeroW; + x = initPositions.x; + barWidth = initPositions.barWidth; + xDivision = initPositions.xDivision; + zeroH = initPositions.zeroH; // eldatalabels + + var elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var elGoalsMarkers = graphics.group({ + class: 'apexcharts-rangebar-goals-markers', + style: "pointer-events: none" + }); + + for (var j = 0; j < w.globals.dataPoints; j++) { + var strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex); + var y1 = this.seriesRangeStart[i][j]; + var y2 = this.seriesRangeEnd[i][j]; + var paths = null; + var barYPosition = null; + var params = { + x: x, + y: y, + strokeWidth: strokeWidth, + elSeries: elSeries + }; + yDivision = initPositions.yDivision; + barHeight = initPositions.barHeight; + + if (this.isHorizontal) { + barYPosition = y + barHeight * this.visibleI; + var seriesLen = this.seriesLen; + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1; + } + + var srty = (yDivision - barHeight * seriesLen) / 2; + + if (typeof w.config.series[i].data[j] === 'undefined') { + // no data exists for further indexes, hence we need to get out the innr loop. + // As we are iterating over total datapoints, there is a possiblity the series might not have data for j index + break; + } + + if (w.config.series[i].data[j].x) { + var positions = this.detectOverlappingBars({ + i: i, + j: j, + barYPosition: barYPosition, + srty: srty, + barHeight: barHeight, + yDivision: yDivision, + initPositions: initPositions + }); + barHeight = positions.barHeight; + barYPosition = positions.barYPosition; + } + + paths = this.drawRangeBarPaths(_objectSpread2({ + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + barHeight: barHeight, + barYPosition: barYPosition, + zeroW: zeroW, + yDivision: yDivision, + y1: y1, + y2: y2 + }, params)); + barWidth = paths.barWidth; + } else { + paths = this.drawRangeColumnPaths(_objectSpread2({ + indexes: { + i: i, + j: j, + realIndex: realIndex + }, + zeroH: zeroH, + barWidth: barWidth, + xDivision: xDivision + }, params)); + barHeight = paths.barHeight; + } + + var barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight: barHeight, + barWidth: barWidth + }); + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine); + } + + y = paths.y; + x = paths.x; + var pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex); + var lineFill = w.globals.stroke.colors[realIndex]; + this.renderSeries({ + realIndex: realIndex, + pathFill: pathFill, + lineFill: lineFill, + j: j, + i: i, + x: x, + y: y, + y1: y1, + y2: y2, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth: strokeWidth, + elSeries: elSeries, + series: series, + barHeight: barHeight, + barYPosition: barYPosition, + barWidth: barWidth, + elDataLabelsWrap: elDataLabelsWrap, + elGoalsMarkers: elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'rangebar' + }); + } + + ret.add(elSeries); + } + + return ret; + } + }, { + key: "detectOverlappingBars", + value: function detectOverlappingBars(_ref) { + var i = _ref.i, + j = _ref.j, + barYPosition = _ref.barYPosition, + srty = _ref.srty, + barHeight = _ref.barHeight, + yDivision = _ref.yDivision, + initPositions = _ref.initPositions; + var w = this.w; + var overlaps = []; + var rangeName = w.config.series[i].data[j].rangeName; + var labelX = w.config.series[i].data[j].x; + var rowIndex = w.globals.labels.indexOf(labelX); + var overlappedIndex = w.globals.seriesRange[i].findIndex(function (tx) { + return tx.x === labelX && tx.overlaps.length > 0; + }); + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + barYPosition = srty + yDivision * rowIndex; + } else { + barYPosition = srty + barHeight * this.visibleI + yDivision * rowIndex; + } + + if (overlappedIndex > -1 && !w.config.plotOptions.bar.rangeBarOverlap) { + overlaps = w.globals.seriesRange[i][overlappedIndex].overlaps; + + if (overlaps.indexOf(rangeName) > -1) { + barHeight = initPositions.barHeight / overlaps.length; + barYPosition = barHeight * this.visibleI + yDivision * (100 - parseInt(this.barOptions.barHeight, 10)) / 100 / 2 + barHeight * (this.visibleI + overlaps.indexOf(rangeName)) + yDivision * rowIndex; + } + } + + return { + barYPosition: barYPosition, + barHeight: barHeight + }; + } + }, { + key: "drawRangeColumnPaths", + value: function drawRangeColumnPaths(_ref2) { + var indexes = _ref2.indexes, + x = _ref2.x; + _ref2.strokeWidth; + var xDivision = _ref2.xDivision, + barWidth = _ref2.barWidth, + zeroH = _ref2.zeroH; + var w = this.w; + var i = indexes.i; + var j = indexes.j; + var yRatio = this.yRatio[this.yaxisIndex]; + var realIndex = indexes.realIndex; + var range = this.getRangeValue(realIndex, j); + var y1 = Math.min(range.start, range.end); + var y2 = Math.max(range.start, range.end); + + if (w.globals.isXNumeric) { + x = (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2; + } + + var barXPosition = x + barWidth * this.visibleI; + + if (typeof this.series[i][j] === 'undefined' || this.series[i][j] === null) { + y1 = zeroH; + } else { + y1 = zeroH - y1 / yRatio; + y2 = zeroH - y2 / yRatio; + } + + var barHeight = Math.abs(y2 - y1); + var paths = this.barHelpers.getColumnPaths({ + barXPosition: barXPosition, + barWidth: barWidth, + y1: y1, + y2: y2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + realIndex: indexes.realIndex, + i: realIndex, + j: j, + w: w + }); + + if (!w.globals.isXNumeric) { + x = x + xDivision; + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barHeight: barHeight, + x: x, + y: y2, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition: barXPosition + }; + } + }, { + key: "drawRangeBarPaths", + value: function drawRangeBarPaths(_ref3) { + var indexes = _ref3.indexes, + y = _ref3.y, + y1 = _ref3.y1, + y2 = _ref3.y2, + yDivision = _ref3.yDivision, + barHeight = _ref3.barHeight, + barYPosition = _ref3.barYPosition, + zeroW = _ref3.zeroW; + var w = this.w; + var x1 = zeroW + y1 / this.invertedYRatio; + var x2 = zeroW + y2 / this.invertedYRatio; + var barWidth = Math.abs(x2 - x1); + var paths = this.barHelpers.getBarpaths({ + barYPosition: barYPosition, + barHeight: barHeight, + x1: x1, + x2: x2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + i: indexes.realIndex, + realIndex: indexes.realIndex, + j: indexes.j, + w: w + }); + + if (!w.globals.isXNumeric) { + y = y + yDivision; + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barWidth: barWidth, + x: x2, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, indexes.realIndex, indexes.j), + y: y + }; + } + }, { + key: "getRangeValue", + value: function getRangeValue(i, j) { + var w = this.w; + return { + start: w.globals.seriesRangeStart[i][j], + end: w.globals.seriesRangeEnd[i][j] + }; + } + }]); + + return RangeBar; + }(Bar); + + var Helpers = /*#__PURE__*/function () { + function Helpers(lineCtx) { + _classCallCheck(this, Helpers); + + this.w = lineCtx.w; + this.lineCtx = lineCtx; + } + + _createClass(Helpers, [{ + key: "sameValueSeriesFix", + value: function sameValueSeriesFix(i, series) { + var w = this.w; + + if (w.config.fill.type === 'gradient' || w.config.fill.type[i] === 'gradient') { + var coreUtils = new CoreUtils(this.lineCtx.ctx, w); // applied only to LINE chart + // a small adjustment to allow gradient line to draw correctly for all same values + + /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */ + + if (coreUtils.seriesHaveSameValues(i)) { + var gSeries = series[i].slice(); + gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001; + series[i] = gSeries; + } + } + + return series; + } + }, { + key: "calculatePoints", + value: function calculatePoints(_ref) { + var series = _ref.series, + realIndex = _ref.realIndex, + x = _ref.x, + y = _ref.y, + i = _ref.i, + j = _ref.j, + prevY = _ref.prevY; + var w = this.w; + var ptX = []; + var ptY = []; + + if (j === 0) { + var xPT1st = this.lineCtx.categoryAxisCorrection + w.config.markers.offsetX; // the first point for line series + // we need to check whether it's not a time series, because a time series may + // start from the middle of the x axis + + if (w.globals.isXNumeric) { + xPT1st = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.lineCtx.xRatio + w.config.markers.offsetX; + } // push 2 points for the first data values + + + ptX.push(xPT1st); + ptY.push(Utils$1.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null); + ptX.push(x + w.config.markers.offsetX); + ptY.push(Utils$1.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null); + } else { + ptX.push(x + w.config.markers.offsetX); + ptY.push(Utils$1.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null); + } + + var pointsPos = { + x: ptX, + y: ptY + }; + return pointsPos; + } + }, { + key: "checkPreviousPaths", + value: function checkPreviousPaths(_ref2) { + var pathFromLine = _ref2.pathFromLine, + pathFromArea = _ref2.pathFromArea, + realIndex = _ref2.realIndex; + var w = this.w; + + for (var pp = 0; pp < w.globals.previousPaths.length; pp++) { + var gpp = w.globals.previousPaths[pp]; + + if ((gpp.type === 'line' || gpp.type === 'area') && gpp.paths.length > 0 && parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10)) { + if (gpp.type === 'line') { + this.lineCtx.appendPathFrom = false; + pathFromLine = w.globals.previousPaths[pp].paths[0].d; + } else if (gpp.type === 'area') { + this.lineCtx.appendPathFrom = false; + pathFromArea = w.globals.previousPaths[pp].paths[0].d; + + if (w.config.stroke.show && w.globals.previousPaths[pp].paths[1]) { + pathFromLine = w.globals.previousPaths[pp].paths[1].d; + } + } + } + } + + return { + pathFromLine: pathFromLine, + pathFromArea: pathFromArea + }; + } + }, { + key: "determineFirstPrevY", + value: function determineFirstPrevY(_ref3) { + var _series$i; + + var i = _ref3.i, + series = _ref3.series, + prevY = _ref3.prevY, + lineYPosition = _ref3.lineYPosition; + var w = this.w; + + if (typeof ((_series$i = series[i]) === null || _series$i === void 0 ? void 0 : _series$i[0]) !== 'undefined') { + if (w.config.chart.stacked) { + if (i > 0) { + // 1st y value of previous series + lineYPosition = this.lineCtx.prevSeriesY[i - 1][0]; + } else { + // the first series will not have prevY values + lineYPosition = this.lineCtx.zeroY; + } + } else { + lineYPosition = this.lineCtx.zeroY; + } + + prevY = lineYPosition - series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + (this.lineCtx.isReversed ? series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] : 0) * 2; + } else { + // the first value in the current series is null + if (w.config.chart.stacked && i > 0 && typeof series[i][0] === 'undefined') { + // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses) + for (var s = i - 1; s >= 0; s--) { + // for loop to get to 1st previous value until we get it + if (series[s][0] !== null && typeof series[s][0] !== 'undefined') { + lineYPosition = this.lineCtx.prevSeriesY[s][0]; + prevY = lineYPosition; + break; + } + } + } + } + + return { + prevY: prevY, + lineYPosition: lineYPosition + }; + } + }]); + + return Helpers; + }(); + + /** + * ApexCharts Line Class responsible for drawing Line / Area / RangeArea Charts. + * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions + * @module Line + **/ + + var Line = /*#__PURE__*/function () { + function Line(ctx, xyRatios, isPointsChart) { + _classCallCheck(this, Line); + + this.ctx = ctx; + this.w = ctx.w; + this.xyRatios = xyRatios; + this.pointsChart = !(this.w.config.chart.type !== 'bubble' && this.w.config.chart.type !== 'scatter') || isPointsChart; + this.scatter = new Scatter(this.ctx); + this.noNegatives = this.w.globals.minX === Number.MAX_VALUE; + this.lineHelpers = new Helpers(this); + this.markers = new Markers(this.ctx); + this.prevSeriesY = []; + this.categoryAxisCorrection = 0; + this.yaxisIndex = 0; + } + + _createClass(Line, [{ + key: "draw", + value: function draw(series, ctype, seriesIndex, seriesRangeEnd) { + var w = this.w; + var graphics = new Graphics(this.ctx); + var type = w.globals.comboCharts ? ctype : w.config.chart.type; + var ret = graphics.group({ + class: "apexcharts-".concat(type, "-series apexcharts-plot-series") + }); + var coreUtils = new CoreUtils(this.ctx, w); + this.yRatio = this.xyRatios.yRatio; + this.zRatio = this.xyRatios.zRatio; + this.xRatio = this.xyRatios.xRatio; + this.baseLineY = this.xyRatios.baseLineY; + series = coreUtils.getLogSeries(series); + this.yRatio = coreUtils.getLogYRatios(this.yRatio); // push all series in an array, so we can draw in reverse order (for stacked charts) + + var allSeries = []; + + for (var i = 0; i < series.length; i++) { + series = this.lineHelpers.sameValueSeriesFix(i, series); + var realIndex = w.globals.comboCharts ? seriesIndex[i] : i; + + this._initSerieVariables(series, i, realIndex); + + var yArrj = []; // hold y values of current iterating series + + var xArrj = []; // hold x values of current iterating series + + var x = w.globals.padHorizontal + this.categoryAxisCorrection; + var y = 1; + var linePaths = []; + var areaPaths = []; + this.ctx.series.addCollapsedClassToSeries(this.elSeries, realIndex); + + if (w.globals.isXNumeric && w.globals.seriesX.length > 0) { + x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.xRatio; + } + + xArrj.push(x); + var pX = x; + var pY = void 0; + var pY2 = void 0; + var prevX = pX; + var prevY = this.zeroY; + var prevY2 = this.zeroY; + var lineYPosition = 0; // the first value in the current series is not null or undefined + + var firstPrevY = this.lineHelpers.determineFirstPrevY({ + i: i, + series: series, + prevY: prevY, + lineYPosition: lineYPosition + }); + prevY = firstPrevY.prevY; + yArrj.push(prevY); + pY = prevY; // y2 are needed for range-area charts + + var firstPrevY2 = void 0; + + if (type === 'rangeArea') { + firstPrevY2 = this.lineHelpers.determineFirstPrevY({ + i: i, + series: seriesRangeEnd, + prevY: prevY2, + lineYPosition: lineYPosition + }); + prevY2 = firstPrevY2.prevY; + pY2 = prevY2; + } + + var pathsFrom = this._calculatePathsFrom({ + type: type, + series: series, + i: i, + realIndex: realIndex, + prevX: prevX, + prevY: prevY, + prevY2: prevY2 + }); + + var iteratingOpts = { + type: type, + series: series, + realIndex: realIndex, + i: i, + x: x, + y: y, + pX: pX, + pY: pY, + pathsFrom: pathsFrom, + linePaths: linePaths, + areaPaths: areaPaths, + seriesIndex: seriesIndex, + lineYPosition: lineYPosition, + xArrj: xArrj, + yArrj: yArrj, + seriesRangeEnd: seriesRangeEnd + }; + + var paths = this._iterateOverDataPoints(_objectSpread2(_objectSpread2({}, iteratingOpts), {}, { + iterations: type === 'rangeArea' ? series[i].length - 1 : undefined, + isRangeStart: true + })); + + if (type === 'rangeArea') { + var pathsFrom2 = this._calculatePathsFrom({ + series: seriesRangeEnd, + i: i, + realIndex: realIndex, + prevX: prevX, + prevY: prevY2 + }); + + var rangePaths = this._iterateOverDataPoints(_objectSpread2(_objectSpread2({}, iteratingOpts), {}, { + series: seriesRangeEnd, + pY: pY2, + pathsFrom: pathsFrom2, + iterations: seriesRangeEnd[i].length - 1, + isRangeStart: false + })); + + paths.linePaths[0] = rangePaths.linePath + paths.linePath; + paths.pathFromLine = rangePaths.pathFromLine + paths.pathFromLine; + } + + this._handlePaths({ + type: type, + realIndex: realIndex, + i: i, + paths: paths + }); + + this.elSeries.add(this.elPointsMain); + this.elSeries.add(this.elDataLabelsWrap); + allSeries.push(this.elSeries); + } + + if (w.config.chart.stacked) { + for (var s = allSeries.length; s > 0; s--) { + ret.add(allSeries[s - 1]); + } + } else { + for (var _s = 0; _s < allSeries.length; _s++) { + ret.add(allSeries[_s]); + } + } + + return ret; + } + }, { + key: "_initSerieVariables", + value: function _initSerieVariables(series, i, realIndex) { + var w = this.w; + var graphics = new Graphics(this.ctx); // width divided into equal parts + + this.xDivision = w.globals.gridWidth / (w.globals.dataPoints - (w.config.xaxis.tickPlacement === 'on' ? 1 : 0)); + this.strokeWidth = Array.isArray(w.config.stroke.width) ? w.config.stroke.width[realIndex] : w.config.stroke.width; + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex; + } + + this.isReversed = w.config.yaxis[this.yaxisIndex] && w.config.yaxis[this.yaxisIndex].reversed; // zeroY is the 0 value in y series which can be used in negative charts + + this.zeroY = w.globals.gridHeight - this.baseLineY[this.yaxisIndex] - (this.isReversed ? w.globals.gridHeight : 0) + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0); + this.areaBottomY = this.zeroY; + + if (this.zeroY > w.globals.gridHeight || w.config.plotOptions.area.fillTo === 'end') { + this.areaBottomY = w.globals.gridHeight; + } + + this.categoryAxisCorrection = this.xDivision / 2; // el to which series will be drawn + + this.elSeries = graphics.group({ + class: "apexcharts-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[realIndex]) + }); // points + + this.elPointsMain = graphics.group({ + class: 'apexcharts-series-markers-wrap', + 'data:realIndex': realIndex + }); // eldatalabels + + this.elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }); + var longestSeries = series[i].length === w.globals.dataPoints; + this.elSeries.attr({ + 'data:longestSeries': longestSeries, + rel: i + 1, + 'data:realIndex': realIndex + }); + this.appendPathFrom = true; + } + }, { + key: "_calculatePathsFrom", + value: function _calculatePathsFrom(_ref) { + var type = _ref.type, + series = _ref.series, + i = _ref.i, + realIndex = _ref.realIndex, + prevX = _ref.prevX, + prevY = _ref.prevY, + prevY2 = _ref.prevY2; + var w = this.w; + var graphics = new Graphics(this.ctx); + var linePath, areaPath, pathFromLine, pathFromArea; + + if (series[i][0] === null) { + // when the first value itself is null, we need to move the pointer to a location where a null value is not found + for (var s = 0; s < series[i].length; s++) { + if (series[i][s] !== null) { + prevX = this.xDivision * s; + prevY = this.zeroY - series[i][s] / this.yRatio[this.yaxisIndex]; + linePath = graphics.move(prevX, prevY); + areaPath = graphics.move(prevX, this.areaBottomY); + break; + } + } + } else { + linePath = graphics.move(prevX, prevY); + + if (type === 'rangeArea') { + linePath = graphics.move(prevX, prevY2) + graphics.line(prevX, prevY); + } + + areaPath = graphics.move(prevX, this.areaBottomY) + graphics.line(prevX, prevY); + } + + pathFromLine = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY); + pathFromArea = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY); + + if (w.globals.previousPaths.length > 0) { + var pathFrom = this.lineHelpers.checkPreviousPaths({ + pathFromLine: pathFromLine, + pathFromArea: pathFromArea, + realIndex: realIndex + }); + pathFromLine = pathFrom.pathFromLine; + pathFromArea = pathFrom.pathFromArea; + } + + return { + prevX: prevX, + prevY: prevY, + linePath: linePath, + areaPath: areaPath, + pathFromLine: pathFromLine, + pathFromArea: pathFromArea + }; + } + }, { + key: "_handlePaths", + value: function _handlePaths(_ref2) { + var type = _ref2.type, + realIndex = _ref2.realIndex, + i = _ref2.i, + paths = _ref2.paths; + var w = this.w; + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); // push all current y values array to main PrevY Array + + this.prevSeriesY.push(paths.yArrj); // push all x val arrays into main xArr + + w.globals.seriesXvalues[realIndex] = paths.xArrj; + w.globals.seriesYvalues[realIndex] = paths.yArrj; + var forecast = w.config.forecastDataPoints; + + if (forecast.count > 0 && type !== 'rangeArea') { + var forecastCutoff = w.globals.seriesXvalues[realIndex][w.globals.seriesXvalues[realIndex].length - forecast.count - 1]; + var elForecastMask = graphics.drawRect(forecastCutoff, 0, w.globals.gridWidth, w.globals.gridHeight, 0); + w.globals.dom.elForecastMask.appendChild(elForecastMask.node); + var elNonForecastMask = graphics.drawRect(0, 0, forecastCutoff, w.globals.gridHeight, 0); + w.globals.dom.elNonForecastMask.appendChild(elNonForecastMask.node); + } // these elements will be shown after area path animation completes + + + if (!this.pointsChart) { + w.globals.delayedElements.push({ + el: this.elPointsMain.node, + index: realIndex + }); + } + + var defaultRenderedPathOptions = { + i: i, + realIndex: realIndex, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: "apexcharts-".concat(type) + }; + + if (type === 'area') { + var pathFill = fill.fillPath({ + seriesNumber: realIndex + }); + + for (var p = 0; p < paths.areaPaths.length; p++) { + var renderedPath = graphics.renderPaths(_objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: paths.pathFromArea, + pathTo: paths.areaPaths[p], + stroke: 'none', + strokeWidth: 0, + strokeLineCap: null, + fill: pathFill + })); + this.elSeries.add(renderedPath); + } + } + + if (w.config.stroke.show && !this.pointsChart) { + var lineFill = null; + + if (type === 'line') { + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i: i + }); + } else { + if (w.config.stroke.fill.type === 'solid') { + lineFill = w.globals.stroke.colors[realIndex]; + } else { + var prevFill = w.config.fill; + w.config.fill = w.config.stroke.fill; + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i: i + }); + w.config.fill = prevFill; + } + } // range-area paths are drawn using linePaths + + + for (var _p = 0; _p < paths.linePaths.length; _p++) { + var _pathFill = lineFill; + + if (type === 'rangeArea') { + _pathFill = fill.fillPath({ + seriesNumber: realIndex + }); + } + + var linePathCommonOpts = _objectSpread2(_objectSpread2({}, defaultRenderedPathOptions), {}, { + pathFrom: paths.pathFromLine, + pathTo: paths.linePaths[_p], + stroke: lineFill, + strokeWidth: this.strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: type === 'rangeArea' ? _pathFill : 'none' + }); + + var _renderedPath = graphics.renderPaths(linePathCommonOpts); + + this.elSeries.add(_renderedPath); + + _renderedPath.attr('fill-rule', "evenodd"); + + if (forecast.count > 0 && type !== 'rangeArea') { + var renderedForecastPath = graphics.renderPaths(linePathCommonOpts); + renderedForecastPath.node.setAttribute('stroke-dasharray', forecast.dashArray); + + if (forecast.strokeWidth) { + renderedForecastPath.node.setAttribute('stroke-width', forecast.strokeWidth); + } + + this.elSeries.add(renderedForecastPath); + renderedForecastPath.attr('clip-path', "url(#forecastMask".concat(w.globals.cuid, ")")); + + _renderedPath.attr('clip-path', "url(#nonForecastMask".concat(w.globals.cuid, ")")); + } + } + } + } + }, { + key: "_iterateOverDataPoints", + value: function _iterateOverDataPoints(_ref3) { + var type = _ref3.type, + series = _ref3.series, + iterations = _ref3.iterations, + realIndex = _ref3.realIndex, + i = _ref3.i, + x = _ref3.x, + y = _ref3.y, + pX = _ref3.pX, + pY = _ref3.pY, + pathsFrom = _ref3.pathsFrom, + linePaths = _ref3.linePaths, + areaPaths = _ref3.areaPaths, + seriesIndex = _ref3.seriesIndex, + lineYPosition = _ref3.lineYPosition, + xArrj = _ref3.xArrj, + yArrj = _ref3.yArrj, + isRangeStart = _ref3.isRangeStart, + seriesRangeEnd = _ref3.seriesRangeEnd; + var w = this.w; + var graphics = new Graphics(this.ctx); + var yRatio = this.yRatio; + var prevY = pathsFrom.prevY, + linePath = pathsFrom.linePath, + areaPath = pathsFrom.areaPath, + pathFromLine = pathsFrom.pathFromLine, + pathFromArea = pathsFrom.pathFromArea; + var minY = Utils$1.isNumber(w.globals.minYArr[realIndex]) ? w.globals.minYArr[realIndex] : w.globals.minY; + + if (!iterations) { + iterations = w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints; + } + + var y2 = y; + + for (var j = 0; j < iterations; j++) { + var isNull = typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null; + + if (w.globals.isXNumeric) { + var sX = w.globals.seriesX[realIndex][j + 1]; + + if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') { + /* fix #374 */ + sX = w.globals.seriesX[realIndex][iterations - 1]; + } + + x = (sX - w.globals.minX) / this.xRatio; + } else { + x = x + this.xDivision; + } + + if (w.config.chart.stacked) { + if (i > 0 && w.globals.collapsedSeries.length < w.config.series.length - 1) { + // a collapsed series in a stacked bar chart may provide wrong result for the next series, hence find the prevIndex of prev series which is not collapsed - fixes apexcharts.js#1372 + var prevIndex = function prevIndex(pi) { + var pii = pi; + + for (var cpi = 0; cpi < w.globals.series.length; cpi++) { + if (w.globals.collapsedSeriesIndices.indexOf(pi) > -1) { + pii--; + break; + } + } + + return pii >= 0 ? pii : 0; + }; + + lineYPosition = this.prevSeriesY[prevIndex(i - 1)][j + 1]; + } else { + // the first series will not have prevY values + lineYPosition = this.zeroY; + } + } else { + lineYPosition = this.zeroY; + } + + if (isNull) { + y = lineYPosition - minY / yRatio[this.yaxisIndex] + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2; + } else { + y = lineYPosition - series[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2; + + if (type === 'rangeArea') { + y2 = lineYPosition - seriesRangeEnd[i][j + 1] / yRatio[this.yaxisIndex] + (this.isReversed ? seriesRangeEnd[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2; + } + } // push current X + + + xArrj.push(x); // push current Y that will be used as next series's bottom position + + yArrj.push(y); + var pointsPos = this.lineHelpers.calculatePoints({ + series: series, + x: x, + y: y, + realIndex: realIndex, + i: i, + j: j, + prevY: prevY + }); + + var calculatedPaths = this._createPaths({ + type: type, + series: series, + i: i, + realIndex: realIndex, + j: j, + x: x, + y: y, + y2: y2, + pX: pX, + pY: pY, + linePath: linePath, + areaPath: areaPath, + linePaths: linePaths, + areaPaths: areaPaths, + seriesIndex: seriesIndex, + isRangeStart: isRangeStart + }); + + areaPaths = calculatedPaths.areaPaths; + linePaths = calculatedPaths.linePaths; + pX = calculatedPaths.pX; + pY = calculatedPaths.pY; + areaPath = calculatedPaths.areaPath; + linePath = calculatedPaths.linePath; + + if (this.appendPathFrom) { + pathFromLine = pathFromLine + graphics.line(x, this.zeroY); + pathFromArea = pathFromArea + graphics.line(x, this.zeroY); + } + + this.handleNullDataPoints(series, pointsPos, i, j, realIndex); + + this._handleMarkersAndLabels({ + type: type, + pointsPos: pointsPos, + i: i, + j: j, + realIndex: realIndex, + isRangeStart: isRangeStart + }); + } + + return { + yArrj: yArrj, + xArrj: xArrj, + pathFromArea: pathFromArea, + areaPaths: areaPaths, + pathFromLine: pathFromLine, + linePaths: linePaths, + linePath: linePath, + areaPath: areaPath + }; + } + }, { + key: "_handleMarkersAndLabels", + value: function _handleMarkersAndLabels(_ref4) { + var type = _ref4.type, + pointsPos = _ref4.pointsPos, + isRangeStart = _ref4.isRangeStart, + i = _ref4.i, + j = _ref4.j, + realIndex = _ref4.realIndex; + var w = this.w; + var dataLabels = new DataLabels(this.ctx); + + if (!this.pointsChart) { + if (w.globals.series[i].length > 1) { + this.elPointsMain.node.classList.add('apexcharts-element-hidden'); + } + + var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1); + + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap); + } + } else { + // scatter / bubble chart points creation + this.scatter.draw(this.elSeries, j, { + realIndex: realIndex, + pointsPos: pointsPos, + zRatio: this.zRatio, + elParent: this.elPointsMain + }); + } + + var drawnLabels = dataLabels.drawDataLabel({ + type: type, + isRangeStart: isRangeStart, + pos: pointsPos, + i: realIndex, + j: j + 1 + }); + + if (drawnLabels !== null) { + this.elDataLabelsWrap.add(drawnLabels); + } + } + }, { + key: "_createPaths", + value: function _createPaths(_ref5) { + var type = _ref5.type, + series = _ref5.series, + i = _ref5.i, + realIndex = _ref5.realIndex, + j = _ref5.j, + x = _ref5.x, + y = _ref5.y, + y2 = _ref5.y2, + pX = _ref5.pX, + pY = _ref5.pY, + linePath = _ref5.linePath, + areaPath = _ref5.areaPath, + linePaths = _ref5.linePaths, + areaPaths = _ref5.areaPaths, + seriesIndex = _ref5.seriesIndex, + isRangeStart = _ref5.isRangeStart; + var w = this.w; + var graphics = new Graphics(this.ctx); + var curve = w.config.stroke.curve; + var areaBottomY = this.areaBottomY; + + if (Array.isArray(w.config.stroke.curve)) { + if (Array.isArray(seriesIndex)) { + curve = w.config.stroke.curve[seriesIndex[i]]; + } else { + curve = w.config.stroke.curve[i]; + } + } // logic of smooth curve derived from chartist + // CREDITS: https://gionkunz.github.io/chartist-js/ + + + if (curve === 'smooth') { + var length = (x - pX) * 0.35; + + if (w.globals.hasNullValues) { + if (series[i][j] !== null) { + if (series[i][j + 1] !== null) { + linePath = graphics.move(pX, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y); + areaPath = graphics.move(pX + 1, pY) + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + graphics.line(x, areaBottomY) + graphics.line(pX, areaBottomY) + 'z'; + } else { + linePath = graphics.move(pX, pY); + areaPath = graphics.move(pX, pY) + 'z'; + } + } + + linePaths.push(linePath); + areaPaths.push(areaPath); + } else { + linePath = linePath + graphics.curve(pX + length, pY, x - length, y, x, y); + areaPath = areaPath + graphics.curve(pX + length, pY, x - length, y, x, y); + } + + pX = x; + pY = y; + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = areaPath + graphics.curve(pX, pY, x, y, x, areaBottomY) + graphics.move(x, y) + 'z'; + + if (type === 'rangeArea' && isRangeStart) { + linePath = linePath + graphics.curve(pX, pY, x, y, x, y2) + graphics.move(x, y2) + 'z'; + } else { + if (!w.globals.hasNullValues) { + linePaths.push(linePath); + areaPaths.push(areaPath); + } + } + } + } else { + if (series[i][j + 1] === null) { + linePath = linePath + graphics.move(x, y); + var numericOrCatX = w.globals.isXNumeric ? (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio : x - this.xDivision; + areaPath = areaPath + graphics.line(numericOrCatX, areaBottomY) + graphics.move(x, y) + 'z'; + } + + if (series[i][j] === null) { + linePath = linePath + graphics.move(x, y); + areaPath = areaPath + graphics.move(x, areaBottomY); + } + + if (curve === 'stepline') { + linePath = linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V'); + areaPath = areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V'); + } else if (curve === 'straight') { + linePath = linePath + graphics.line(x, y); + areaPath = areaPath + graphics.line(x, y); + } + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z'; + + if (type === 'rangeArea' && isRangeStart) { + linePath = linePath + graphics.line(x, y2) + graphics.move(x, y2) + 'z'; + } else { + linePaths.push(linePath); + areaPaths.push(areaPath); + } + } + } + + return { + linePaths: linePaths, + areaPaths: areaPaths, + pX: pX, + pY: pY, + linePath: linePath, + areaPath: areaPath + }; + } + }, { + key: "handleNullDataPoints", + value: function handleNullDataPoints(series, pointsPos, i, j, realIndex) { + var w = this.w; + + if (series[i][j] === null && w.config.markers.showNullDataPoints || series[i].length === 1) { + // fixes apexcharts.js#1282, #1252 + var elPointsWrap = this.markers.plotChartMarkers(pointsPos, realIndex, j + 1, this.strokeWidth - w.config.markers.strokeWidth / 2, true); + + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap); + } + } + } + }]); + + return Line; + }(); + + /* + * treemap-squarify.js - open source implementation of squarified treemaps + * + * Treemap Squared 0.5 - Treemap Charting library + * + * https://github.com/imranghory/treemap-squared/ + * + * Copyright (c) 2012 Imran Ghory (imranghory@gmail.com) + * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. + * + * + * Implementation of the squarify treemap algorithm described in: + * + * Bruls, Mark; Huizing, Kees; van Wijk, Jarke J. (2000), "Squarified treemaps" + * in de Leeuw, W.; van Liere, R., Data Visualization 2000: + * Proc. Joint Eurographics and IEEE TCVG Symp. on Visualization, Springer-Verlag, pp. 33–42. + * + * Paper is available online at: http://www.win.tue.nl/~vanwijk/stm.pdf + * + * The code in this file is completeley decoupled from the drawing code so it should be trivial + * to port it to any other vector drawing library. Given an array of datapoints this library returns + * an array of cartesian coordinates that represent the rectangles that make up the treemap. + * + * The library also supports multidimensional data (nested treemaps) and performs normalization on the data. + * + * See the README file for more details. + */ + window.TreemapSquared = {}; + + (function () { + + window.TreemapSquared.generate = function () { + function Container(xoffset, yoffset, width, height) { + this.xoffset = xoffset; // offset from the the top left hand corner + + this.yoffset = yoffset; // ditto + + this.height = height; + this.width = width; + + this.shortestEdge = function () { + return Math.min(this.height, this.width); + }; // getCoordinates - for a row of boxes which we've placed + // return an array of their cartesian coordinates + + + this.getCoordinates = function (row) { + var coordinates = []; + var subxoffset = this.xoffset, + subyoffset = this.yoffset; //our offset within the container + + var areawidth = sumArray(row) / this.height; + var areaheight = sumArray(row) / this.width; + var i; + + if (this.width >= this.height) { + for (i = 0; i < row.length; i++) { + coordinates.push([subxoffset, subyoffset, subxoffset + areawidth, subyoffset + row[i] / areawidth]); + subyoffset = subyoffset + row[i] / areawidth; + } + } else { + for (i = 0; i < row.length; i++) { + coordinates.push([subxoffset, subyoffset, subxoffset + row[i] / areaheight, subyoffset + areaheight]); + subxoffset = subxoffset + row[i] / areaheight; + } + } + + return coordinates; + }; // cutArea - once we've placed some boxes into an row we then need to identify the remaining area, + // this function takes the area of the boxes we've placed and calculates the location and + // dimensions of the remaining space and returns a container box defined by the remaining area + + + this.cutArea = function (area) { + var newcontainer; + + if (this.width >= this.height) { + var areawidth = area / this.height; + var newwidth = this.width - areawidth; + newcontainer = new Container(this.xoffset + areawidth, this.yoffset, newwidth, this.height); + } else { + var areaheight = area / this.width; + var newheight = this.height - areaheight; + newcontainer = new Container(this.xoffset, this.yoffset + areaheight, this.width, newheight); + } + + return newcontainer; + }; + } // normalize - the Bruls algorithm assumes we're passing in areas that nicely fit into our + // container box, this method takes our raw data and normalizes the data values into + // area values so that this assumption is valid. + + + function normalize(data, area) { + var normalizeddata = []; + var sum = sumArray(data); + var multiplier = area / sum; + var i; + + for (i = 0; i < data.length; i++) { + normalizeddata[i] = data[i] * multiplier; + } + + return normalizeddata; + } // treemapMultidimensional - takes multidimensional data (aka [[23,11],[11,32]] - nested array) + // and recursively calls itself using treemapSingledimensional + // to create a patchwork of treemaps and merge them + + + function treemapMultidimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset; + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset; + var mergeddata = []; + var mergedtreemap; + var results = []; + var i; + + if (isArray(data[0])) { + // if we've got more dimensions of depth + for (i = 0; i < data.length; i++) { + mergeddata[i] = sumMultidimensionalArray(data[i]); + } + + mergedtreemap = treemapSingledimensional(mergeddata, width, height, xoffset, yoffset); + + for (i = 0; i < data.length; i++) { + results.push(treemapMultidimensional(data[i], mergedtreemap[i][2] - mergedtreemap[i][0], mergedtreemap[i][3] - mergedtreemap[i][1], mergedtreemap[i][0], mergedtreemap[i][1])); + } + } else { + results = treemapSingledimensional(data, width, height, xoffset, yoffset); + } + + return results; + } // treemapSingledimensional - simple wrapper around squarify + + + function treemapSingledimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset; + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset; + var rawtreemap = squarify(normalize(data, width * height), [], new Container(xoffset, yoffset, width, height), []); + return flattenTreemap(rawtreemap); + } // flattenTreemap - squarify implementation returns an array of arrays of coordinates + // because we have a new array everytime we switch to building a new row + // this converts it into an array of coordinates. + + + function flattenTreemap(rawtreemap) { + var flattreemap = []; + var i, j; + + for (i = 0; i < rawtreemap.length; i++) { + for (j = 0; j < rawtreemap[i].length; j++) { + flattreemap.push(rawtreemap[i][j]); + } + } + + return flattreemap; + } // squarify - as per the Bruls paper + // plus coordinates stack and containers so we get + // usable data out of it + + + function squarify(data, currentrow, container, stack) { + var length; + var nextdatapoint; + var newcontainer; + + if (data.length === 0) { + stack.push(container.getCoordinates(currentrow)); + return; + } + + length = container.shortestEdge(); + nextdatapoint = data[0]; + + if (improvesRatio(currentrow, nextdatapoint, length)) { + currentrow.push(nextdatapoint); + squarify(data.slice(1), currentrow, container, stack); + } else { + newcontainer = container.cutArea(sumArray(currentrow), stack); + stack.push(container.getCoordinates(currentrow)); + squarify(data, [], newcontainer, stack); + } + + return stack; + } // improveRatio - implements the worse calculation and comparision as given in Bruls + // (note the error in the original paper; fixed here) + + + function improvesRatio(currentrow, nextnode, length) { + var newrow; + + if (currentrow.length === 0) { + return true; + } + + newrow = currentrow.slice(); + newrow.push(nextnode); + var currentratio = calculateRatio(currentrow, length); + var newratio = calculateRatio(newrow, length); // the pseudocode in the Bruls paper has the direction of the comparison + // wrong, this is the correct one. + + return currentratio >= newratio; + } // calculateRatio - calculates the maximum width to height ratio of the + // boxes in this row + + + function calculateRatio(row, length) { + var min = Math.min.apply(Math, row); + var max = Math.max.apply(Math, row); + var sum = sumArray(row); + return Math.max(Math.pow(length, 2) * max / Math.pow(sum, 2), Math.pow(sum, 2) / (Math.pow(length, 2) * min)); + } // isArray - checks if arr is an array + + + function isArray(arr) { + return arr && arr.constructor === Array; + } // sumArray - sums a single dimensional array + + + function sumArray(arr) { + var sum = 0; + var i; + + for (i = 0; i < arr.length; i++) { + sum += arr[i]; + } + + return sum; + } // sumMultidimensionalArray - sums the values in a nested array (aka [[0,1],[[2,3]]]) + + + function sumMultidimensionalArray(arr) { + var i, + total = 0; + + if (isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += sumMultidimensionalArray(arr[i]); + } + } else { + total = sumArray(arr); + } + + return total; + } + + return treemapMultidimensional; + }(); + })(); + + /** + * ApexCharts TreemapChart Class. + * @module TreemapChart + **/ + + var TreemapChart = /*#__PURE__*/function () { + function TreemapChart(ctx, xyRatios) { + _classCallCheck(this, TreemapChart); + + this.ctx = ctx; + this.w = ctx.w; + this.strokeWidth = this.w.config.stroke.width; + this.helpers = new TreemapHelpers(ctx); + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation; + this.labels = []; + } + + _createClass(TreemapChart, [{ + key: "draw", + value: function draw(series) { + var _this = this; + + var w = this.w; + var graphics = new Graphics(this.ctx); + var fill = new Fill(this.ctx); + var ret = graphics.group({ + class: 'apexcharts-treemap' + }); + if (w.globals.noData) return ret; + var ser = []; + series.forEach(function (s) { + var d = s.map(function (v) { + return Math.abs(v); + }); + ser.push(d); + }); + this.negRange = this.helpers.checkColorRange(); + w.config.series.forEach(function (s, i) { + s.data.forEach(function (l) { + if (!Array.isArray(_this.labels[i])) _this.labels[i] = []; + + _this.labels[i].push(l.x); + }); + }); + var nodes = window.TreemapSquared.generate(ser, w.globals.gridWidth, w.globals.gridHeight); + nodes.forEach(function (node, i) { + var elSeries = graphics.group({ + class: "apexcharts-series apexcharts-treemap-series", + seriesName: Utils$1.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }); + + if (w.config.chart.dropShadow.enabled) { + var shadow = w.config.chart.dropShadow; + var filters = new Filters(_this.ctx); + filters.dropShadow(ret, shadow, i); + } + + var elDataLabelWrap = graphics.group({ + class: 'apexcharts-data-labels' + }); + node.forEach(function (r, j) { + var x1 = r[0]; + var y1 = r[1]; + var x2 = r[2]; + var y2 = r[3]; + var elRect = graphics.drawRect(x1, y1, x2 - x1, y2 - y1, 0, '#fff', 1, _this.strokeWidth, w.config.plotOptions.treemap.useFillColorAsStroke ? color : w.globals.stroke.colors[i]); + elRect.attr({ + cx: x1, + cy: y1, + index: i, + i: i, + j: j, + width: x2 - x1, + height: y2 - y1 + }); + + var colorProps = _this.helpers.getShadeColor(w.config.chart.type, i, j, _this.negRange); + + var color = colorProps.color; + + if (typeof w.config.series[i].data[j] !== 'undefined' && w.config.series[i].data[j].fillColor) { + color = w.config.series[i].data[j].fillColor; + } + + var pathFill = fill.fillPath({ + color: color, + seriesNumber: i, + dataPointIndex: j + }); + elRect.node.classList.add('apexcharts-treemap-rect'); + elRect.attr({ + fill: pathFill + }); + + _this.helpers.addListeners(elRect); + + var fromRect = { + x: x1 + (x2 - x1) / 2, + y: y1 + (y2 - y1) / 2, + width: 0, + height: 0 + }; + var toRect = { + x: x1, + y: y1, + width: x2 - x1, + height: y2 - y1 + }; + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + var speed = 1; + + if (!w.globals.resized) { + speed = w.config.chart.animations.speed; + } + + _this.animateTreemap(elRect, fromRect, toRect, speed); + } + + if (w.globals.dataChanged) { + var _speed = 1; + + if (_this.dynamicAnim.enabled && w.globals.shouldAnimate) { + _speed = _this.dynamicAnim.speed; + + if (w.globals.previousPaths[i] && w.globals.previousPaths[i][j] && w.globals.previousPaths[i][j].rect) { + fromRect = w.globals.previousPaths[i][j].rect; + } + + _this.animateTreemap(elRect, fromRect, toRect, _speed); + } + } + + var fontSize = _this.getFontSize(r); + + var formattedText = w.config.dataLabels.formatter(_this.labels[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w: w + }); + + var dataLabels = _this.helpers.calculateDataLabels({ + text: formattedText, + x: (x1 + x2) / 2, + y: (y1 + y2) / 2 + _this.strokeWidth / 2 + fontSize / 3, + i: i, + j: j, + colorProps: colorProps, + fontSize: fontSize, + series: series + }); + + if (w.config.dataLabels.enabled && dataLabels) { + _this.rotateToFitLabel(dataLabels, fontSize, formattedText, x1, y1, x2, y2); + } + + elSeries.add(elRect); + + if (dataLabels !== null) { + elSeries.add(dataLabels); + } + }); + elSeries.add(elDataLabelWrap); + ret.add(elSeries); + }); + return ret; + } // This calculates a font-size based upon + // average label length and the size of the box the label is + // going into. The maximum font size is set in chart config. + + }, { + key: "getFontSize", + value: function getFontSize(coordinates) { + var w = this.w; // total length of labels (i.e [["Italy"],["Spain", "Greece"]] -> 16) + + function totalLabelLength(arr) { + var i, + total = 0; + + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += totalLabelLength(arr[i]); + } + } else { + for (i = 0; i < arr.length; i++) { + total += arr[i].length; + } + } + + return total; + } // count of labels (i.e [["Italy"],["Spain", "Greece"]] -> 3) + + + function countLabels(arr) { + var i, + total = 0; + + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += countLabels(arr[i]); + } + } else { + for (i = 0; i < arr.length; i++) { + total += 1; + } + } + + return total; + } + + var averagelabelsize = totalLabelLength(this.labels) / countLabels(this.labels); + + function fontSize(width, height) { + // the font size should be proportional to the size of the box (and the value) + // otherwise you can end up creating a visual distortion where two boxes of identical + // size have different sized labels, and thus make it look as if the two boxes + // represent different sizes + var area = width * height; + var arearoot = Math.pow(area, 0.5); + return Math.min(arearoot / averagelabelsize, parseInt(w.config.dataLabels.style.fontSize, 10)); + } + + return fontSize(coordinates[2] - coordinates[0], coordinates[3] - coordinates[1]); + } + }, { + key: "rotateToFitLabel", + value: function rotateToFitLabel(elText, fontSize, text, x1, y1, x2, y2) { + var graphics = new Graphics(this.ctx); + var textRect = graphics.getTextRects(text, fontSize); //if the label fits better sideways then rotate it + + if (textRect.width + this.w.config.stroke.width + 5 > x2 - x1 && textRect.width <= y2 - y1) { + var labelRotatingCenter = graphics.rotateAroundCenter(elText.node); + elText.node.setAttribute('transform', "rotate(-90 ".concat(labelRotatingCenter.x, " ").concat(labelRotatingCenter.y, ")")); + } + } + }, { + key: "animateTreemap", + value: function animateTreemap(el, fromRect, toRect, speed) { + var animations = new Animations(this.ctx); + animations.animateRect(el, { + x: fromRect.x, + y: fromRect.y, + width: fromRect.width, + height: fromRect.height + }, { + x: toRect.x, + y: toRect.y, + width: toRect.width, + height: toRect.height + }, speed, function () { + animations.animationCompleted(el); + }); + } + }]); + + return TreemapChart; + }(); + + var MINUTES_IN_DAY = 24 * 60; + var SECONDS_IN_DAY = MINUTES_IN_DAY * 60; + var MIN_ZOOM_DAYS = 10 / SECONDS_IN_DAY; + /** + * ApexCharts TimeScale Class for generating time ticks for x-axis. + * + * @module TimeScale + **/ + + var TimeScale = /*#__PURE__*/function () { + function TimeScale(ctx) { + _classCallCheck(this, TimeScale); + + this.ctx = ctx; + this.w = ctx.w; + this.timeScaleArray = []; + this.utc = this.w.config.xaxis.labels.datetimeUTC; + } + + _createClass(TimeScale, [{ + key: "calculateTimeScaleTicks", + value: function calculateTimeScaleTicks(minX, maxX) { + var _this = this; + + var w = this.w; // null check when no series to show + + if (w.globals.allSeriesCollapsed) { + w.globals.labels = []; + w.globals.timescaleLabels = []; + return []; + } + + var dt = new DateTime(this.ctx); + var daysDiff = (maxX - minX) / (1000 * SECONDS_IN_DAY); + this.determineInterval(daysDiff); + w.globals.disableZoomIn = false; + w.globals.disableZoomOut = false; + + if (daysDiff < MIN_ZOOM_DAYS) { + w.globals.disableZoomIn = true; + } else if (daysDiff > 50000) { + w.globals.disableZoomOut = true; + } + + var timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX, this.utc); + var daysWidthOnXAxis = w.globals.gridWidth / daysDiff; + var hoursWidthOnXAxis = daysWidthOnXAxis / 24; + var minutesWidthOnXAxis = hoursWidthOnXAxis / 60; + var secondsWidthOnXAxis = minutesWidthOnXAxis / 60; + var numberOfHours = Math.floor(daysDiff * 24); + var numberOfMinutes = Math.floor(daysDiff * MINUTES_IN_DAY); + var numberOfSeconds = Math.floor(daysDiff * SECONDS_IN_DAY); + var numberOfDays = Math.floor(daysDiff); + var numberOfMonths = Math.floor(daysDiff / 30); + var numberOfYears = Math.floor(daysDiff / 365); + var firstVal = { + minMillisecond: timeIntervals.minMillisecond, + minSecond: timeIntervals.minSecond, + minMinute: timeIntervals.minMinute, + minHour: timeIntervals.minHour, + minDate: timeIntervals.minDate, + minMonth: timeIntervals.minMonth, + minYear: timeIntervals.minYear + }; + var currentMillisecond = firstVal.minMillisecond; + var currentSecond = firstVal.minSecond; + var currentMinute = firstVal.minMinute; + var currentHour = firstVal.minHour; + var currentMonthDate = firstVal.minDate; + var currentDate = firstVal.minDate; + var currentMonth = firstVal.minMonth; + var currentYear = firstVal.minYear; + var params = { + firstVal: firstVal, + currentMillisecond: currentMillisecond, + currentSecond: currentSecond, + currentMinute: currentMinute, + currentHour: currentHour, + currentMonthDate: currentMonthDate, + currentDate: currentDate, + currentMonth: currentMonth, + currentYear: currentYear, + daysWidthOnXAxis: daysWidthOnXAxis, + hoursWidthOnXAxis: hoursWidthOnXAxis, + minutesWidthOnXAxis: minutesWidthOnXAxis, + secondsWidthOnXAxis: secondsWidthOnXAxis, + numberOfSeconds: numberOfSeconds, + numberOfMinutes: numberOfMinutes, + numberOfHours: numberOfHours, + numberOfDays: numberOfDays, + numberOfMonths: numberOfMonths, + numberOfYears: numberOfYears + }; + + switch (this.tickInterval) { + case 'years': + { + this.generateYearScale(params); + break; + } + + case 'months': + case 'half_year': + { + this.generateMonthScale(params); + break; + } + + case 'months_days': + case 'months_fortnight': + case 'days': + case 'week_days': + { + this.generateDayScale(params); + break; + } + + case 'hours': + { + this.generateHourScale(params); + break; + } + + case 'minutes_fives': + case 'minutes': + this.generateMinuteScale(params); + break; + + case 'seconds_tens': + case 'seconds_fives': + case 'seconds': + this.generateSecondScale(params); + break; + } // first, we will adjust the month values index + // as in the upper function, it is starting from 0 + // we will start them from 1 + + + var adjustedMonthInTimeScaleArray = this.timeScaleArray.map(function (ts) { + var defaultReturn = { + position: ts.position, + unit: ts.unit, + year: ts.year, + day: ts.day ? ts.day : 1, + hour: ts.hour ? ts.hour : 0, + month: ts.month + 1 + }; + + if (ts.unit === 'month') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + day: 1, + value: ts.value + 1 + }); + } else if (ts.unit === 'day' || ts.unit === 'hour') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value + }); + } else if (ts.unit === 'minute') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value, + minute: ts.value + }); + } else if (ts.unit === 'second') { + return _objectSpread2(_objectSpread2({}, defaultReturn), {}, { + value: ts.value, + minute: ts.minute, + second: ts.second + }); + } + + return ts; + }); + var filteredTimeScale = adjustedMonthInTimeScaleArray.filter(function (ts) { + var modulo = 1; + var ticks = Math.ceil(w.globals.gridWidth / 120); + var value = ts.value; + + if (w.config.xaxis.tickAmount !== undefined) { + ticks = w.config.xaxis.tickAmount; + } + + if (adjustedMonthInTimeScaleArray.length > ticks) { + modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks); + } + + var shouldNotSkipUnit = false; // there is a big change in unit i.e days to months + + var shouldNotPrint = false; // should skip these values + + switch (_this.tickInterval) { + case 'years': + // make years label denser + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'half_year': + modulo = 7; + + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'months': + modulo = 1; + + if (ts.unit === 'year') { + shouldNotSkipUnit = true; + } + + break; + + case 'months_fortnight': + modulo = 15; + + if (ts.unit === 'year' || ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + if (value === 30) { + shouldNotPrint = true; + } + + break; + + case 'months_days': + modulo = 10; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + if (value === 30) { + shouldNotPrint = true; + } + + break; + + case 'week_days': + modulo = 8; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + break; + + case 'days': + modulo = 1; + + if (ts.unit === 'month') { + shouldNotSkipUnit = true; + } + + break; + + case 'hours': + if (ts.unit === 'day') { + shouldNotSkipUnit = true; + } + + break; + + case 'minutes_fives': + if (value % 5 !== 0) { + shouldNotPrint = true; + } + + break; + + case 'seconds_tens': + if (value % 10 !== 0) { + shouldNotPrint = true; + } + + break; + + case 'seconds_fives': + if (value % 5 !== 0) { + shouldNotPrint = true; + } + + break; + } + + if (_this.tickInterval === 'hours' || _this.tickInterval === 'minutes_fives' || _this.tickInterval === 'seconds_tens' || _this.tickInterval === 'seconds_fives') { + if (!shouldNotPrint) { + return true; + } + } else { + if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) { + return true; + } + } + }); + return filteredTimeScale; + } + }, { + key: "recalcDimensionsBasedOnFormat", + value: function recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) { + var w = this.w; + var reformattedTimescaleArray = this.formatDates(filteredTimeScale); + var removedOverlappingTS = this.removeOverlappingTS(reformattedTimescaleArray); + w.globals.timescaleLabels = removedOverlappingTS.slice(); // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords + // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX + // Dependency on Dimensions(), need to refactor correctly + // TODO - find an alternate way to avoid calling this Heavy method twice + + var dimensions = new Dimensions(this.ctx); + dimensions.plotCoords(); + } + }, { + key: "determineInterval", + value: function determineInterval(daysDiff) { + var yearsDiff = daysDiff / 365; + var hoursDiff = daysDiff * 24; + var minutesDiff = hoursDiff * 60; + var secondsDiff = minutesDiff * 60; + + switch (true) { + case yearsDiff > 5: + this.tickInterval = 'years'; + break; + + case daysDiff > 800: + this.tickInterval = 'half_year'; + break; + + case daysDiff > 180: + this.tickInterval = 'months'; + break; + + case daysDiff > 90: + this.tickInterval = 'months_fortnight'; + break; + + case daysDiff > 60: + this.tickInterval = 'months_days'; + break; + + case daysDiff > 30: + this.tickInterval = 'week_days'; + break; + + case daysDiff > 2: + this.tickInterval = 'days'; + break; + + case hoursDiff > 2.4: + this.tickInterval = 'hours'; + break; + + case minutesDiff > 15: + this.tickInterval = 'minutes_fives'; + break; + + case minutesDiff > 5: + this.tickInterval = 'minutes'; + break; + + case minutesDiff > 1: + this.tickInterval = 'seconds_tens'; + break; + + case secondsDiff > 20: + this.tickInterval = 'seconds_fives'; + break; + + default: + this.tickInterval = 'seconds'; + break; + } + } + }, { + key: "generateYearScale", + value: function generateYearScale(_ref) { + var firstVal = _ref.firstVal, + currentMonth = _ref.currentMonth, + currentYear = _ref.currentYear, + daysWidthOnXAxis = _ref.daysWidthOnXAxis, + numberOfYears = _ref.numberOfYears; + var firstTickValue = firstVal.minYear; + var firstTickPosition = 0; + var dt = new DateTime(this.ctx); + var unit = 'year'; + + if (firstVal.minDate > 1 || firstVal.minMonth > 0) { + var remainingDays = dt.determineRemainingDaysOfYear(firstVal.minYear, firstVal.minMonth, firstVal.minDate); // remainingDaysofFirstMonth is used to reacht the 2nd tick position + + var remainingDaysOfFirstYear = dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1; // calculate the first tick position + + firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis; + firstTickValue = firstVal.minYear + 1; // push the first tick in the array + + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: firstTickValue, + month: Utils$1.monthMod(currentMonth + 1) + }); + } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: currentYear, + month: Utils$1.monthMod(currentMonth + 1) + }); + } + + var year = firstTickValue; + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfYears; i++) { + year++; + pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos; + this.timeScaleArray.push({ + position: pos, + value: year, + unit: unit, + year: year, + month: 1 + }); + } + } + }, { + key: "generateMonthScale", + value: function generateMonthScale(_ref2) { + var firstVal = _ref2.firstVal, + currentMonthDate = _ref2.currentMonthDate, + currentMonth = _ref2.currentMonth, + currentYear = _ref2.currentYear, + daysWidthOnXAxis = _ref2.daysWidthOnXAxis, + numberOfMonths = _ref2.numberOfMonths; + var firstTickValue = currentMonth; + var firstTickPosition = 0; + var dt = new DateTime(this.ctx); + var unit = 'month'; + var yrCounter = 0; + + if (firstVal.minDate > 1) { + // remainingDaysofFirstMonth is used to reacht the 2nd tick position + var remainingDaysOfFirstMonth = dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - currentMonthDate + 1; // calculate the first tick position + + firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis; + firstTickValue = Utils$1.monthMod(currentMonth + 1); + var year = currentYear + yrCounter; + + var _month = Utils$1.monthMod(firstTickValue); + + var value = firstTickValue; // it's Jan, so update the year + + if (firstTickValue === 0) { + unit = 'year'; + value = year; + _month = 1; + yrCounter += 1; + year = year + yrCounter; + } // push the first tick in the array + + + this.timeScaleArray.push({ + position: firstTickPosition, + value: value, + unit: unit, + year: year, + month: _month + }); + } else { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + year: currentYear, + month: Utils$1.monthMod(currentMonth) + }); + } + + var month = firstTickValue + 1; + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0, j = 1; i < numberOfMonths; i++, j++) { + month = Utils$1.monthMod(month); + + if (month === 0) { + unit = 'year'; + yrCounter += 1; + } else { + unit = 'month'; + } + + var _year = this._getYear(currentYear, month, yrCounter); + + pos = dt.determineDaysOfMonths(month, _year) * daysWidthOnXAxis + pos; + var monthVal = month === 0 ? _year : month; + this.timeScaleArray.push({ + position: pos, + value: monthVal, + unit: unit, + year: _year, + month: month === 0 ? 1 : month + }); + month++; + } + } + }, { + key: "generateDayScale", + value: function generateDayScale(_ref3) { + var firstVal = _ref3.firstVal, + currentMonth = _ref3.currentMonth, + currentYear = _ref3.currentYear, + hoursWidthOnXAxis = _ref3.hoursWidthOnXAxis, + numberOfDays = _ref3.numberOfDays; + var dt = new DateTime(this.ctx); + var unit = 'day'; + var firstTickValue = firstVal.minDate + 1; + var date = firstTickValue; + + var changeMonth = function changeMonth(dateVal, month, year) { + var monthdays = dt.determineDaysOfMonths(month + 1, year); + + if (dateVal > monthdays) { + month = month + 1; + date = 1; + unit = 'month'; + val = month; + return month; + } + + return month; + }; + + var remainingHours = 24 - firstVal.minHour; + var yrCounter = 0; // calculate the first tick position + + var firstTickPosition = remainingHours * hoursWidthOnXAxis; + var val = firstTickValue; + var month = changeMonth(date, currentMonth, currentYear); + + if (firstVal.minHour === 0 && firstVal.minDate === 1) { + // the first value is the first day of month + firstTickPosition = 0; + val = Utils$1.monthMod(firstVal.minMonth); + unit = 'month'; + date = firstVal.minDate; + numberOfDays++; + } else if (firstVal.minDate !== 1 && firstVal.minHour === 0 && firstVal.minMinute === 0) { + // fixes apexcharts/apexcharts.js/issues/1730 + firstTickPosition = 0; + firstTickValue = firstVal.minDate; + date = firstTickValue; + val = firstTickValue; // in case it's the last date of month, we need to check it + + month = changeMonth(date, currentMonth, currentYear); + } // push the first tick in the array + + + this.timeScaleArray.push({ + position: firstTickPosition, + value: val, + unit: unit, + year: this._getYear(currentYear, month, yrCounter), + month: Utils$1.monthMod(month), + day: date + }); + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfDays; i++) { + date += 1; + unit = 'day'; + month = changeMonth(date, month, this._getYear(currentYear, month, yrCounter)); + + var year = this._getYear(currentYear, month, yrCounter); + + pos = 24 * hoursWidthOnXAxis + pos; + var value = date === 1 ? Utils$1.monthMod(month) : date; + this.timeScaleArray.push({ + position: pos, + value: value, + unit: unit, + year: year, + month: Utils$1.monthMod(month), + day: value + }); + } + } + }, { + key: "generateHourScale", + value: function generateHourScale(_ref4) { + var firstVal = _ref4.firstVal, + currentDate = _ref4.currentDate, + currentMonth = _ref4.currentMonth, + currentYear = _ref4.currentYear, + minutesWidthOnXAxis = _ref4.minutesWidthOnXAxis, + numberOfHours = _ref4.numberOfHours; + var dt = new DateTime(this.ctx); + var yrCounter = 0; + var unit = 'hour'; + + var changeDate = function changeDate(dateVal, month) { + var monthdays = dt.determineDaysOfMonths(month + 1, currentYear); + + if (dateVal > monthdays) { + date = 1; + month = month + 1; + } + + return { + month: month, + date: date + }; + }; + + var changeMonth = function changeMonth(dateVal, month) { + var monthdays = dt.determineDaysOfMonths(month + 1, currentYear); + + if (dateVal > monthdays) { + month = month + 1; + return month; + } + + return month; + }; // factor in minSeconds as well + + + var remainingMins = 60 - (firstVal.minMinute + firstVal.minSecond / 60.0); + var firstTickPosition = remainingMins * minutesWidthOnXAxis; + var firstTickValue = firstVal.minHour + 1; + var hour = firstTickValue + 1; + + if (remainingMins === 60) { + firstTickPosition = 0; + firstTickValue = firstVal.minHour; + hour = firstTickValue + 1; + } + + var date = currentDate; + var month = changeMonth(date, currentMonth); // push the first tick in the array + + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit: unit, + day: date, + hour: hour, + year: currentYear, + month: Utils$1.monthMod(month) + }); + var pos = firstTickPosition; // keep drawing rest of the ticks + + for (var i = 0; i < numberOfHours; i++) { + unit = 'hour'; + + if (hour >= 24) { + hour = 0; + date += 1; + unit = 'day'; + var checkNextMonth = changeDate(date, month); + month = checkNextMonth.month; + month = changeMonth(date, month); + } + + var year = this._getYear(currentYear, month, yrCounter); + + pos = hour === 0 && i === 0 ? remainingMins * minutesWidthOnXAxis : 60 * minutesWidthOnXAxis + pos; + var val = hour === 0 ? date : hour; + this.timeScaleArray.push({ + position: pos, + value: val, + unit: unit, + hour: hour, + day: date, + year: year, + month: Utils$1.monthMod(month) + }); + hour++; + } + } + }, { + key: "generateMinuteScale", + value: function generateMinuteScale(_ref5) { + var currentMillisecond = _ref5.currentMillisecond, + currentSecond = _ref5.currentSecond, + currentMinute = _ref5.currentMinute, + currentHour = _ref5.currentHour, + currentDate = _ref5.currentDate, + currentMonth = _ref5.currentMonth, + currentYear = _ref5.currentYear, + minutesWidthOnXAxis = _ref5.minutesWidthOnXAxis, + secondsWidthOnXAxis = _ref5.secondsWidthOnXAxis, + numberOfMinutes = _ref5.numberOfMinutes; + var yrCounter = 0; + var unit = 'minute'; + var remainingSecs = 60 - currentSecond; + var firstTickPosition = (remainingSecs - currentMillisecond / 1000) * secondsWidthOnXAxis; + var minute = currentMinute + 1; + var date = currentDate; + var month = currentMonth; + var year = currentYear; + var hour = currentHour; + var pos = firstTickPosition; + + for (var i = 0; i < numberOfMinutes; i++) { + if (minute >= 60) { + minute = 0; + hour += 1; + + if (hour === 24) { + hour = 0; + } + } + + this.timeScaleArray.push({ + position: pos, + value: minute, + unit: unit, + hour: hour, + minute: minute, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils$1.monthMod(month) + }); + pos += minutesWidthOnXAxis; + minute++; + } + } + }, { + key: "generateSecondScale", + value: function generateSecondScale(_ref6) { + var currentMillisecond = _ref6.currentMillisecond, + currentSecond = _ref6.currentSecond, + currentMinute = _ref6.currentMinute, + currentHour = _ref6.currentHour, + currentDate = _ref6.currentDate, + currentMonth = _ref6.currentMonth, + currentYear = _ref6.currentYear, + secondsWidthOnXAxis = _ref6.secondsWidthOnXAxis, + numberOfSeconds = _ref6.numberOfSeconds; + var yrCounter = 0; + var unit = 'second'; + var remainingMillisecs = 1000 - currentMillisecond; + var firstTickPosition = remainingMillisecs / 1000 * secondsWidthOnXAxis; + var second = currentSecond + 1; + var minute = currentMinute; + var date = currentDate; + var month = currentMonth; + var year = currentYear; + var hour = currentHour; + var pos = firstTickPosition; + + for (var i = 0; i < numberOfSeconds; i++) { + if (second >= 60) { + minute++; + second = 0; + + if (minute >= 60) { + hour++; + minute = 0; + + if (hour === 24) { + hour = 0; + } + } + } + + this.timeScaleArray.push({ + position: pos, + value: second, + unit: unit, + hour: hour, + minute: minute, + second: second, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils$1.monthMod(month) + }); + pos += secondsWidthOnXAxis; + second++; + } + } + }, { + key: "createRawDateString", + value: function createRawDateString(ts, value) { + var raw = ts.year; + + if (ts.month === 0) { + // invalid month, correct it + ts.month = 1; + } + + raw += '-' + ('0' + ts.month.toString()).slice(-2); // unit is day + + if (ts.unit === 'day') { + raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01'; + } else { + raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2); + } // unit is hour + + + if (ts.unit === 'hour') { + raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00'; + } else { + raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2); + } + + if (ts.unit === 'minute') { + raw += ':' + ('0' + value).slice(-2); + } else { + raw += ':' + (ts.minute ? ('0' + ts.minute).slice(-2) : '00'); + } + + if (ts.unit === 'second') { + raw += ':' + ('0' + value).slice(-2); + } else { + raw += ':00'; + } + + if (this.utc) { + raw += '.000Z'; + } + + return raw; + } + }, { + key: "formatDates", + value: function formatDates(filteredTimeScale) { + var _this2 = this; + + var w = this.w; + var reformattedTimescaleArray = filteredTimeScale.map(function (ts) { + var value = ts.value.toString(); + var dt = new DateTime(_this2.ctx); + + var raw = _this2.createRawDateString(ts, value); + + var dateToFormat = dt.getDate(dt.parseDate(raw)); + + if (!_this2.utc) { + // Fixes #1726, #1544, #1485, #1255 + dateToFormat = dt.getDate(dt.parseDateWithTimezone(raw)); + } + + if (w.config.xaxis.labels.format === undefined) { + var customFormat = 'dd MMM'; + var dtFormatter = w.config.xaxis.labels.datetimeFormatter; + if (ts.unit === 'year') customFormat = dtFormatter.year; + if (ts.unit === 'month') customFormat = dtFormatter.month; + if (ts.unit === 'day') customFormat = dtFormatter.day; + if (ts.unit === 'hour') customFormat = dtFormatter.hour; + if (ts.unit === 'minute') customFormat = dtFormatter.minute; + if (ts.unit === 'second') customFormat = dtFormatter.second; + value = dt.formatDate(dateToFormat, customFormat); + } else { + value = dt.formatDate(dateToFormat, w.config.xaxis.labels.format); + } + + return { + dateString: raw, + position: ts.position, + value: value, + unit: ts.unit, + year: ts.year, + month: ts.month + }; + }); + return reformattedTimescaleArray; + } + }, { + key: "removeOverlappingTS", + value: function removeOverlappingTS(arr) { + var _this3 = this; + + var graphics = new Graphics(this.ctx); + var equalLabelLengthFlag = false; // These labels got same length? + + var constantLabelWidth; // If true, what is the constant length to use + + if (arr.length > 0 && // check arr length + arr[0].value && // check arr[0] contains value + arr.every(function (lb) { + return lb.value.length === arr[0].value.length; + }) // check every arr label value is the same as the first one + ) { + equalLabelLengthFlag = true; // These labels got same length + + constantLabelWidth = graphics.getTextRects(arr[0].value).width; // The constant label width to use + } + + var lastDrawnIndex = 0; + var filteredArray = arr.map(function (item, index) { + if (index > 0 && _this3.w.config.xaxis.labels.hideOverlappingLabels) { + var prevLabelWidth = !equalLabelLengthFlag // if vary in label length + ? graphics.getTextRects(arr[lastDrawnIndex].value).width // get individual length + : constantLabelWidth; // else: use constant length + + var prevPos = arr[lastDrawnIndex].position; + var pos = item.position; + + if (pos > prevPos + prevLabelWidth + 10) { + lastDrawnIndex = index; + return item; + } else { + return null; + } + } else { + return item; + } + }); + filteredArray = filteredArray.filter(function (f) { + return f !== null; + }); + return filteredArray; + } + }, { + key: "_getYear", + value: function _getYear(currentYear, month, yrCounter) { + return currentYear + Math.floor(month / 12) + yrCounter; + } + }]); + + return TimeScale; + }(); + + /** + * ApexCharts Core Class responsible for major calculations and creating elements. + * + * @module Core + **/ + + var Core = /*#__PURE__*/function () { + function Core(el, ctx) { + _classCallCheck(this, Core); + + this.ctx = ctx; + this.w = ctx.w; + this.el = el; + } // get data and store into appropriate vars + + + _createClass(Core, [{ + key: "setupElements", + value: function setupElements() { + var gl = this.w.globals; + var cnf = this.w.config; // const graphics = new Graphics(this.ctx) + + var ct = cnf.chart.type; + var axisChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'rangeArea', 'candlestick', 'boxPlot', 'scatter', 'bubble', 'radar', 'heatmap', 'treemap']; + var xyChartsArrTypes = ['line', 'area', 'bar', 'rangeBar', 'rangeArea', 'candlestick', 'boxPlot', 'scatter', 'bubble']; + gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1; + gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1; + gl.isBarHorizontal = (cnf.chart.type === 'bar' || cnf.chart.type === 'rangeBar' || cnf.chart.type === 'boxPlot') && cnf.plotOptions.bar.horizontal; + gl.chartClass = '.apexcharts' + gl.chartID; + gl.dom.baseEl = this.el; + gl.dom.elWrap = document.createElement('div'); + Graphics.setAttrs(gl.dom.elWrap, { + id: gl.chartClass.substring(1), + class: 'apexcharts-canvas ' + gl.chartClass.substring(1) + }); + this.el.appendChild(gl.dom.elWrap); + gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap); + gl.dom.Paper.attr({ + class: 'apexcharts-svg', + 'xmlns:data': 'ApexChartsNS', + transform: "translate(".concat(cnf.chart.offsetX, ", ").concat(cnf.chart.offsetY, ")") + }); + gl.dom.Paper.node.style.background = cnf.chart.background; + this.setSVGDimensions(); + gl.dom.elGraphical = gl.dom.Paper.group().attr({ + class: 'apexcharts-inner apexcharts-graphical' + }); + gl.dom.elAnnotations = gl.dom.Paper.group().attr({ + class: 'apexcharts-annotations' + }); + gl.dom.elDefs = gl.dom.Paper.defs(); + gl.dom.elLegendWrap = document.createElement('div'); + gl.dom.elLegendWrap.classList.add('apexcharts-legend'); + gl.dom.elWrap.appendChild(gl.dom.elLegendWrap); + gl.dom.Paper.add(gl.dom.elGraphical); + gl.dom.elGraphical.add(gl.dom.elDefs); + } + }, { + key: "plotChartType", + value: function plotChartType(ser, xyRatios) { + var w = this.w; + var cnf = w.config; + var gl = w.globals; + var lineSeries = { + series: [], + i: [] + }; + var areaSeries = { + series: [], + i: [] + }; + var scatterSeries = { + series: [], + i: [] + }; + var bubbleSeries = { + series: [], + i: [] + }; + var columnSeries = { + series: [], + i: [] + }; + var candlestickSeries = { + series: [], + i: [] + }; + var boxplotSeries = { + series: [], + i: [] + }; + var rangeBarSeries = { + series: [], + i: [] + }; + var rangeAreaSeries = { + series: [], + seriesRangeEnd: [], + i: [] + }; + gl.series.map(function (serie, st) { + var comboCount = 0; // if user has specified a particular type for particular series + + if (typeof ser[st].type !== 'undefined') { + if (ser[st].type === 'column' || ser[st].type === 'bar') { + if (gl.series.length > 1 && cnf.plotOptions.bar.horizontal) { + // horizontal bars not supported in mixed charts, hence show a warning + console.warn('Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`'); + } + + columnSeries.series.push(serie); + columnSeries.i.push(st); + comboCount++; + w.globals.columnSeries = columnSeries.series; + } else if (ser[st].type === 'area') { + areaSeries.series.push(serie); + areaSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'line') { + lineSeries.series.push(serie); + lineSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'scatter') { + scatterSeries.series.push(serie); + scatterSeries.i.push(st); + } else if (ser[st].type === 'bubble') { + bubbleSeries.series.push(serie); + bubbleSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'candlestick') { + candlestickSeries.series.push(serie); + candlestickSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'boxPlot') { + boxplotSeries.series.push(serie); + boxplotSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'rangeBar') { + rangeBarSeries.series.push(serie); + rangeBarSeries.i.push(st); + comboCount++; + } else if (ser[st].type === 'rangeArea') { + rangeAreaSeries.series.push(gl.seriesRangeStart[st]); + rangeAreaSeries.seriesRangeEnd.push(gl.seriesRangeEnd[st]); + rangeAreaSeries.i.push(st); + comboCount++; + } else { + // user has specified type, but it is not valid (other than line/area/column) + console.warn('You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble'); + } + + if (comboCount > 1) { + gl.comboCharts = true; + } + } else { + lineSeries.series.push(serie); + lineSeries.i.push(st); + } + }); + var line = new Line(this.ctx, xyRatios); + var boxCandlestick = new BoxCandleStick(this.ctx, xyRatios); + this.ctx.pie = new Pie(this.ctx); + var radialBar = new Radial(this.ctx); + this.ctx.rangeBar = new RangeBar(this.ctx, xyRatios); + var radar = new Radar(this.ctx); + var elGraph = []; + + if (gl.comboCharts) { + if (areaSeries.series.length > 0) { + elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i)); + } + + if (columnSeries.series.length > 0) { + if (w.config.chart.stacked) { + var barStacked = new BarStacked(this.ctx, xyRatios); + elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i)); + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios); + elGraph.push(this.ctx.bar.draw(columnSeries.series, columnSeries.i)); + } + } + + if (rangeAreaSeries.series.length > 0) { + elGraph.push(line.draw(rangeAreaSeries.series, 'rangeArea', rangeAreaSeries.i, rangeAreaSeries.seriesRangeEnd)); + } + + if (lineSeries.series.length > 0) { + elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i)); + } + + if (candlestickSeries.series.length > 0) { + elGraph.push(boxCandlestick.draw(candlestickSeries.series, candlestickSeries.i)); + } + + if (boxplotSeries.series.length > 0) { + elGraph.push(boxCandlestick.draw(boxplotSeries.series, boxplotSeries.i)); + } + + if (rangeBarSeries.series.length > 0) { + elGraph.push(this.ctx.rangeBar.draw(rangeBarSeries.series, rangeBarSeries.i)); + } + + if (scatterSeries.series.length > 0) { + var scatterLine = new Line(this.ctx, xyRatios, true); + elGraph.push(scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i)); + } + + if (bubbleSeries.series.length > 0) { + var bubbleLine = new Line(this.ctx, xyRatios, true); + elGraph.push(bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i)); + } + } else { + switch (cnf.chart.type) { + case 'line': + elGraph = line.draw(gl.series, 'line'); + break; + + case 'area': + elGraph = line.draw(gl.series, 'area'); + break; + + case 'bar': + if (cnf.chart.stacked) { + var _barStacked = new BarStacked(this.ctx, xyRatios); + + elGraph = _barStacked.draw(gl.series); + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios); + elGraph = this.ctx.bar.draw(gl.series); + } + + break; + + case 'candlestick': + var candleStick = new BoxCandleStick(this.ctx, xyRatios); + elGraph = candleStick.draw(gl.series); + break; + + case 'boxPlot': + var boxPlot = new BoxCandleStick(this.ctx, xyRatios); + elGraph = boxPlot.draw(gl.series); + break; + + case 'rangeBar': + elGraph = this.ctx.rangeBar.draw(gl.series); + break; + + case 'rangeArea': + elGraph = line.draw(gl.seriesRangeStart, 'rangeArea', undefined, gl.seriesRangeEnd); + break; + + case 'heatmap': + var heatmap = new HeatMap(this.ctx, xyRatios); + elGraph = heatmap.draw(gl.series); + break; + + case 'treemap': + var treemap = new TreemapChart(this.ctx, xyRatios); + elGraph = treemap.draw(gl.series); + break; + + case 'pie': + case 'donut': + case 'polarArea': + elGraph = this.ctx.pie.draw(gl.series); + break; + + case 'radialBar': + elGraph = radialBar.draw(gl.series); + break; + + case 'radar': + elGraph = radar.draw(gl.series); + break; + + default: + elGraph = line.draw(gl.series); + } + } + + return elGraph; + } + }, { + key: "setSVGDimensions", + value: function setSVGDimensions() { + var gl = this.w.globals; + var cnf = this.w.config; + gl.svgWidth = cnf.chart.width; + gl.svgHeight = cnf.chart.height; + var elDim = Utils$1.getDimensions(this.el); + var widthUnit = cnf.chart.width.toString().split(/[0-9]+/g).pop(); + + if (widthUnit === '%') { + if (Utils$1.isNumber(elDim[0])) { + if (elDim[0].width === 0) { + elDim = Utils$1.getDimensions(this.el.parentNode); + } + + gl.svgWidth = elDim[0] * parseInt(cnf.chart.width, 10) / 100; + } + } else if (widthUnit === 'px' || widthUnit === '') { + gl.svgWidth = parseInt(cnf.chart.width, 10); + } + + var heightUnit = cnf.chart.height.toString().split(/[0-9]+/g).pop(); + + if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') { + if (heightUnit === '%') { + var elParentDim = Utils$1.getDimensions(this.el.parentNode); + gl.svgHeight = elParentDim[1] * parseInt(cnf.chart.height, 10) / 100; + } else { + gl.svgHeight = parseInt(cnf.chart.height, 10); + } + } else { + if (gl.axisCharts) { + gl.svgHeight = gl.svgWidth / 1.61; + } else { + gl.svgHeight = gl.svgWidth / 1.2; + } + } + + if (gl.svgWidth < 0) gl.svgWidth = 0; + if (gl.svgHeight < 0) gl.svgHeight = 0; + Graphics.setAttrs(gl.dom.Paper.node, { + width: gl.svgWidth, + height: gl.svgHeight + }); + + if (heightUnit !== '%') { + // fixes https://github.com/apexcharts/apexcharts.js/issues/2059 + var offsetY = cnf.chart.sparkline.enabled ? 0 : gl.axisCharts ? cnf.chart.parentHeightOffset : 0; + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = gl.svgHeight + offsetY + 'px'; + } + + gl.dom.elWrap.style.width = gl.svgWidth + 'px'; + gl.dom.elWrap.style.height = gl.svgHeight + 'px'; + } + }, { + key: "shiftGraphPosition", + value: function shiftGraphPosition() { + var gl = this.w.globals; + var tY = gl.translateY; + var tX = gl.translateX; + var scalingAttrs = { + transform: 'translate(' + tX + ', ' + tY + ')' + }; + Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs); + } // To prevent extra spacings in the bottom of the chart, we need to recalculate the height for pie/donut/radialbar charts + + }, { + key: "resizeNonAxisCharts", + value: function resizeNonAxisCharts() { + var w = this.w; + var gl = w.globals; + var legendHeight = 0; + var offY = w.config.chart.sparkline.enabled ? 1 : 15; + offY = offY + w.config.grid.padding.bottom; + + if ((w.config.legend.position === 'top' || w.config.legend.position === 'bottom') && w.config.legend.show && !w.config.legend.floating) { + legendHeight = new Legend(this.ctx).legendHelpers.getLegendBBox().clwh + 10; + } + + var el = w.globals.dom.baseEl.querySelector('.apexcharts-radialbar, .apexcharts-pie'); + var chartInnerDimensions = w.globals.radialSize * 2.05; + + if (el && !w.config.chart.sparkline.enabled && w.config.plotOptions.radialBar.startAngle !== 0) { + var elRadialRect = Utils$1.getBoundingClientRect(el); + chartInnerDimensions = elRadialRect.bottom; + var maxHeight = elRadialRect.bottom - elRadialRect.top; + chartInnerDimensions = Math.max(w.globals.radialSize * 2.05, maxHeight); + } + + var newHeight = chartInnerDimensions + gl.translateY + legendHeight + offY; + + if (gl.dom.elLegendForeign) { + gl.dom.elLegendForeign.setAttribute('height', newHeight); + } // fix apexcharts/apexcharts.js/issues/3105 (when % is provided in height, it keeps increasing) + + + if (w.config.chart.height && String(w.config.chart.height).indexOf('%') > 0) return; + gl.dom.elWrap.style.height = newHeight + 'px'; + Graphics.setAttrs(gl.dom.Paper.node, { + height: newHeight + }); + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = newHeight + 'px'; + } + /* + ** All the calculations for setting range in charts will be done here + */ + + }, { + key: "coreCalculations", + value: function coreCalculations() { + var range = new Range(this.ctx); + range.init(); + } + }, { + key: "resetGlobals", + value: function resetGlobals() { + var _this = this; + + var resetxyValues = function resetxyValues() { + return _this.w.config.series.map(function (s) { + return []; + }); + }; + + var globalObj = new Globals(); + var gl = this.w.globals; + globalObj.initGlobalVars(gl); + gl.seriesXvalues = resetxyValues(); + gl.seriesYvalues = resetxyValues(); + } + }, { + key: "isMultipleY", + value: function isMultipleY() { + // user has supplied an array in yaxis property. So, turn on multipleYAxis flag + if (this.w.config.yaxis.constructor === Array && this.w.config.yaxis.length > 1) { + this.w.globals.isMultipleYAxis = true; + return true; + } + } + }, { + key: "xySettings", + value: function xySettings() { + var xyRatios = null; + var w = this.w; + + if (w.globals.axisCharts) { + if (w.config.xaxis.crosshairs.position === 'back') { + var crosshairs = new Crosshairs(this.ctx); + crosshairs.drawXCrosshairs(); + } + + if (w.config.yaxis[0].crosshairs.position === 'back') { + var _crosshairs = new Crosshairs(this.ctx); + + _crosshairs.drawYCrosshairs(); + } + + if (w.config.xaxis.type === 'datetime' && w.config.xaxis.labels.formatter === undefined) { + this.ctx.timeScale = new TimeScale(this.ctx); + var formattedTimeScale = []; + + if (isFinite(w.globals.minX) && isFinite(w.globals.maxX) && !w.globals.isBarHorizontal) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks(w.globals.minX, w.globals.maxX); + } else if (w.globals.isBarHorizontal) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks(w.globals.minY, w.globals.maxY); + } + + this.ctx.timeScale.recalcDimensionsBasedOnFormat(formattedTimeScale); + } + + var coreUtils = new CoreUtils(this.ctx); + xyRatios = coreUtils.getCalculatedRatios(); + } + + return xyRatios; + } + }, { + key: "updateSourceChart", + value: function updateSourceChart(targetChart) { + this.ctx.w.globals.selection = undefined; + + this.ctx.updateHelpers._updateOptions({ + chart: { + selection: { + xaxis: { + min: targetChart.w.globals.minX, + max: targetChart.w.globals.maxX + } + } + } + }, false, false); + } + }, { + key: "setupBrushHandler", + value: function setupBrushHandler() { + var _this2 = this; + + var w = this.w; // only for brush charts + + if (!w.config.chart.brush.enabled) { + return; + } // if user has not defined a custom function for selection - we handle the brush chart + // otherwise we leave it to the user to define the functionality for selection + + + if (typeof w.config.chart.events.selection !== 'function') { + var targets = w.config.chart.brush.targets || [w.config.chart.brush.target]; // retro compatibility with single target option + + targets.forEach(function (target) { + var targetChart = ApexCharts.getChartByID(target); + targetChart.w.globals.brushSource = _this2.ctx; + + if (typeof targetChart.w.config.chart.events.zoomed !== 'function') { + targetChart.w.config.chart.events.zoomed = function () { + _this2.updateSourceChart(targetChart); + }; + } + + if (typeof targetChart.w.config.chart.events.scrolled !== 'function') { + targetChart.w.config.chart.events.scrolled = function () { + _this2.updateSourceChart(targetChart); + }; + } + }); + + w.config.chart.events.selection = function (chart, e) { + targets.forEach(function (target) { + var targetChart = ApexCharts.getChartByID(target); + var yaxis = Utils$1.clone(w.config.yaxis); + + if (w.config.chart.brush.autoScaleYaxis && targetChart.w.globals.series.length === 1) { + var scale = new Range$1(targetChart); + yaxis = scale.autoScaleY(targetChart, yaxis, e); + } + + var multipleYaxis = targetChart.w.config.yaxis.reduce(function (acc, curr, index) { + return [].concat(_toConsumableArray(acc), [_objectSpread2(_objectSpread2({}, targetChart.w.config.yaxis[index]), {}, { + min: yaxis[0].min, + max: yaxis[0].max + })]); + }, []); + + targetChart.ctx.updateHelpers._updateOptions({ + xaxis: { + min: e.xaxis.min, + max: e.xaxis.max + }, + yaxis: multipleYaxis + }, false, false, false, false); + }); + }; + } + } + }]); + + return Core; + }(); + + var UpdateHelpers = /*#__PURE__*/function () { + function UpdateHelpers(ctx) { + _classCallCheck(this, UpdateHelpers); + + this.ctx = ctx; + this.w = ctx.w; + } + /** + * private method to update Options. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + * @param {boolean} overwriteInitialConfig - should update the initial config or not + */ + + + _createClass(UpdateHelpers, [{ + key: "_updateOptions", + value: function _updateOptions(options) { + var _this = this; + + var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + return new Promise(function (resolve) { + var charts = [_this.ctx]; + + if (updateSyncedCharts) { + charts = _this.ctx.getSyncedCharts(); + } + + if (_this.ctx.w.globals.isExecCalled) { + // If the user called exec method, we don't want to get grouped charts as user specifically provided a chartID to update + charts = [_this.ctx]; + _this.ctx.w.globals.isExecCalled = false; + } + + charts.forEach(function (ch, chartIndex) { + var w = ch.w; + w.globals.shouldAnimate = animate; + + if (!redraw) { + w.globals.resized = true; + w.globals.dataChanged = true; + + if (animate) { + ch.series.getPreviousPaths(); + } + } + + if (options && _typeof(options) === 'object') { + ch.config = new Config(options); + options = CoreUtils.extendArrayProps(ch.config, options, w); // fixes #914, #623 + + if (ch.w.globals.chartID !== _this.ctx.w.globals.chartID) { + // don't overwrite series of synchronized charts + delete options.series; + } + + w.config = Utils$1.extend(w.config, options); + + if (overwriteInitialConfig) { + // we need to forget the lastXAxis and lastYAxis as user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user. + w.globals.lastXAxis = options.xaxis ? Utils$1.clone(options.xaxis) : []; + w.globals.lastYAxis = options.yaxis ? Utils$1.clone(options.yaxis) : []; // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries + + w.globals.initialConfig = Utils$1.extend({}, w.config); + w.globals.initialSeries = Utils$1.clone(w.config.series); + + if (options.series) { + // Replace the collapsed series data + for (var i = 0; i < w.globals.collapsedSeriesIndices.length; i++) { + var series = w.config.series[w.globals.collapsedSeriesIndices[i]]; + w.globals.collapsedSeries[i].data = w.globals.axisCharts ? series.data.slice() : series; + } + + for (var _i = 0; _i < w.globals.ancillaryCollapsedSeriesIndices.length; _i++) { + var _series = w.config.series[w.globals.ancillaryCollapsedSeriesIndices[_i]]; + w.globals.ancillaryCollapsedSeries[_i].data = w.globals.axisCharts ? _series.data.slice() : _series; + } // Ensure that auto-generated axes are scaled to the visible data + + + ch.series.emptyCollapsedSeries(w.config.series); + } + } + } + + return ch.update(options).then(function () { + if (chartIndex === charts.length - 1) { + resolve(ch); + } + }); + }); + }); + } + /** + * Private method to update Series. + * + * @param {array} series - New series which will override the existing + */ + + }, { + key: "_updateSeries", + value: function _updateSeries(newSeries, animate) { + var _this2 = this; + + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + return new Promise(function (resolve) { + var w = _this2.w; + w.globals.shouldAnimate = animate; + w.globals.dataChanged = true; + + if (animate) { + _this2.ctx.series.getPreviousPaths(); + } + + var existingSeries; // axis charts + + if (w.globals.axisCharts) { + existingSeries = newSeries.map(function (s, i) { + return _this2._extendSeries(s, i); + }); + + if (existingSeries.length === 0) { + existingSeries = [{ + data: [] + }]; + } + + w.config.series = existingSeries; + } else { + // non-axis chart (pie/radialbar) + w.config.series = newSeries.slice(); + } + + if (overwriteInitialSeries) { + w.globals.initialConfig.series = Utils$1.clone(w.config.series); + w.globals.initialSeries = Utils$1.clone(w.config.series); + } + + return _this2.ctx.update().then(function () { + resolve(_this2.ctx); + }); + }); + } + }, { + key: "_extendSeries", + value: function _extendSeries(s, i) { + var w = this.w; + var ser = w.config.series[i]; + return _objectSpread2(_objectSpread2({}, w.config.series[i]), {}, { + name: s.name ? s.name : ser && ser.name, + color: s.color ? s.color : ser && ser.color, + type: s.type ? s.type : ser && ser.type, + data: s.data ? s.data : ser && ser.data + }); + } + }, { + key: "toggleDataPointSelection", + value: function toggleDataPointSelection(seriesIndex, dataPointIndex) { + var w = this.w; + var elPath = null; + var parent = ".apexcharts-series[data\\:realIndex='".concat(seriesIndex, "']"); + + if (w.globals.axisCharts) { + elPath = w.globals.dom.Paper.select("".concat(parent, " path[j='").concat(dataPointIndex, "'], ").concat(parent, " circle[j='").concat(dataPointIndex, "'], ").concat(parent, " rect[j='").concat(dataPointIndex, "']")).members[0]; + } else { + // dataPointIndex will be undefined here, hence using seriesIndex + if (typeof dataPointIndex === 'undefined') { + elPath = w.globals.dom.Paper.select("".concat(parent, " path[j='").concat(seriesIndex, "']")).members[0]; + + if (w.config.chart.type === 'pie' || w.config.chart.type === 'polarArea' || w.config.chart.type === 'donut') { + this.ctx.pie.pieClicked(seriesIndex); + } + } + } + + if (elPath) { + var graphics = new Graphics(this.ctx); + graphics.pathMouseDown(elPath, null); + } else { + console.warn('toggleDataPointSelection: Element not found'); + return null; + } + + return elPath.node ? elPath.node : null; + } + }, { + key: "forceXAxisUpdate", + value: function forceXAxisUpdate(options) { + var w = this.w; + var minmax = ['min', 'max']; + minmax.forEach(function (a) { + if (typeof options.xaxis[a] !== 'undefined') { + w.config.xaxis[a] = options.xaxis[a]; + w.globals.lastXAxis[a] = options.xaxis[a]; + } + }); + + if (options.xaxis.categories && options.xaxis.categories.length) { + w.config.xaxis.categories = options.xaxis.categories; + } + + if (w.config.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(options); + options = defaults.convertCatToNumericXaxis(options, this.ctx); + } + + return options; + } + }, { + key: "forceYAxisUpdate", + value: function forceYAxisUpdate(options) { + if (options.chart && options.chart.stacked && options.chart.stackType === '100%') { + if (Array.isArray(options.yaxis)) { + options.yaxis.forEach(function (yaxe, index) { + options.yaxis[index].min = 0; + options.yaxis[index].max = 100; + }); + } else { + options.yaxis.min = 0; + options.yaxis.max = 100; + } + } + + return options; + } + /** + * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined. + * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max + * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally + * The function also accepts an object {xaxis, yaxis} which when present is set as the new xaxis/yaxis + */ + + }, { + key: "revertDefaultAxisMinMax", + value: function revertDefaultAxisMinMax(opts) { + var _this3 = this; + + var w = this.w; + var xaxis = w.globals.lastXAxis; + var yaxis = w.globals.lastYAxis; + + if (opts && opts.xaxis) { + xaxis = opts.xaxis; + } + + if (opts && opts.yaxis) { + yaxis = opts.yaxis; + } + + w.config.xaxis.min = xaxis.min; + w.config.xaxis.max = xaxis.max; + + var getLastYAxis = function getLastYAxis(index) { + if (typeof yaxis[index] !== 'undefined') { + w.config.yaxis[index].min = yaxis[index].min; + w.config.yaxis[index].max = yaxis[index].max; + } + }; + + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.zoomed) { + // user has zoomed, check the last yaxis + getLastYAxis(index); + } else { + // user hasn't zoomed, check the last yaxis first + if (typeof yaxis[index] !== 'undefined') { + getLastYAxis(index); + } else { + // if last y-axis don't exist, check the original yaxis + if (typeof _this3.ctx.opts.yaxis[index] !== 'undefined') { + yaxe.min = _this3.ctx.opts.yaxis[index].min; + yaxe.max = _this3.ctx.opts.yaxis[index].max; + } + } + } + }); + } + }]); + + return UpdateHelpers; + }(); + + (function (root, factory) { + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(function () { + return factory(root, root.document); + }); + /* below check fixes #412 */ + } else if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined') { + module.exports = root.document ? factory(root, root.document) : function (w) { + return factory(w, w.document); + }; + } else { + root.SVG = factory(root, root.document); + } + })(typeof window !== 'undefined' ? window : undefined, function (window, document) { + // Find global reference - uses 'this' by default when available, + // falls back to 'window' otherwise (for bundlers like Webpack) + var globalRef = typeof this !== 'undefined' ? this : window; // The main wrapping element + + var SVG = globalRef.SVG = function (element) { + if (SVG.supported) { + element = new SVG.Doc(element); + + if (!SVG.parser.draw) { + SVG.prepare(); + } + + return element; + } + }; // Default namespaces + + + SVG.ns = 'http://www.w3.org/2000/svg'; + SVG.xmlns = 'http://www.w3.org/2000/xmlns/'; + SVG.xlink = 'http://www.w3.org/1999/xlink'; + SVG.svgjs = 'http://svgjs.dev'; // Svg support test + + SVG.supported = function () { + return true; // !!document.createElementNS && + // !! document.createElementNS(SVG.ns,'svg').createSVGRect + }(); // Don't bother to continue if SVG is not supported + + + if (!SVG.supported) return false; // Element id sequence + + SVG.did = 1000; // Get next named element id + + SVG.eid = function (name) { + return 'Svgjs' + capitalize(name) + SVG.did++; + }; // Method for element creation + + + SVG.create = function (name) { + // create element + var element = document.createElementNS(this.ns, name); // apply unique id + + element.setAttribute('id', this.eid(name)); + return element; + }; // Method for extending objects + + + SVG.extend = function () { + var modules, methods; // Get list of modules + + modules = [].slice.call(arguments); // Get object with extensions + + methods = modules.pop(); + + for (var i = modules.length - 1; i >= 0; i--) { + if (modules[i]) { + for (var key in methods) { + modules[i].prototype[key] = methods[key]; + } + } + } // Make sure SVG.Set inherits any newly added methods + + + if (SVG.Set && SVG.Set.inherit) { + SVG.Set.inherit(); + } + }; // Invent new element + + + SVG.invent = function (config) { + // Create element initializer + var initializer = typeof config.create === 'function' ? config.create : function () { + this.constructor.call(this, SVG.create(config.create)); + }; // Inherit prototype + + if (config.inherit) { + initializer.prototype = new config.inherit(); + } // Extend with methods + + + if (config.extend) { + SVG.extend(initializer, config.extend); + } // Attach construct method to parent + + + if (config.construct) { + SVG.extend(config.parent || SVG.Container, config.construct); + } + + return initializer; + }; // Adopt existing svg elements + + + SVG.adopt = function (node) { + // check for presence of node + if (!node) return null; // make sure a node isn't already adopted + + if (node.instance) return node.instance; // initialize variables + + var element; // adopt with element-specific settings + + if (node.nodeName == 'svg') { + element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc(); + } else if (node.nodeName == 'linearGradient') { + element = new SVG.Gradient('linear'); + } else if (node.nodeName == 'radialGradient') { + element = new SVG.Gradient('radial'); + } else if (SVG[capitalize(node.nodeName)]) { + element = new SVG[capitalize(node.nodeName)](); + } else { + element = new SVG.Element(node); + } // ensure references + + + element.type = node.nodeName; + element.node = node; + node.instance = element; // SVG.Class specific preparations + + if (element instanceof SVG.Doc) { + element.namespace().defs(); + } // pull svgjs data from the dom (getAttributeNS doesn't work in html5) + + + element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {}); + return element; + }; // Initialize parsing element + + + SVG.prepare = function () { + // Select document body and create invisible svg element + var body = document.getElementsByTagName('body')[0], + draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0); // Create parser object + + SVG.parser = { + body: body || document.documentElement, + draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node, + poly: draw.polyline().node, + path: draw.path().node, + native: SVG.create('svg') + }; + }; + + SVG.parser = { + native: SVG.create('svg') + }; + document.addEventListener('DOMContentLoaded', function () { + if (!SVG.parser.draw) { + SVG.prepare(); + } + }, false); // Storage for regular expressions + + SVG.regex = { + // Parse unit value + numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i, + // Parse hex value + hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, + // Parse rgb value + rgb: /rgb\((\d+),(\d+),(\d+)\)/, + // Parse reference id + reference: /#([a-z0-9\-_]+)/i, + // splits a transformation chain + transforms: /\)\s*,?\s*/, + // Whitespace + whitespace: /\s/g, + // Test hex value + isHex: /^#[a-f0-9]{3,6}$/i, + // Test rgb value + isRgb: /^rgb\(/, + // Test css declaration + isCss: /[^:]+:[^;]+;?/, + // Test for blank string + isBlank: /^(\s+)?$/, + // Test for numeric string + isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + // Test for percent value + isPercent: /^-?[\d\.]+%$/, + // Test for image url + isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i, + // split at whitespace and comma + delimiter: /[\s,]+/, + // The following regex are used to parse the d attribute of a path + // Matches all hyphens which are not after an exponent + hyphen: /([^e])\-/gi, + // Replaces and tests for all path letters + pathLetters: /[MLHVCSQTAZ]/gi, + // yes we need this one, too + isPathLetter: /[MLHVCSQTAZ]/i, + // matches 0.154.23.45 + numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi, + // matches . + dots: /\./g + }; + SVG.utils = { + // Map function + map: function map(array, block) { + var il = array.length, + result = []; + + for (var i = 0; i < il; i++) { + result.push(block(array[i])); + } + + return result; + }, + // Filter function + filter: function filter(array, block) { + var il = array.length, + result = []; + + for (var i = 0; i < il; i++) { + if (block(array[i])) { + result.push(array[i]); + } + } + + return result; + }, + filterSVGElements: function filterSVGElements(nodes) { + return this.filter(nodes, function (el) { + return el instanceof window.SVGElement; + }); + } + }; + SVG.defaults = { + // Default attribute values + attrs: { + // fill and stroke + 'fill-opacity': 1, + 'stroke-opacity': 1, + 'stroke-width': 0, + 'stroke-linejoin': 'miter', + 'stroke-linecap': 'butt', + fill: '#000000', + stroke: '#000000', + opacity: 1, + // position + x: 0, + y: 0, + cx: 0, + cy: 0, + // size + width: 0, + height: 0, + // radius + r: 0, + rx: 0, + ry: 0, + // gradient + offset: 0, + 'stop-opacity': 1, + 'stop-color': '#000000', + // text + 'font-size': 16, + 'font-family': 'Helvetica, Arial, sans-serif', + 'text-anchor': 'start' + } + }; // Module for color convertions + + SVG.Color = function (color) { + var match; // initialize defaults + + this.r = 0; + this.g = 0; + this.b = 0; + if (!color) return; // parse color + + if (typeof color === 'string') { + if (SVG.regex.isRgb.test(color)) { + // get rgb values + match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')); // parse numeric values + + this.r = parseInt(match[1]); + this.g = parseInt(match[2]); + this.b = parseInt(match[3]); + } else if (SVG.regex.isHex.test(color)) { + // get hex values + match = SVG.regex.hex.exec(fullHex(color)); // parse numeric values + + this.r = parseInt(match[1], 16); + this.g = parseInt(match[2], 16); + this.b = parseInt(match[3], 16); + } + } else if (_typeof(color) === 'object') { + this.r = color.r; + this.g = color.g; + this.b = color.b; + } + }; + + SVG.extend(SVG.Color, { + // Default to hex conversion + toString: function toString() { + return this.toHex(); + }, + // Build hex value + toHex: function toHex() { + return '#' + compToHex(this.r) + compToHex(this.g) + compToHex(this.b); + }, + // Build rgb value + toRgb: function toRgb() { + return 'rgb(' + [this.r, this.g, this.b].join() + ')'; + }, + // Calculate true brightness + brightness: function brightness() { + return this.r / 255 * 0.30 + this.g / 255 * 0.59 + this.b / 255 * 0.11; + }, + // Make color morphable + morph: function morph(color) { + this.destination = new SVG.Color(color); + return this; + }, + // Get morphed color at given position + at: function at(pos) { + // make sure a destination is defined + if (!this.destination) return this; // normalise pos + + pos = pos < 0 ? 0 : pos > 1 ? 1 : pos; // generate morphed color + + return new SVG.Color({ + r: ~~(this.r + (this.destination.r - this.r) * pos), + g: ~~(this.g + (this.destination.g - this.g) * pos), + b: ~~(this.b + (this.destination.b - this.b) * pos) + }); + } + }); // Testers + // Test if given value is a color string + + SVG.Color.test = function (color) { + color += ''; + return SVG.regex.isHex.test(color) || SVG.regex.isRgb.test(color); + }; // Test if given value is a rgb object + + + SVG.Color.isRgb = function (color) { + return color && typeof color.r === 'number' && typeof color.g === 'number' && typeof color.b === 'number'; + }; // Test if given value is a color + + + SVG.Color.isColor = function (color) { + return SVG.Color.isRgb(color) || SVG.Color.test(color); + }; // Module for array conversion + + + SVG.Array = function (array, fallback) { + array = (array || []).valueOf(); // if array is empty and fallback is provided, use fallback + + if (array.length == 0 && fallback) { + array = fallback.valueOf(); + } // parse array + + + this.value = this.parse(array); + }; + + SVG.extend(SVG.Array, { + // Convert array to string + toString: function toString() { + return this.value.join(' '); + }, + // Real value + valueOf: function valueOf() { + return this.value; + }, + // Parse whitespace separated string + parse: function parse(array) { + array = array.valueOf(); // if already is an array, no need to parse it + + if (Array.isArray(array)) return array; + return this.split(array); + } + }); // Poly points array + + SVG.PointArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [[0, 0]]); + }; // Inherit from SVG.Array + + + SVG.PointArray.prototype = new SVG.Array(); + SVG.PointArray.prototype.constructor = SVG.PointArray; + var pathHandlers = { + M: function M(c, p, p0) { + p.x = p0.x = c[0]; + p.y = p0.y = c[1]; + return ['M', p.x, p.y]; + }, + L: function L(c, p) { + p.x = c[0]; + p.y = c[1]; + return ['L', c[0], c[1]]; + }, + H: function H(c, p) { + p.x = c[0]; + return ['H', c[0]]; + }, + V: function V(c, p) { + p.y = c[0]; + return ['V', c[0]]; + }, + C: function C(c, p) { + p.x = c[4]; + p.y = c[5]; + return ['C', c[0], c[1], c[2], c[3], c[4], c[5]]; + }, + Q: function Q(c, p) { + p.x = c[2]; + p.y = c[3]; + return ['Q', c[0], c[1], c[2], c[3]]; + }, + Z: function Z(c, p, p0) { + p.x = p0.x; + p.y = p0.y; + return ['Z']; + } + }; + var mlhvqtcsa = 'mlhvqtcsaz'.split(''); + + for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) { + pathHandlers[mlhvqtcsa[i]] = function (i) { + return function (c, p, p0) { + if (i == 'H') c[0] = c[0] + p.x;else if (i == 'V') c[0] = c[0] + p.y;else if (i == 'A') { + c[5] = c[5] + p.x, c[6] = c[6] + p.y; + } else { + for (var j = 0, jl = c.length; j < jl; ++j) { + c[j] = c[j] + (j % 2 ? p.y : p.x); + } + } + + if (pathHandlers && typeof pathHandlers[i] === 'function') { + // this check fixes jest unit tests + return pathHandlers[i](c, p, p0); + } + }; + }(mlhvqtcsa[i].toUpperCase()); + } // Path points array + + + SVG.PathArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [['M', 0, 0]]); + }; // Inherit from SVG.Array + + + SVG.PathArray.prototype = new SVG.Array(); + SVG.PathArray.prototype.constructor = SVG.PathArray; + SVG.extend(SVG.PathArray, { + // Convert array to string + toString: function toString() { + return arrayToString(this.value); + }, + // Move path string + move: function move(x, y) { + // get bounding box of current situation + var box = this.bbox(); // get relative offset + + x -= box.x; + y -= box.y; + return this; + }, + // Get morphed path array at given position + at: function at(pos) { + // make sure a destination is defined + if (!this.destination) return this; + var sourceArray = this.value, + destinationArray = this.destination.value, + array = [], + pathArray = new SVG.PathArray(), + il, + jl; // Animate has specified in the SVG spec + // See: https://www.w3.org/TR/SVG11/paths.html#PathElement + + for (var i = 0, il = sourceArray.length; i < il; i++) { + array[i] = [sourceArray[i][0]]; + + for (var j = 1, jl = sourceArray[i].length; j < jl; j++) { + array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos; + } // For the two flags of the elliptical arc command, the SVG spec say: + // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true + // Elliptical arc command as an array followed by corresponding indexes: + // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y] + // 0 1 2 3 4 5 6 7 + + + if (array[i][0] === 'A') { + array[i][4] = +(array[i][4] != 0); + array[i][5] = +(array[i][5] != 0); + } + } // Directly modify the value of a path array, this is done this way for performance + + + pathArray.value = array; + return pathArray; + }, + // Absolutize and parse path to array + parse: function parse(array) { + // if it's already a patharray, no need to parse it + if (array instanceof SVG.PathArray) return array.valueOf(); // prepare for parsing + + var s, + arr, + paramCnt = { + 'M': 2, + 'L': 2, + 'H': 1, + 'V': 1, + 'C': 6, + 'S': 4, + 'Q': 4, + 'T': 2, + 'A': 7, + 'Z': 0 + }; + + if (typeof array === 'string') { + array = array.replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123 + .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers + .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen + .trim() // trim + .split(SVG.regex.delimiter); // split into array + } else { + array = array.reduce(function (prev, curr) { + return [].concat.call(prev, curr); + }, []); + } // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...] + + + var arr = [], + p = new SVG.Point(), + p0 = new SVG.Point(), + index = 0, + len = array.length; + + do { + // Test if we have a path letter + if (SVG.regex.isPathLetter.test(array[index])) { + s = array[index]; + ++index; // If last letter was a move command and we got no new, it defaults to [L]ine + } else if (s == 'M') { + s = 'L'; + } else if (s == 'm') { + s = 'l'; + } + + arr.push(pathHandlers[s].call(null, array.slice(index, index = index + paramCnt[s.toUpperCase()]).map(parseFloat), p, p0)); + } while (len > index); + + return arr; + }, + // Get bounding box of path + bbox: function bbox() { + if (!SVG.parser.draw) { + SVG.prepare(); + } + + SVG.parser.path.setAttribute('d', this.toString()); + return SVG.parser.path.getBBox(); + } + }); // Module for unit convertions + + SVG.Number = SVG.invent({ + // Initialize + create: function create(value, unit) { + // initialize defaults + this.value = 0; + this.unit = unit || ''; // parse value + + if (typeof value === 'number') { + // ensure a valid numeric value + this.value = isNaN(value) ? 0 : !isFinite(value) ? value < 0 ? -3.4e+38 : +3.4e+38 : value; + } else if (typeof value === 'string') { + unit = value.match(SVG.regex.numberAndUnit); + + if (unit) { + // make value numeric + this.value = parseFloat(unit[1]); // normalize + + if (unit[5] == '%') { + this.value /= 100; + } else if (unit[5] == 's') { + this.value *= 1000; + } // store unit + + + this.unit = unit[5]; + } + } else { + if (value instanceof SVG.Number) { + this.value = value.valueOf(); + this.unit = value.unit; + } + } + }, + // Add methods + extend: { + // Stringalize + toString: function toString() { + return (this.unit == '%' ? ~~(this.value * 1e8) / 1e6 : this.unit == 's' ? this.value / 1e3 : this.value) + this.unit; + }, + toJSON: function toJSON() { + return this.toString(); + }, + // Convert to primitive + valueOf: function valueOf() { + return this.value; + }, + // Add number + plus: function plus(number) { + number = new SVG.Number(number); + return new SVG.Number(this + number, this.unit || number.unit); + }, + // Subtract number + minus: function minus(number) { + number = new SVG.Number(number); + return new SVG.Number(this - number, this.unit || number.unit); + }, + // Multiply number + times: function times(number) { + number = new SVG.Number(number); + return new SVG.Number(this * number, this.unit || number.unit); + }, + // Divide number + divide: function divide(number) { + number = new SVG.Number(number); + return new SVG.Number(this / number, this.unit || number.unit); + }, + // Convert to different unit + to: function to(unit) { + var number = new SVG.Number(this); + + if (typeof unit === 'string') { + number.unit = unit; + } + + return number; + }, + // Make number morphable + morph: function morph(number) { + this.destination = new SVG.Number(number); + + if (number.relative) { + this.destination.value += this.value; + } + + return this; + }, + // Get morphed number at given position + at: function at(pos) { + // Make sure a destination is defined + if (!this.destination) return this; // Generate new morphed number + + return new SVG.Number(this.destination).minus(this).times(pos).plus(this); + } + } + }); + SVG.Element = SVG.invent({ + // Initialize node + create: function create(node) { + // make stroke value accessible dynamically + this._stroke = SVG.defaults.attrs.stroke; + this._event = null; // initialize data object + + this.dom = {}; // create circular reference + + if (this.node = node) { + this.type = node.nodeName; + this.node.instance = this; // store current attribute value + + this._stroke = node.getAttribute('stroke') || this._stroke; + } + }, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x) { + return this.attr('x', _x); + }, + // Move over y-axis + y: function y(_y) { + return this.attr('y', _y); + }, + // Move by center over x-axis + cx: function cx(x) { + return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2); + }, + // Move by center over y-axis + cy: function cy(y) { + return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2); + }, + // Move element to given x and y values + move: function move(x, y) { + return this.x(x).y(y); + }, + // Move element by its center + center: function center(x, y) { + return this.cx(x).cy(y); + }, + // Set width of element + width: function width(_width) { + return this.attr('width', _width); + }, + // Set height of element + height: function height(_height) { + return this.attr('height', _height); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.width(new SVG.Number(p.width)).height(new SVG.Number(p.height)); + }, + // Clone element + clone: function clone(parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom(); // clone element and assign new id + + var clone = assignNewId(this.node.cloneNode(true)); // insert the clone in the given parent or after myself + + if (parent) parent.add(clone);else this.after(clone); + return clone; + }, + // Remove element + remove: function remove() { + if (this.parent()) { + this.parent().removeElement(this); + } + + return this; + }, + // Replace element + replace: function replace(element) { + this.after(element).remove(); + return element; + }, + // Add element to given container and return self + addTo: function addTo(parent) { + return parent.put(this); + }, + // Add element to given container and return container + putIn: function putIn(parent) { + return parent.add(this); + }, + // Get / set id + id: function id(_id) { + return this.attr('id', _id); + }, + // Show element + show: function show() { + return this.style('display', ''); + }, + // Hide element + hide: function hide() { + return this.style('display', 'none'); + }, + // Is element visible? + visible: function visible() { + return this.style('display') != 'none'; + }, + // Return id on string conversion + toString: function toString() { + return this.attr('id'); + }, + // Return array of classes on the node + classes: function classes() { + var attr = this.attr('class'); + return attr == null ? [] : attr.trim().split(SVG.regex.delimiter); + }, + // Return true if class exists on the node, false otherwise + hasClass: function hasClass(name) { + return this.classes().indexOf(name) != -1; + }, + // Add class to the node + addClass: function addClass(name) { + if (!this.hasClass(name)) { + var array = this.classes(); + array.push(name); + this.attr('class', array.join(' ')); + } + + return this; + }, + // Remove class from the node + removeClass: function removeClass(name) { + if (this.hasClass(name)) { + this.attr('class', this.classes().filter(function (c) { + return c != name; + }).join(' ')); + } + + return this; + }, + // Toggle the presence of a class on the node + toggleClass: function toggleClass(name) { + return this.hasClass(name) ? this.removeClass(name) : this.addClass(name); + }, + // Get referenced element form attribute value + reference: function reference(attr) { + return SVG.get(this.attr(attr)); + }, + // Returns the parent element instance + parent: function parent(type) { + var parent = this; // check for parent + + if (!parent.node.parentNode) return null; // get parent element + + parent = SVG.adopt(parent.node.parentNode); + if (!type) return parent; // loop trough ancestors if type is given + + while (parent && parent.node instanceof window.SVGElement) { + if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent; + if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null; // #759, #720 + + parent = SVG.adopt(parent.node.parentNode); + } + }, + // Get parent document + doc: function doc() { + return this instanceof SVG.Doc ? this : this.parent(SVG.Doc); + }, + // return array of all ancestors of given type up to the root svg + parents: function parents(type) { + var parents = [], + parent = this; + + do { + parent = parent.parent(type); + if (!parent || !parent.node) break; + parents.push(parent); + } while (parent.parent); + + return parents; + }, + // matches the element vs a css selector + matches: function matches(selector) { + return _matches(this.node, selector); + }, + // Returns the svg node to call native svg methods on it + native: function native() { + return this.node; + }, + // Import raw svg + svg: function svg(_svg) { + // create temporary holder + var well = document.createElement('svg'); // act as a setter if svg is given + + if (_svg && this instanceof SVG.Parent) { + // dump raw svg + well.innerHTML = '' + _svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2>') + ''; // transplant nodes + + for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) { + this.node.appendChild(well.firstChild.firstChild); + } // otherwise act as a getter + + } else { + // create a wrapping svg element in case of partial content + well.appendChild(_svg = document.createElement('svg')); // write svgjs data to the dom + + this.writeDataToDom(); // insert a copy of this node + + _svg.appendChild(this.node.cloneNode(true)); // return target element + + + return well.innerHTML.replace(/^/, '').replace(/<\/svg>$/, ''); + } + + return this; + }, + // write svgjs data to the dom + writeDataToDom: function writeDataToDom() { + // dump variables recursively + if (this.each || this.lines) { + var fn = this.each ? this : this.lines(); + fn.each(function () { + this.writeDataToDom(); + }); + } // remove previously set data + + + this.node.removeAttribute('svgjs:data'); + + if (Object.keys(this.dom).length) { + this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)); + } // see #428 + + + return this; + }, + // set given data to the elements data property + setData: function setData(o) { + this.dom = o; + return this; + }, + is: function is(obj) { + return _is(this, obj); + } + } + }); + SVG.easing = { + '-': function _(pos) { + return pos; + }, + '<>': function _(pos) { + return -Math.cos(pos * Math.PI) / 2 + 0.5; + }, + '>': function _(pos) { + return Math.sin(pos * Math.PI / 2); + }, + '<': function _(pos) { + return -Math.cos(pos * Math.PI / 2) + 1; + } + }; + + SVG.morph = function (pos) { + return function (from, to) { + return new SVG.MorphObj(from, to).at(pos); + }; + }; + + SVG.Situation = SVG.invent({ + create: function create(o) { + this.init = false; + this.reversed = false; + this.reversing = false; + this.duration = new SVG.Number(o.duration).valueOf(); + this.delay = new SVG.Number(o.delay).valueOf(); + this.start = +new Date() + this.delay; + this.finish = this.start + this.duration; + this.ease = o.ease; // this.loop is incremented from 0 to this.loops + // it is also incremented when in an infinite loop (when this.loops is true) + + this.loop = 0; + this.loops = false; + this.animations = {// functionToCall: [list of morphable objects] + // e.g. move: [SVG.Number, SVG.Number] + }; + this.attrs = {// holds all attributes which are not represented from a function svg.js provides + // e.g. someAttr: SVG.Number + }; + this.styles = {// holds all styles which should be animated + // e.g. fill-color: SVG.Color + }; + this.transforms = [// holds all transformations as transformation objects + // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix] + ]; + this.once = {// functions to fire at a specific position + // e.g. "0.5": function foo(){} + }; + } + }); + SVG.FX = SVG.invent({ + create: function create(element) { + this._target = element; + this.situations = []; + this.active = false; + this.situation = null; + this.paused = false; + this.lastPos = 0; + this.pos = 0; // The absolute position of an animation is its position in the context of its complete duration (including delay and loops) + // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1 + + this.absPos = 0; + this._speed = 1; + }, + extend: { + /** + * sets or returns the target of this animation + * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation + * @param ease function || string Function which should be used for easing or easing keyword + * @param delay Number indicating the delay before the animation starts + * @return target || this + */ + animate: function animate(o, ease, delay) { + if (_typeof(o) === 'object') { + ease = o.ease; + delay = o.delay; + o = o.duration; + } + + var situation = new SVG.Situation({ + duration: o || 1000, + delay: delay || 0, + ease: SVG.easing[ease || '-'] || ease + }); + this.queue(situation); + return this; + }, + + /** + * sets a delay before the next element of the queue is called + * @param delay Duration of delay in milliseconds + * @return this.target() + */ + + /** + * sets or returns the target of this animation + * @param null || target SVG.Element which should be set as new target + * @return target || this + */ + target: function target(_target) { + if (_target && _target instanceof SVG.Element) { + this._target = _target; + return this; + } + + return this._target; + }, + // returns the absolute position at a given time + timeToAbsPos: function timeToAbsPos(timestamp) { + return (timestamp - this.situation.start) / (this.situation.duration / this._speed); + }, + // returns the timestamp from a given absolute positon + absPosToTime: function absPosToTime(absPos) { + return this.situation.duration / this._speed * absPos + this.situation.start; + }, + // starts the animationloop + startAnimFrame: function startAnimFrame() { + this.stopAnimFrame(); + this.animationFrame = window.requestAnimationFrame(function () { + this.step(); + }.bind(this)); + }, + // cancels the animationframe + stopAnimFrame: function stopAnimFrame() { + window.cancelAnimationFrame(this.animationFrame); + }, + // kicks off the animation - only does something when the queue is currently not active and at least one situation is set + start: function start() { + // dont start if already started + if (!this.active && this.situation) { + this.active = true; + this.startCurrent(); + } + + return this; + }, + // start the current situation + startCurrent: function startCurrent() { + this.situation.start = +new Date() + this.situation.delay / this._speed; + this.situation.finish = this.situation.start + this.situation.duration / this._speed; + return this.initAnimations().step(); + }, + + /** + * adds a function / Situation to the animation queue + * @param fn function / situation to add + * @return this + */ + queue: function queue(fn) { + if (typeof fn === 'function' || fn instanceof SVG.Situation) { + this.situations.push(fn); + } + + if (!this.situation) this.situation = this.situations.shift(); + return this; + }, + + /** + * pulls next element from the queue and execute it + * @return this + */ + dequeue: function dequeue() { + // stop current animation + this.stop(); // get next animation from queue + + this.situation = this.situations.shift(); + + if (this.situation) { + if (this.situation instanceof SVG.Situation) { + this.start(); + } else { + // If it is not a SVG.Situation, then it is a function, we execute it + this.situation.call(this); + } + } + + return this; + }, + // updates all animations to the current state of the element + // this is important when one property could be changed from another property + initAnimations: function initAnimations() { + var source; + var s = this.situation; + if (s.init) return this; + + for (var i in s.animations) { + source = this.target()[i](); + + if (!Array.isArray(source)) { + source = [source]; + } + + if (!Array.isArray(s.animations[i])) { + s.animations[i] = [s.animations[i]]; + } // if(s.animations[i].length > source.length) { + // source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length)) + // } + + + for (var j = source.length; j--;) { + // The condition is because some methods return a normal number instead + // of a SVG.Number + if (s.animations[i][j] instanceof SVG.Number) { + source[j] = new SVG.Number(source[j]); + } + + s.animations[i][j] = source[j].morph(s.animations[i][j]); + } + } + + for (var i in s.attrs) { + s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]); + } + + for (var i in s.styles) { + s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]); + } + + s.initialTransformation = this.target().matrixify(); + s.init = true; + return this; + }, + clearQueue: function clearQueue() { + this.situations = []; + return this; + }, + clearCurrent: function clearCurrent() { + this.situation = null; + return this; + }, + + /** stops the animation immediately + * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. + * @param clearQueue A Boolean indicating whether to remove queued animation as well. + * @return this + */ + stop: function stop(jumpToEnd, clearQueue) { + var active = this.active; + this.active = false; + + if (clearQueue) { + this.clearQueue(); + } + + if (jumpToEnd && this.situation) { + // initialize the situation if it was not + !active && this.startCurrent(); + this.atEnd(); + } + + this.stopAnimFrame(); + return this.clearCurrent(); + }, + after: function after(fn) { + var c = this.last(), + wrapper = function wrapper(e) { + if (e.detail.situation == c) { + fn.call(this, c); + this.off('finished.fx', wrapper); // prevent memory leak + } + }; + + this.target().on('finished.fx', wrapper); + return this._callStart(); + }, + // adds a callback which is called whenever one animation step is performed + during: function during(fn) { + var c = this.last(), + wrapper = function wrapper(e) { + if (e.detail.situation == c) { + fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c); + } + }; // see above + + + this.target().off('during.fx', wrapper).on('during.fx', wrapper); + this.after(function () { + this.off('during.fx', wrapper); + }); + return this._callStart(); + }, + // calls after ALL animations in the queue are finished + afterAll: function afterAll(fn) { + var wrapper = function wrapper(e) { + fn.call(this); + this.off('allfinished.fx', wrapper); + }; // see above + + + this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper); + return this._callStart(); + }, + last: function last() { + return this.situations.length ? this.situations[this.situations.length - 1] : this.situation; + }, + // adds one property to the animations + add: function add(method, args, type) { + this.last()[type || 'animations'][method] = args; + return this._callStart(); + }, + + /** perform one step of the animation + * @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time + * @return this + */ + step: function step(ignoreTime) { + // convert current time to an absolute position + if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()); // This part convert an absolute position to a position + + if (this.situation.loops !== false) { + var absPos, absPosInt, lastLoop; // If the absolute position is below 0, we just treat it as if it was 0 + + absPos = Math.max(this.absPos, 0); + absPosInt = Math.floor(absPos); + + if (this.situation.loops === true || absPosInt < this.situation.loops) { + this.pos = absPos - absPosInt; + lastLoop = this.situation.loop; + this.situation.loop = absPosInt; + } else { + this.absPos = this.situation.loops; + this.pos = 1; // The -1 here is because we don't want to toggle reversed when all the loops have been completed + + lastLoop = this.situation.loop - 1; + this.situation.loop = this.situation.loops; + } + + if (this.situation.reversing) { + // Toggle reversed if an odd number of loops as occured since the last call of step + this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2); + } + } else { + // If there are no loop, the absolute position must not be above 1 + this.absPos = Math.min(this.absPos, 1); + this.pos = this.absPos; + } // while the absolute position can be below 0, the position must not be below 0 + + + if (this.pos < 0) this.pos = 0; + if (this.situation.reversed) this.pos = 1 - this.pos; // apply easing + + var eased = this.situation.ease(this.pos); // call once-callbacks + + for (var i in this.situation.once) { + if (i > this.lastPos && i <= eased) { + this.situation.once[i].call(this.target(), this.pos, eased); + delete this.situation.once[i]; + } + } // fire during callback with position, eased position and current situation as parameter + + + if (this.active) this.target().fire('during', { + pos: this.pos, + eased: eased, + fx: this, + situation: this.situation + }); // the user may call stop or finish in the during callback + // so make sure that we still have a valid situation + + if (!this.situation) { + return this; + } // apply the actual animation to every property + + + this.eachAt(); // do final code when situation is finished + + if (this.pos == 1 && !this.situation.reversed || this.situation.reversed && this.pos == 0) { + // stop animation callback + this.stopAnimFrame(); // fire finished callback with current situation as parameter + + this.target().fire('finished', { + fx: this, + situation: this.situation + }); + + if (!this.situations.length) { + this.target().fire('allfinished'); // Recheck the length since the user may call animate in the afterAll callback + + if (!this.situations.length) { + this.target().off('.fx'); // there shouldnt be any binding left, but to make sure... + + this.active = false; + } + } // start next animation + + + if (this.active) this.dequeue();else this.clearCurrent(); + } else if (!this.paused && this.active) { + // we continue animating when we are not at the end + this.startAnimFrame(); + } // save last eased position for once callback triggering + + + this.lastPos = eased; + return this; + }, + // calculates the step for every property and calls block with it + eachAt: function eachAt() { + var len, + at, + self = this, + target = this.target(), + s = this.situation; // apply animations which can be called trough a method + + for (var i in s.animations) { + at = [].concat(s.animations[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target[i].apply(target, at); + } // apply animation which has to be applied with attr() + + + for (var i in s.attrs) { + at = [i].concat(s.attrs[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target.attr.apply(target, at); + } // apply animation which has to be applied with style() + + + for (var i in s.styles) { + at = [i].concat(s.styles[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el; + }); + target.style.apply(target, at); + } // animate initialTransformation which has to be chained + + + if (s.transforms.length) { + // get initial initialTransformation + at = s.initialTransformation; + + for (var i = 0, len = s.transforms.length; i < len; i++) { + // get next transformation in chain + var a = s.transforms[i]; // multiply matrix directly + + if (a instanceof SVG.Matrix) { + if (a.relative) { + at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos))); + } else { + at = at.morph(a).at(s.ease(this.pos)); + } + + continue; + } // when transformation is absolute we have to reset the needed transformation first + + + if (!a.relative) { + a.undo(at.extract()); + } // and reapply it after + + + at = at.multiply(a.at(s.ease(this.pos))); + } // set new matrix on element + + + target.matrix(at); + } + + return this; + }, + // adds an once-callback which is called at a specific position and never again + once: function once(pos, fn, isEased) { + var c = this.last(); + if (!isEased) pos = c.ease(pos); + c.once[pos] = fn; + return this; + }, + _callStart: function _callStart() { + setTimeout(function () { + this.start(); + }.bind(this), 0); + return this; + } + }, + parent: SVG.Element, + // Add method to parent elements + construct: { + // Get fx module or create a new one, then animate with given duration and ease + animate: function animate(o, ease, delay) { + return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay); + }, + delay: function delay(_delay) { + return (this.fx || (this.fx = new SVG.FX(this))).delay(_delay); + }, + stop: function stop(jumpToEnd, clearQueue) { + if (this.fx) { + this.fx.stop(jumpToEnd, clearQueue); + } + + return this; + }, + finish: function finish() { + if (this.fx) { + this.fx.finish(); + } + + return this; + } + } + }); // MorphObj is used whenever no morphable object is given + + SVG.MorphObj = SVG.invent({ + create: function create(from, to) { + // prepare color for morphing + if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to); // check if we have a list of values + + if (SVG.regex.delimiter.test(from)) { + // prepare path for morphing + if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to); // prepare value list for morphing + else return new SVG.Array(from).morph(to); + } // prepare number for morphing + + + if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to); // prepare for plain morphing + + this.value = from; + this.destination = to; + }, + extend: { + at: function at(pos, real) { + return real < 1 ? this.value : this.destination; + }, + valueOf: function valueOf() { + return this.value; + } + } + }); + SVG.extend(SVG.FX, { + // Add animatable attributes + attr: function attr(a, v, relative) { + // apply attributes individually + if (_typeof(a) === 'object') { + for (var key in a) { + this.attr(key, a[key]); + } + } else { + this.add(a, v, 'attrs'); + } + + return this; + }, + // Add animatable plot + plot: function plot(a, b, c, d) { + // Lines can be plotted with 4 arguments + if (arguments.length == 4) { + return this.plot([a, b, c, d]); + } + + return this.add('plot', new (this.target().morphArray)(a)); + } + }); + SVG.Box = SVG.invent({ + create: function create(x, y, width, height) { + if (_typeof(x) === 'object' && !(x instanceof SVG.Element)) { + // chromes getBoundingClientRect has no x and y property + return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height); + } else if (arguments.length == 4) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } // add center, right, bottom... + + + fullBox(this); + } + }); + SVG.BBox = SVG.invent({ + // Initialize + create: function create(element) { + SVG.Box.apply(this, [].slice.call(arguments)); // get values if element is given + + if (element instanceof SVG.Element) { + var box; // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered + + try { + if (!document.documentElement.contains) { + // This is IE - it does not support contains() for top-level SVGs + var topParent = element.node; + + while (topParent.parentNode) { + topParent = topParent.parentNode; + } + + if (topParent != document) throw new Error('Element not in the dom'); + } else {// the element is NOT in the dom, throw error + // disabling the check below which fixes issue #76 + // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom') + } // find native bbox + + + box = element.node.getBBox(); + } catch (e) { + if (element instanceof SVG.Shape) { + if (!SVG.parser.draw) { + // fixes apexcharts/vue-apexcharts #14 + SVG.prepare(); + } + + var clone = element.clone(SVG.parser.draw.instance).show(); + + if (clone && clone.node && typeof clone.node.getBBox === 'function') { + // this check fixes jest unit tests + box = clone.node.getBBox(); + } + + if (clone && typeof clone.remove === 'function') { + clone.remove(); + } + } else { + box = { + x: element.node.clientLeft, + y: element.node.clientTop, + width: element.node.clientWidth, + height: element.node.clientHeight + }; + } + } + + SVG.Box.call(this, box); + } + }, + // Define ancestor + inherit: SVG.Box, + // Define Parent + parent: SVG.Element, + // Constructor + construct: { + // Get bounding box + bbox: function bbox() { + return new SVG.BBox(this); + } + } + }); + SVG.BBox.prototype.constructor = SVG.BBox; + SVG.Matrix = SVG.invent({ + // Initialize + create: function create(source) { + var base = arrayToMatrix([1, 0, 0, 1, 0, 0]); // ensure source as object + + source = source === null ? base : source instanceof SVG.Element ? source.matrixify() : typeof source === 'string' ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) : arguments.length == 6 ? arrayToMatrix([].slice.call(arguments)) : Array.isArray(source) ? arrayToMatrix(source) : source && _typeof(source) === 'object' ? source : base; // merge source + + for (var i = abcdef.length - 1; i >= 0; --i) { + this[abcdef[i]] = source[abcdef[i]] != null ? source[abcdef[i]] : base[abcdef[i]]; + } + }, + // Add methods + extend: { + // Extract individual transformations + extract: function extract() { + // find delta transform points + var px = deltaTransformPoint(this, 0, 1); + deltaTransformPoint(this, 1, 0); + var skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90; + return { + // translation + x: this.e, + y: this.f, + transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b), + transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d), + // rotation + rotation: skewX, + a: this.a, + b: this.b, + c: this.c, + d: this.d, + e: this.e, + f: this.f, + matrix: new SVG.Matrix(this) + }; + }, + // Clone matrix + clone: function clone() { + return new SVG.Matrix(this); + }, + // Morph one matrix into another + morph: function morph(matrix) { + // store new destination + this.destination = new SVG.Matrix(matrix); + return this; + }, + // Multiplies by given matrix + multiply: function multiply(matrix) { + return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native())); + }, + // Inverses matrix + inverse: function inverse() { + return new SVG.Matrix(this.native().inverse()); + }, + // Translate matrix + translate: function translate(x, y) { + return new SVG.Matrix(this.native().translate(x || 0, y || 0)); + }, + // Convert to native SVGMatrix + native: function native() { + // create new matrix + var matrix = SVG.parser.native.createSVGMatrix(); // update with current values + + for (var i = abcdef.length - 1; i >= 0; i--) { + matrix[abcdef[i]] = this[abcdef[i]]; + } + + return matrix; + }, + // Convert matrix to string + toString: function toString() { + // Construct the matrix directly, avoid values that are too small + return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + ',' + float32String(this.c) + ',' + float32String(this.d) + ',' + float32String(this.e) + ',' + float32String(this.f) + ')'; + } + }, + // Define parent + parent: SVG.Element, + // Add parent method + construct: { + // Get current matrix + ctm: function ctm() { + return new SVG.Matrix(this.node.getCTM()); + }, + // Get current screen matrix + screenCTM: function screenCTM() { + /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537 + This is needed because FF does not return the transformation matrix + for the inner coordinate system when getScreenCTM() is called on nested svgs. + However all other Browsers do that */ + if (this instanceof SVG.Nested) { + var rect = this.rect(1, 1); + var m = rect.node.getScreenCTM(); + rect.remove(); + return new SVG.Matrix(m); + } + + return new SVG.Matrix(this.node.getScreenCTM()); + } + } + }); + SVG.Point = SVG.invent({ + // Initialize + create: function create(x, y) { + var source, + base = { + x: 0, + y: 0 + }; // ensure source as object + + source = Array.isArray(x) ? { + x: x[0], + y: x[1] + } : _typeof(x) === 'object' ? { + x: x.x, + y: x.y + } : x != null ? { + x: x, + y: y != null ? y : x + } : base; // If y has no value, then x is used has its value + // merge source + + this.x = source.x; + this.y = source.y; + }, + // Add methods + extend: { + // Clone point + clone: function clone() { + return new SVG.Point(this); + }, + // Morph one point into another + morph: function morph(x, y) { + // store new destination + this.destination = new SVG.Point(x, y); + return this; + } + } + }); + SVG.extend(SVG.Element, { + // Get point + point: function point(x, y) { + return new SVG.Point(x, y).transform(this.screenCTM().inverse()); + } + }); + SVG.extend(SVG.Element, { + // Set svg element attribute + attr: function attr(a, v, n) { + // act as full getter + if (a == null) { + // get an object of attributes + a = {}; + v = this.node.attributes; + + for (var n = v.length - 1; n >= 0; n--) { + a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue; + } + + return a; + } else if (_typeof(a) === 'object') { + // apply every attribute individually if an object is passed + for (var v_ in a) { + this.attr(v_, a[v_]); + } + } else if (v === null) { + // remove value + this.node.removeAttribute(a); + } else if (v == null) { + // act as a getter if the first and only argument is not an object + v = this.node.getAttribute(a); + return v == null ? SVG.defaults.attrs[a] : SVG.regex.isNumber.test(v) ? parseFloat(v) : v; + } else { + // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0 + if (a == 'stroke-width') { + this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null); + } else if (a == 'stroke') { + this._stroke = v; + } // convert image fill and stroke to patterns + + + if (a == 'fill' || a == 'stroke') { + if (SVG.regex.isImage.test(v)) { + v = this.doc().defs().image(v, 0, 0); + } + + if (v instanceof SVG.Image) { + v = this.doc().defs().pattern(0, 0, function () { + this.add(v); + }); + } + } // ensure correct numeric values (also accepts NaN and Infinity) + + + if (typeof v === 'number') { + v = new SVG.Number(v); + } // ensure full hex color + else if (SVG.Color.isColor(v)) { + v = new SVG.Color(v); + } // parse array values + else if (Array.isArray(v)) { + v = new SVG.Array(v); + } // if the passed attribute is leading... + + + if (a == 'leading') { + // ... call the leading method instead + if (this.leading) { + this.leading(v); + } + } else { + // set given attribute on node + typeof n === 'string' ? this.node.setAttributeNS(n, a, v.toString()) : this.node.setAttribute(a, v.toString()); + } // rebuild if required + + + if (this.rebuild && (a == 'font-size' || a == 'x')) { + this.rebuild(a, v); + } + } + + return this; + } + }); + SVG.extend(SVG.Element, { + // Add transformations + transform: function transform(o, relative) { + // get target in case of the fx module, otherwise reference this + var target = this, + matrix; + // act as a getter + + if (_typeof(o) !== 'object') { + // get current matrix + matrix = new SVG.Matrix(target).extract(); + return typeof o === 'string' ? matrix[o] : matrix; + } // get current matrix + + + matrix = new SVG.Matrix(target); // ensure relative flag + + relative = !!relative || !!o.relative; // act on matrix + + if (o.a != null) { + matrix = relative // relative + ? matrix.multiply(new SVG.Matrix(o)) // absolute + : new SVG.Matrix(o); + } + + return this.attr('transform', matrix); + } + }); + SVG.extend(SVG.Element, { + // Reset all transformations + untransform: function untransform() { + return this.attr('transform', null); + }, + // merge the whole transformation chain into one matrix and returns it + matrixify: function matrixify() { + var matrix = (this.attr('transform') || '').split(SVG.regex.transforms).slice(0, -1).map(function (str) { + // generate key => value pairs + var kv = str.trim().split('('); + return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) { + return parseFloat(str); + })]; + }) // merge every transformation into one matrix + .reduce(function (matrix, transform) { + if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1])); + return matrix[transform[0]].apply(matrix, transform[1]); + }, new SVG.Matrix()); + return matrix; + }, + // add an element to another parent without changing the visual representation on the screen + toParent: function toParent(parent) { + if (this == parent) return this; + var ctm = this.screenCTM(); + var pCtm = parent.screenCTM().inverse(); + this.addTo(parent).untransform().transform(pCtm.multiply(ctm)); + return this; + }, + // same as above with parent equals root-svg + toDoc: function toDoc() { + return this.toParent(this.doc()); + } + }); + SVG.Transformation = SVG.invent({ + create: function create(source, inversed) { + if (arguments.length > 1 && typeof inversed !== 'boolean') { + return this.constructor.call(this, [].slice.call(arguments)); + } + + if (Array.isArray(source)) { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[i]; + } + } else if (source && _typeof(source) === 'object') { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[this.arguments[i]]; + } + } + + this.inversed = false; + + if (inversed === true) { + this.inversed = true; + } + } + }); + SVG.Translate = SVG.invent({ + parent: SVG.Matrix, + inherit: SVG.Transformation, + create: function create(source, inversed) { + this.constructor.apply(this, [].slice.call(arguments)); + }, + extend: { + arguments: ['transformedX', 'transformedY'], + method: 'translate' + } + }); + SVG.extend(SVG.Element, { + // Dynamic style generator + style: function style(s, v) { + if (arguments.length == 0) { + // get full style + return this.node.style.cssText || ''; + } else if (arguments.length < 2) { + // apply every style individually if an object is passed + if (_typeof(s) === 'object') { + for (var v_ in s) { + this.style(v_, s[v_]); + } + } else if (SVG.regex.isCss.test(s)) { + // parse css string + s = s.split(/\s*;\s*/) // filter out suffix ; and stuff like ;; + .filter(function (e) { + return !!e; + }).map(function (e) { + return e.split(/\s*:\s*/); + }); // apply every definition individually + + while (v = s.pop()) { + this.style(v[0], v[1]); + } + } else { + // act as a getter if the first and only argument is not an object + return this.node.style[camelCase(s)]; + } + } else { + this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v; + } + + return this; + } + }); + SVG.Parent = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Element, + // Add class methods + extend: { + // Returns all child elements + children: function children() { + return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) { + return SVG.adopt(node); + }); + }, + // Add given element at a position + add: function add(element, i) { + if (i == null) { + this.node.appendChild(element.node); + } else if (element.node != this.node.childNodes[i]) { + this.node.insertBefore(element.node, this.node.childNodes[i]); + } + + return this; + }, + // Basically does the same as `add()` but returns the added element instead + put: function put(element, i) { + this.add(element, i); + return element; + }, + // Checks if the given element is a child + has: function has(element) { + return this.index(element) >= 0; + }, + // Gets index of given element + index: function index(element) { + return [].slice.call(this.node.childNodes).indexOf(element.node); + }, + // Get a element at the given index + get: function get(i) { + return SVG.adopt(this.node.childNodes[i]); + }, + // Get first child + first: function first() { + return this.get(0); + }, + // Get the last child + last: function last() { + return this.get(this.node.childNodes.length - 1); + }, + // Iterates over all children and invokes a given block + each: function each(block, deep) { + var il, + children = this.children(); + + for (var i = 0, il = children.length; i < il; i++) { + if (children[i] instanceof SVG.Element) { + block.apply(children[i], [i, children]); + } + + if (deep && children[i] instanceof SVG.Container) { + children[i].each(block, deep); + } + } + + return this; + }, + // Remove a given child + removeElement: function removeElement(element) { + this.node.removeChild(element.node); + return this; + }, + // Remove all elements in this container + clear: function clear() { + // remove children + while (this.node.hasChildNodes()) { + this.node.removeChild(this.node.lastChild); + } // remove defs reference + + + delete this._defs; + return this; + }, + // Get defs + defs: function defs() { + return this.doc().defs(); + } + } + }); + SVG.extend(SVG.Parent, { + ungroup: function ungroup(parent, depth) { + if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this; + parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent)); + depth = depth || Infinity; + this.each(function () { + if (this instanceof SVG.Defs) return this; + if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1); + return this.toParent(parent); + }); + this.node.firstChild || this.remove(); + return this; + }, + flatten: function flatten(parent, depth) { + return this.ungroup(parent, depth); + } + }); + SVG.Container = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Parent + }); + SVG.ViewBox = SVG.invent({ + // Define parent + parent: SVG.Container, + // Add parent method + construct: {} + }) // Add events to elements + ; + ['click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', // , 'mouseenter' -> not supported by IE + // , 'mouseleave' -> not supported by IE + 'touchstart', 'touchmove', 'touchleave', 'touchend', 'touchcancel'].forEach(function (event) { + // add event to SVG.Element + SVG.Element.prototype[event] = function (f) { + // bind event to element rather than element node + SVG.on(this.node, event, f); + return this; + }; + }); // Initialize listeners stack + + SVG.listeners = []; + SVG.handlerMap = []; + SVG.listenerId = 0; // Add event binder in the SVG namespace + + SVG.on = function (node, event, listener, binding, options) { + // create listener, get object-index + var l = listener.bind(binding || node.instance || node), + index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1, + ev = event.split('.')[0], + ns = event.split('.')[1] || '*'; // ensure valid object + + SVG.listeners[index] = SVG.listeners[index] || {}; + SVG.listeners[index][ev] = SVG.listeners[index][ev] || {}; + SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {}; + + if (!listener._svgjsListenerId) { + listener._svgjsListenerId = ++SVG.listenerId; + } // reference listener + + + SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l; // add listener + + node.addEventListener(ev, l, options || { + passive: true + }); + }; // Add event unbinder in the SVG namespace + + + SVG.off = function (node, event, listener) { + var index = SVG.handlerMap.indexOf(node), + ev = event && event.split('.')[0], + ns = event && event.split('.')[1], + namespace = ''; + if (index == -1) return; + + if (listener) { + if (typeof listener === 'function') listener = listener._svgjsListenerId; + if (!listener) return; // remove listener reference + + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) { + // remove listener + node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false); + delete SVG.listeners[index][ev][ns || '*'][listener]; + } + } else if (ns && ev) { + // remove all listeners for a namespaced event + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) { + for (var listener_ in SVG.listeners[index][ev][ns]) { + SVG.off(node, [ev, ns].join('.'), listener_); + } + + delete SVG.listeners[index][ev][ns]; + } + } else if (ns) { + // remove all listeners for a specific namespace + for (var event_ in SVG.listeners[index]) { + for (var namespace in SVG.listeners[index][event_]) { + if (ns === namespace) { + SVG.off(node, [event_, ns].join('.')); + } + } + } + } else if (ev) { + // remove all listeners for the event + if (SVG.listeners[index][ev]) { + for (var namespace in SVG.listeners[index][ev]) { + SVG.off(node, [ev, namespace].join('.')); + } + + delete SVG.listeners[index][ev]; + } + } else { + // remove all listeners on a given node + for (var event_ in SVG.listeners[index]) { + SVG.off(node, event_); + } + + delete SVG.listeners[index]; + delete SVG.handlerMap[index]; + } + }; // + + + SVG.extend(SVG.Element, { + // Bind given event to listener + on: function on(event, listener, binding, options) { + SVG.on(this.node, event, listener, binding, options); + return this; + }, + // Unbind event from listener + off: function off(event, listener) { + SVG.off(this.node, event, listener); + return this; + }, + // Fire given event + fire: function fire(event, data) { + // Dispatch event + if (event instanceof window.Event) { + this.node.dispatchEvent(event); + } else { + this.node.dispatchEvent(event = new SVG.CustomEvent(event, { + detail: data, + cancelable: true + })); + } + + this._event = event; + return this; + }, + event: function event() { + return this._event; + } + }); + SVG.Defs = SVG.invent({ + // Initialize node + create: 'defs', + // Inherit from + inherit: SVG.Container + }); + SVG.G = SVG.invent({ + // Initialize node + create: 'g', + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x2) { + return _x2 == null ? this.transform('x') : this.transform({ + x: _x2 - this.x() + }, true); + } + }, + // Add parent method + construct: { + // Create a group element + group: function group() { + return this.put(new SVG.G()); + } + } + }); + SVG.Doc = SVG.invent({ + // Initialize node + create: function create(element) { + if (element) { + // ensure the presence of a dom element + element = typeof element === 'string' ? document.getElementById(element) : element; // If the target is an svg element, use that element as the main wrapper. + // This allows svg.js to work with svg documents as well. + + if (element.nodeName == 'svg') { + this.constructor.call(this, element); + } else { + this.constructor.call(this, SVG.create('svg')); + element.appendChild(this.node); + this.size('100%', '100%'); + } // set svg element attributes and ensure defs node + + + this.namespace().defs(); + } + }, + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Add namespaces + namespace: function namespace() { + return this.attr({ + xmlns: SVG.ns, + version: '1.1' + }).attr('xmlns:xlink', SVG.xlink, SVG.xmlns).attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns); + }, + // Creates and returns defs element + defs: function defs() { + if (!this._defs) { + var defs; // Find or create a defs element in this instance + + if (defs = this.node.getElementsByTagName('defs')[0]) { + this._defs = SVG.adopt(defs); + } else { + this._defs = new SVG.Defs(); + } // Make sure the defs node is at the end of the stack + + + this.node.appendChild(this._defs.node); + } + + return this._defs; + }, + // custom parent method + parent: function parent() { + if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null; + return this.node.parentNode; + }, + // Removes the doc from the DOM + remove: function remove() { + if (this.parent()) { + this.parent().removeChild(this.node); + } + + return this; + }, + clear: function clear() { + // remove children + while (this.node.hasChildNodes()) { + this.node.removeChild(this.node.lastChild); + } // remove defs reference + + + delete this._defs; // add back parser + + if (SVG.parser.draw && !SVG.parser.draw.parentNode) { + this.node.appendChild(SVG.parser.draw); + } + + return this; + }, + clone: function clone(parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom(); // get reference to node + + var node = this.node; // clone element and assign new id + + var clone = assignNewId(node.cloneNode(true)); // insert the clone in the given parent or after myself + + if (parent) { + (parent.node || parent).appendChild(clone.node); + } else { + node.parentNode.insertBefore(clone.node, node.nextSibling); + } + + return clone; + } + } + }); // ### This module adds backward / forward functionality to elements. + // + + SVG.extend(SVG.Element, {// Get all siblings, including myself + }); + SVG.Gradient = SVG.invent({ + // Initialize node + create: function create(type) { + this.constructor.call(this, SVG.create(type + 'Gradient')); // store type + + this.type = type; + }, + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Add a color stop + at: function at(offset, color, opacity) { + return this.put(new SVG.Stop()).update(offset, color, opacity); + }, + // Update gradient + update: function update(block) { + // remove all stops + this.clear(); // invoke passed block + + if (typeof block === 'function') { + block.call(this, this); + } + + return this; + }, + // Return the fill id + fill: function fill() { + return 'url(#' + this.id() + ')'; + }, + // Alias string convertion to fill + toString: function toString() { + return this.fill(); + }, + // custom attr to handle transform + attr: function attr(a, b, c) { + if (a == 'transform') a = 'gradientTransform'; + return SVG.Container.prototype.attr.call(this, a, b, c); + } + }, + // Add parent method + construct: { + // Create gradient element in defs + gradient: function gradient(type, block) { + return this.defs().gradient(type, block); + } + } + }); // Add animatable methods to both gradient and fx module + + SVG.extend(SVG.Gradient, SVG.FX, { + // From position + from: function from(x, y) { + return (this._target || this).type == 'radial' ? this.attr({ + fx: new SVG.Number(x), + fy: new SVG.Number(y) + }) : this.attr({ + x1: new SVG.Number(x), + y1: new SVG.Number(y) + }); + }, + // To position + to: function to(x, y) { + return (this._target || this).type == 'radial' ? this.attr({ + cx: new SVG.Number(x), + cy: new SVG.Number(y) + }) : this.attr({ + x2: new SVG.Number(x), + y2: new SVG.Number(y) + }); + } + }); // Base gradient generation + + SVG.extend(SVG.Defs, { + // define gradient + gradient: function gradient(type, block) { + return this.put(new SVG.Gradient(type)).update(block); + } + }); + SVG.Stop = SVG.invent({ + // Initialize node + create: 'stop', + // Inherit from + inherit: SVG.Element, + // Add class methods + extend: { + // add color stops + update: function update(o) { + if (typeof o === 'number' || o instanceof SVG.Number) { + o = { + offset: arguments[0], + color: arguments[1], + opacity: arguments[2] + }; + } // set attributes + + + if (o.opacity != null) this.attr('stop-opacity', o.opacity); + if (o.color != null) this.attr('stop-color', o.color); + if (o.offset != null) this.attr('offset', new SVG.Number(o.offset)); + return this; + } + } + }); + SVG.Pattern = SVG.invent({ + // Initialize node + create: 'pattern', + // Inherit from + inherit: SVG.Container, + // Add class methods + extend: { + // Return the fill id + fill: function fill() { + return 'url(#' + this.id() + ')'; + }, + // Update pattern by rebuilding + update: function update(block) { + // remove content + this.clear(); // invoke passed block + + if (typeof block === 'function') { + block.call(this, this); + } + + return this; + }, + // Alias string convertion to fill + toString: function toString() { + return this.fill(); + }, + // custom attr to handle transform + attr: function attr(a, b, c) { + if (a == 'transform') a = 'patternTransform'; + return SVG.Container.prototype.attr.call(this, a, b, c); + } + }, + // Add parent method + construct: { + // Create pattern element in defs + pattern: function pattern(width, height, block) { + return this.defs().pattern(width, height, block); + } + } + }); + SVG.extend(SVG.Defs, { + // Define gradient + pattern: function pattern(width, height, block) { + return this.put(new SVG.Pattern()).update(block).attr({ + x: 0, + y: 0, + width: width, + height: height, + patternUnits: 'userSpaceOnUse' + }); + } + }); + SVG.Shape = SVG.invent({ + // Initialize node + create: function create(element) { + this.constructor.call(this, element); + }, + // Inherit from + inherit: SVG.Element + }); + SVG.Symbol = SVG.invent({ + // Initialize node + create: 'symbol', + // Inherit from + inherit: SVG.Container, + construct: { + // create symbol + symbol: function symbol() { + return this.put(new SVG.Symbol()); + } + } + }); + SVG.Use = SVG.invent({ + // Initialize node + create: 'use', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Use element as a reference + element: function element(_element, file) { + // Set lined element + return this.attr('href', (file || '') + '#' + _element, SVG.xlink); + } + }, + // Add parent method + construct: { + // Create a use element + use: function use(element, file) { + return this.put(new SVG.Use()).element(element, file); + } + } + }); + SVG.Rect = SVG.invent({ + // Initialize node + create: 'rect', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a rect element + rect: function rect(width, height) { + return this.put(new SVG.Rect()).size(width, height); + } + } + }); + SVG.Circle = SVG.invent({ + // Initialize node + create: 'circle', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create circle element, based on ellipse + circle: function circle(size) { + return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0); + } + } + }); + SVG.extend(SVG.Circle, SVG.FX, { + // Radius x value + rx: function rx(_rx) { + return this.attr('r', _rx); + }, + // Alias radius x value + ry: function ry(_ry) { + return this.rx(_ry); + } + }); + SVG.Ellipse = SVG.invent({ + // Initialize node + create: 'ellipse', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create an ellipse + ellipse: function ellipse(width, height) { + return this.put(new SVG.Ellipse()).size(width, height).move(0, 0); + } + } + }); + SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, { + // Radius x value + rx: function rx(_rx2) { + return this.attr('rx', _rx2); + }, + // Radius y value + ry: function ry(_ry2) { + return this.attr('ry', _ry2); + } + }); // Add common method + + SVG.extend(SVG.Circle, SVG.Ellipse, { + // Move over x-axis + x: function x(_x3) { + return _x3 == null ? this.cx() - this.rx() : this.cx(_x3 + this.rx()); + }, + // Move over y-axis + y: function y(_y2) { + return _y2 == null ? this.cy() - this.ry() : this.cy(_y2 + this.ry()); + }, + // Move by center over x-axis + cx: function cx(x) { + return x == null ? this.attr('cx') : this.attr('cx', x); + }, + // Move by center over y-axis + cy: function cy(y) { + return y == null ? this.attr('cy') : this.attr('cy', y); + }, + // Set width of element + width: function width(_width2) { + return _width2 == null ? this.rx() * 2 : this.rx(new SVG.Number(_width2).divide(2)); + }, + // Set height of element + height: function height(_height2) { + return _height2 == null ? this.ry() * 2 : this.ry(new SVG.Number(_height2).divide(2)); + }, + // Custom size function + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.rx(new SVG.Number(p.width).divide(2)).ry(new SVG.Number(p.height).divide(2)); + } + }); + SVG.Line = SVG.invent({ + // Initialize node + create: 'line', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Get array + array: function array() { + return new SVG.PointArray([[this.attr('x1'), this.attr('y1')], [this.attr('x2'), this.attr('y2')]]); + }, + // Overwrite native plot() method + plot: function plot(x1, y1, x2, y2) { + if (x1 == null) { + return this.array(); + } else if (typeof y1 !== 'undefined') { + x1 = { + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }; + } else { + x1 = new SVG.PointArray(x1).toLine(); + } + + return this.attr(x1); + }, + // Move by left top corner + move: function move(x, y) { + return this.attr(this.array().move(x, y).toLine()); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.attr(this.array().size(p.width, p.height).toLine()); + } + }, + // Add parent method + construct: { + // Create a line element + line: function line(x1, y1, x2, y2) { + // make sure plot is called as a setter + // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray + return SVG.Line.prototype.plot.apply(this.put(new SVG.Line()), x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0]); + } + } + }); + SVG.Polyline = SVG.invent({ + // Initialize node + create: 'polyline', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a wrapped polyline element + polyline: function polyline(p) { + // make sure plot is called as a setter + return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray()); + } + } + }); + SVG.Polygon = SVG.invent({ + // Initialize node + create: 'polygon', + // Inherit from + inherit: SVG.Shape, + // Add parent method + construct: { + // Create a wrapped polygon element + polygon: function polygon(p) { + // make sure plot is called as a setter + return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray()); + } + } + }); // Add polygon-specific functions + + SVG.extend(SVG.Polyline, SVG.Polygon, { + // Get array + array: function array() { + return this._array || (this._array = new SVG.PointArray(this.attr('points'))); + }, + // Plot new path + plot: function plot(p) { + return p == null ? this.array() : this.clear().attr('points', typeof p === 'string' ? p : this._array = new SVG.PointArray(p)); + }, + // Clear array cache + clear: function clear() { + delete this._array; + return this; + }, + // Move by left top corner + move: function move(x, y) { + return this.attr('points', this.array().move(x, y)); + }, + // Set element size to given width and height + size: function size(width, height) { + var p = proportionalSize(this, width, height); + return this.attr('points', this.array().size(p.width, p.height)); + } + }); // unify all point to point elements + + SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, { + // Define morphable array + morphArray: SVG.PointArray, + // Move by left top corner over x-axis + x: function x(_x4) { + return _x4 == null ? this.bbox().x : this.move(_x4, this.bbox().y); + }, + // Move by left top corner over y-axis + y: function y(_y3) { + return _y3 == null ? this.bbox().y : this.move(this.bbox().x, _y3); + }, + // Set width of element + width: function width(_width3) { + var b = this.bbox(); + return _width3 == null ? b.width : this.size(_width3, b.height); + }, + // Set height of element + height: function height(_height3) { + var b = this.bbox(); + return _height3 == null ? b.height : this.size(b.width, _height3); + } + }); + SVG.Path = SVG.invent({ + // Initialize node + create: 'path', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Define morphable array + morphArray: SVG.PathArray, + // Get array + array: function array() { + return this._array || (this._array = new SVG.PathArray(this.attr('d'))); + }, + // Plot new path + plot: function plot(d) { + return d == null ? this.array() : this.clear().attr('d', typeof d === 'string' ? d : this._array = new SVG.PathArray(d)); + }, + // Clear array cache + clear: function clear() { + delete this._array; + return this; + } + }, + // Add parent method + construct: { + // Create a wrapped path element + path: function path(d) { + // make sure plot is called as a setter + return this.put(new SVG.Path()).plot(d || new SVG.PathArray()); + } + } + }); + SVG.Image = SVG.invent({ + // Initialize node + create: 'image', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // (re)load image + load: function load(url) { + if (!url) return this; + var self = this, + img = new window.Image(); // preload image + + SVG.on(img, 'load', function () { + SVG.off(img); + var p = self.parent(SVG.Pattern); + if (p === null) return; // ensure image size + + if (self.width() == 0 && self.height() == 0) { + self.size(img.width, img.height); + } // ensure pattern size if not set + + + if (p && p.width() == 0 && p.height() == 0) { + p.size(self.width(), self.height()); + } // callback + + + if (typeof self._loaded === 'function') { + self._loaded.call(self, { + width: img.width, + height: img.height, + ratio: img.width / img.height, + url: url + }); + } + }); + SVG.on(img, 'error', function (e) { + SVG.off(img); + + if (typeof self._error === 'function') { + self._error.call(self, e); + } + }); + return this.attr('href', img.src = this.src = url, SVG.xlink); + }, + // Add loaded callback + loaded: function loaded(_loaded) { + this._loaded = _loaded; + return this; + }, + error: function error(_error) { + this._error = _error; + return this; + } + }, + // Add parent method + construct: { + // create image element, load image and set its size + image: function image(source, width, height) { + return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0); + } + } + }); + SVG.Text = SVG.invent({ + // Initialize node + create: function create() { + this.constructor.call(this, SVG.create('text')); + this.dom.leading = new SVG.Number(1.3); // store leading value for rebuilding + + this._rebuild = true; // enable automatic updating of dy values + + this._build = false; // disable build mode for adding multiple lines + // set default font + + this.attr('font-family', SVG.defaults.attrs['font-family']); + }, + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Move over x-axis + x: function x(_x5) { + // act as getter + if (_x5 == null) { + return this.attr('x'); + } + + return this.attr('x', _x5); + }, + // Set the text content + text: function text(_text) { + // act as getter + if (typeof _text === 'undefined') { + var _text = ''; + var children = this.node.childNodes; + + for (var i = 0, len = children.length; i < len; ++i) { + // add newline if its not the first child and newLined is set to true + if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) { + _text += '\n'; + } // add content of this node + + + _text += children[i].textContent; + } + + return _text; + } // remove existing content + + + this.clear().build(true); + + if (typeof _text === 'function') { + // call block + _text.call(this, this); + } else { + // store text and make sure text is not blank + _text = _text.split('\n'); // build new lines + + for (var i = 0, il = _text.length; i < il; i++) { + this.tspan(_text[i]).newLine(); + } + } // disable build mode and rebuild lines + + + return this.build(false).rebuild(); + }, + // Set font size + size: function size(_size) { + return this.attr('font-size', _size).rebuild(); + }, + // Set / get leading + leading: function leading(value) { + // act as getter + if (value == null) { + return this.dom.leading; + } // act as setter + + + this.dom.leading = new SVG.Number(value); + return this.rebuild(); + }, + // Get all the first level lines + lines: function lines() { + var node = (this.textPath && this.textPath() || this).node; // filter tspans and map them to SVG.js instances + + var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) { + return SVG.adopt(el); + }); // return an instance of SVG.set + + return new SVG.Set(lines); + }, + // Rebuild appearance type + rebuild: function rebuild(_rebuild) { + // store new rebuild flag if given + if (typeof _rebuild === 'boolean') { + this._rebuild = _rebuild; + } // define position of all lines + + + if (this._rebuild) { + var self = this, + blankLineOffset = 0, + dy = this.dom.leading * new SVG.Number(this.attr('font-size')); + this.lines().each(function () { + if (this.dom.newLined) { + if (!self.textPath()) { + this.attr('x', self.attr('x')); + } + + if (this.text() == '\n') { + blankLineOffset += dy; + } else { + this.attr('dy', dy + blankLineOffset); + blankLineOffset = 0; + } + } + }); + this.fire('rebuild'); + } + + return this; + }, + // Enable / disable build mode + build: function build(_build) { + this._build = !!_build; + return this; + }, + // overwrite method from parent to set data properly + setData: function setData(o) { + this.dom = o; + this.dom.leading = new SVG.Number(o.leading || 1.3); + return this; + } + }, + // Add parent method + construct: { + // Create text element + text: function text(_text2) { + return this.put(new SVG.Text()).text(_text2); + }, + // Create plain text element + plain: function plain(text) { + return this.put(new SVG.Text()).plain(text); + } + } + }); + SVG.Tspan = SVG.invent({ + // Initialize node + create: 'tspan', + // Inherit from + inherit: SVG.Shape, + // Add class methods + extend: { + // Set text content + text: function text(_text3) { + if (_text3 == null) return this.node.textContent + (this.dom.newLined ? '\n' : ''); + typeof _text3 === 'function' ? _text3.call(this, this) : this.plain(_text3); + return this; + }, + // Shortcut dx + dx: function dx(_dx) { + return this.attr('dx', _dx); + }, + // Shortcut dy + dy: function dy(_dy) { + return this.attr('dy', _dy); + }, + // Create new line + newLine: function newLine() { + // fetch text parent + var t = this.parent(SVG.Text); // mark new line + + this.dom.newLined = true; // apply new hy¡n + + return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x()); + } + } + }); + SVG.extend(SVG.Text, SVG.Tspan, { + // Create plain text node + plain: function plain(text) { + // clear if build mode is disabled + if (this._build === false) { + this.clear(); + } // create text node + + + this.node.appendChild(document.createTextNode(text)); + return this; + }, + // Create a tspan + tspan: function tspan(text) { + var node = (this.textPath && this.textPath() || this).node, + tspan = new SVG.Tspan(); // clear if build mode is disabled + + if (this._build === false) { + this.clear(); + } // add new tspan + + + node.appendChild(tspan.node); + return tspan.text(text); + }, + // Clear all lines + clear: function clear() { + var node = (this.textPath && this.textPath() || this).node; // remove existing child nodes + + while (node.hasChildNodes()) { + node.removeChild(node.lastChild); + } + + return this; + }, + // Get length of text element + length: function length() { + return this.node.getComputedTextLength(); + } + }); + SVG.TextPath = SVG.invent({ + // Initialize node + create: 'textPath', + // Inherit from + inherit: SVG.Parent, + // Define parent class + parent: SVG.Text, + // Add parent method + construct: { + morphArray: SVG.PathArray, + // return the array of the path track element + array: function array() { + var track = this.track(); + return track ? track.array() : null; + }, + // Plot path if any + plot: function plot(d) { + var track = this.track(), + pathArray = null; + + if (track) { + pathArray = track.plot(d); + } + + return d == null ? pathArray : this; + }, + // Get the path track element + track: function track() { + var path = this.textPath(); + + if (path) { + return path.reference('href'); + } + }, + // Get the textPath child + textPath: function textPath() { + if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') { + return SVG.adopt(this.node.firstChild); + } + } + } + }); + SVG.Nested = SVG.invent({ + // Initialize node + create: function create() { + this.constructor.call(this, SVG.create('svg')); + this.style('overflow', 'visible'); + }, + // Inherit from + inherit: SVG.Container, + // Add parent method + construct: { + // Create nested svg document + nested: function nested() { + return this.put(new SVG.Nested()); + } + } + }); // Define list of available attributes for stroke and fill + + var sugar = { + stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'], + fill: ['color', 'opacity', 'rule'], + prefix: function prefix(t, a) { + return a == 'color' ? t : t + '-' + a; + } + } // Add sugar for fill and stroke + ; + ['fill', 'stroke'].forEach(function (m) { + var extension = {}; + + extension[m] = function (o) { + if (typeof o === 'undefined') { + return this; + } + + if (typeof o === 'string' || SVG.Color.isRgb(o) || o && typeof o.fill === 'function') { + this.attr(m, o); + } else // set all attributes from sugar.fill and sugar.stroke list + { + for (var i = sugar[m].length - 1; i >= 0; i--) { + if (o[sugar[m][i]] != null) { + this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]); + } + } + } + + return this; + }; + + SVG.extend(SVG.Element, SVG.FX, extension); + }); + SVG.extend(SVG.Element, SVG.FX, { + // Map translate to transform + translate: function translate(x, y) { + return this.transform({ + x: x, + y: y + }); + }, + // Map matrix to transform + matrix: function matrix(m) { + return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m)); + }, + // Opacity + opacity: function opacity(value) { + return this.attr('opacity', value); + }, + // Relative move over x axis + dx: function dx(x) { + return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true); + }, + // Relative move over y axis + dy: function dy(y) { + return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true); + } + }); + SVG.extend(SVG.Path, { + // Get path length + length: function length() { + return this.node.getTotalLength(); + }, + // Get point at length + pointAt: function pointAt(length) { + return this.node.getPointAtLength(length); + } + }); + SVG.Set = SVG.invent({ + // Initialize + create: function create(members) { + // Set initial state + Array.isArray(members) ? this.members = members : this.clear(); + }, + // Add class methods + extend: { + // Add element to set + add: function add() { + var il, + elements = [].slice.call(arguments); + + for (var i = 0, il = elements.length; i < il; i++) { + this.members.push(elements[i]); + } + + return this; + }, + // Remove element from set + remove: function remove(element) { + var i = this.index(element); // remove given child + + if (i > -1) { + this.members.splice(i, 1); + } + + return this; + }, + // Iterate over all members + each: function each(block) { + for (var i = 0, il = this.members.length; i < il; i++) { + block.apply(this.members[i], [i, this.members]); + } + + return this; + }, + // Restore to defaults + clear: function clear() { + // initialize store + this.members = []; + return this; + }, + // Get the length of a set + length: function length() { + return this.members.length; + }, + // Checks if a given element is present in set + has: function has(element) { + return this.index(element) >= 0; + }, + // retuns index of given element in set + index: function index(element) { + return this.members.indexOf(element); + }, + // Get member at given index + get: function get(i) { + return this.members[i]; + }, + // Get first member + first: function first() { + return this.get(0); + }, + // Get last member + last: function last() { + return this.get(this.members.length - 1); + }, + // Default value + valueOf: function valueOf() { + return this.members; + } + }, + // Add parent method + construct: { + // Create a new set + set: function set(members) { + return new SVG.Set(members); + } + } + }); + SVG.FX.Set = SVG.invent({ + // Initialize node + create: function create(set) { + // store reference to set + this.set = set; + } + }); // Alias methods + + SVG.Set.inherit = function () { + var methods = []; // gather shape methods + + for (var m in SVG.Shape.prototype) { + if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') { + methods.push(m); + } + } // apply shape aliasses + + + methods.forEach(function (method) { + SVG.Set.prototype[method] = function () { + for (var i = 0, il = this.members.length; i < il; i++) { + if (this.members[i] && typeof this.members[i][method] === 'function') { + this.members[i][method].apply(this.members[i], arguments); + } + } + + return method == 'animate' ? this.fx || (this.fx = new SVG.FX.Set(this)) : this; + }; + }); // clear methods for the next round + + methods = []; // gather fx methods + + for (var m in SVG.FX.prototype) { + if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') { + methods.push(m); + } + } // apply fx aliasses + + + methods.forEach(function (method) { + SVG.FX.Set.prototype[method] = function () { + for (var i = 0, il = this.set.members.length; i < il; i++) { + this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments); + } + + return this; + }; + }); + }; + + SVG.extend(SVG.Element, {}); + SVG.extend(SVG.Element, { + // Remember arbitrary data + remember: function remember(k, v) { + // remember every item in an object individually + if (_typeof(arguments[0]) === 'object') { + for (var v_ in k) { + this.remember(v_, k[v_]); + } + } // retrieve memory + else if (arguments.length == 1) { + return this.memory()[k]; + } // store memory + else { + this.memory()[k] = v; + } + + return this; + }, + // Erase a given memory + forget: function forget() { + if (arguments.length == 0) { + this._memory = {}; + } else { + for (var i = arguments.length - 1; i >= 0; i--) { + delete this.memory()[arguments[i]]; + } + } + + return this; + }, + // Initialize or return local memory object + memory: function memory() { + return this._memory || (this._memory = {}); + } + }); // Method for getting an element by id + + SVG.get = function (id) { + var node = document.getElementById(idFromReference(id) || id); + return SVG.adopt(node); + }; // Select elements by query string + + + SVG.select = function (query, parent) { + return new SVG.Set(SVG.utils.map((parent || document).querySelectorAll(query), function (node) { + return SVG.adopt(node); + })); + }; + + SVG.extend(SVG.Parent, { + // Scoped select method + select: function select(query) { + return SVG.select(query, this.node); + } + }); + + function pathRegReplace(a, b, c, d) { + return c + d.replace(SVG.regex.dots, ' .'); + } // creates deep clone of array + + + function _is(el, obj) { + return el instanceof obj; + } // tests if a given selector matches an element + + + function _matches(el, selector) { + return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector); + } // Convert dash-separated-string to camelCase + + + function camelCase(s) { + return s.toLowerCase().replace(/-(.)/g, function (m, g) { + return g.toUpperCase(); + }); + } // Capitalize first letter of a string + + + function capitalize(s) { + return s.charAt(0).toUpperCase() + s.slice(1); + } // Ensure to six-based hex + + + function fullHex(hex) { + return hex.length == 4 ? ['#', hex.substring(1, 2), hex.substring(1, 2), hex.substring(2, 3), hex.substring(2, 3), hex.substring(3, 4), hex.substring(3, 4)].join('') : hex; + } // Component to hex value + + + function compToHex(comp) { + var hex = comp.toString(16); + return hex.length == 1 ? '0' + hex : hex; + } // Calculate proportional width and height values when necessary + + + function proportionalSize(element, width, height) { + if (width == null || height == null) { + var box = element.bbox(); + + if (width == null) { + width = box.width / box.height * height; + } else if (height == null) { + height = box.height / box.width * width; + } + } + + return { + width: width, + height: height + }; + } // Delta transform point + + + function deltaTransformPoint(matrix, x, y) { + return { + x: x * matrix.a + y * matrix.c + 0, + y: x * matrix.b + y * matrix.d + 0 + }; + } // Map matrix array to object + + + function arrayToMatrix(a) { + return { + a: a[0], + b: a[1], + c: a[2], + d: a[3], + e: a[4], + f: a[5] + }; + } // Parse matrix if required + + + function parseMatrix(matrix) { + if (!(matrix instanceof SVG.Matrix)) { + matrix = new SVG.Matrix(matrix); + } + + return matrix; + } // Add centre point to transform object + + + function arrayToString(a) { + for (var i = 0, il = a.length, s = ''; i < il; i++) { + s += a[i][0]; + + if (a[i][1] != null) { + s += a[i][1]; + + if (a[i][2] != null) { + s += ' '; + s += a[i][2]; + + if (a[i][3] != null) { + s += ' '; + s += a[i][3]; + s += ' '; + s += a[i][4]; + + if (a[i][5] != null) { + s += ' '; + s += a[i][5]; + s += ' '; + s += a[i][6]; + + if (a[i][7] != null) { + s += ' '; + s += a[i][7]; + } + } + } + } + } + } + + return s + ' '; + } // Deep new id assignment + + + function assignNewId(node) { + // do the same for SVG child nodes as well + for (var i = node.childNodes.length - 1; i >= 0; i--) { + if (node.childNodes[i] instanceof window.SVGElement) { + assignNewId(node.childNodes[i]); + } + } + + return SVG.adopt(node).id(SVG.eid(node.nodeName)); + } // Add more bounding box properties + + + function fullBox(b) { + if (b.x == null) { + b.x = 0; + b.y = 0; + b.width = 0; + b.height = 0; + } + + b.w = b.width; + b.h = b.height; + b.x2 = b.x + b.width; + b.y2 = b.y + b.height; + b.cx = b.x + b.width / 2; + b.cy = b.y + b.height / 2; + return b; + } // Get id from reference string + + + function idFromReference(url) { + var m = (url || '').toString().match(SVG.regex.reference); + if (m) return m[1]; + } // If values like 1e-88 are passed, this is not a valid 32 bit float, + // but in those cases, we are so close to 0 that 0 works well! + + + function float32String(v) { + return Math.abs(v) > 1e-37 ? v : 0; + } // Create matrix array for looping + + + var abcdef = 'abcdef'.split(''); // Add CustomEvent to IE9 and IE10 + + if (typeof window.CustomEvent !== 'function') { + // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent + var CustomEventPoly = function CustomEventPoly(event, options) { + options = options || { + bubbles: false, + cancelable: false, + detail: undefined + }; + var e = document.createEvent('CustomEvent'); + e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail); + return e; + }; + + CustomEventPoly.prototype = window.Event.prototype; + SVG.CustomEvent = CustomEventPoly; + } else { + SVG.CustomEvent = window.CustomEvent; + } + + return SVG; + }); + + /*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ + (function() { + + // Main filter class + SVG.Filter = SVG.invent({ + create: 'filter', + inherit: SVG.Parent, + extend: { + // Static strings + source: 'SourceGraphic', + sourceAlpha: 'SourceAlpha', + background: 'BackgroundImage', + backgroundAlpha: 'BackgroundAlpha', + fill: 'FillPaint', + stroke: 'StrokePaint', + + autoSetIn: true, + // Custom put method for leaner code + put: function(element, i) { + this.add(element, i); + + if(!element.attr('in') && this.autoSetIn){ + element.attr('in',this.source); + } + if(!element.attr('result')){ + element.attr('result',element); + } + + return element + }, + // Blend effect + blend: function(in1, in2, mode) { + return this.put(new SVG.BlendEffect(in1, in2, mode)) + }, + // ColorMatrix effect + colorMatrix: function(type, values) { + return this.put(new SVG.ColorMatrixEffect(type, values)) + }, + // ConvolveMatrix effect + convolveMatrix: function(matrix) { + return this.put(new SVG.ConvolveMatrixEffect(matrix)) + }, + // ComponentTransfer effect + componentTransfer: function(components) { + return this.put(new SVG.ComponentTransferEffect(components)) + }, + // Composite effect + composite: function(in1, in2, operator) { + return this.put(new SVG.CompositeEffect(in1, in2, operator)) + }, + // Flood effect + flood: function(color, opacity) { + return this.put(new SVG.FloodEffect(color, opacity)) + }, + // Offset effect + offset: function(x, y) { + return this.put(new SVG.OffsetEffect(x,y)) + }, + // Image effect + image: function(src) { + return this.put(new SVG.ImageEffect(src)) + }, + // Merge effect + merge: function() { + //pass the array of arguments to the constructor because we dont know if the user gave us an array as the first arguemnt or wether they listed the effects in the arguments + var args = [undefined]; + for(var i in arguments) args.push(arguments[i]); + return this.put(new (SVG.MergeEffect.bind.apply(SVG.MergeEffect,args))) + }, + // Gaussian Blur effect + gaussianBlur: function(x,y) { + return this.put(new SVG.GaussianBlurEffect(x,y)) + }, + // Morphology effect + morphology: function(operator,radius){ + return this.put(new SVG.MorphologyEffect(operator,radius)) + }, + // DiffuseLighting effect + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + return this.put(new SVG.DiffuseLightingEffect(surfaceScale,diffuseConstant,kernelUnitLength)) + }, + // DisplacementMap effect + displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){ + return this.put(new SVG.DisplacementMapEffect(in1,in2,scale,xChannelSelector,yChannelSelector)) + }, + // SpecularLighting effect + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + return this.put(new SVG.SpecularLightingEffect(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength)) + }, + // Tile effect + tile: function(){ + return this.put(new SVG.TileEffect()); + }, + // Turbulence effect + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + return this.put(new SVG.TurbulenceEffect(baseFrequency,numOctaves,seed,stitchTiles,type)) + }, + // Default string value + toString: function() { + return 'url(#' + this.attr('id') + ')' + } + } + }); + + //add .filter function + SVG.extend(SVG.Defs, { + // Define filter + filter: function(block) { + var filter = this.put(new SVG.Filter); + + /* invoke passed block */ + if (typeof block === 'function') + block.call(filter, filter); + + return filter + } + }); + SVG.extend(SVG.Container, { + // Define filter on defs + filter: function(block) { + return this.defs().filter(block) + } + }); + SVG.extend(SVG.Element, SVG.G, SVG.Nested, { + // Create filter element in defs and store reference + filter: function(block) { + this.filterer = block instanceof SVG.Element ? + block : this.doc().filter(block); + + if(this.doc() && this.filterer.doc() !== this.doc()){ + this.doc().defs().add(this.filterer); + } + + this.attr('filter', this.filterer); + + return this.filterer + }, + // Remove filter + unfilter: function(remove) { + /* also remove the filter node */ + if (this.filterer && remove === true) + this.filterer.remove(); + + /* delete reference to filterer */ + delete this.filterer; + + /* remove filter attribute */ + return this.attr('filter', null) + } + }); + + // Create SVG.Effect class + SVG.Effect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Element, + extend: { + // Set in attribute + in: function(effect) { + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect) + }, + // Named result + result: function(result) { + return result == null? this.attr('result') : this.attr('result',result) + }, + // Stringification + toString: function() { + return this.result() + } + } + }); + + // create class for parent effects like merge + // Inherit from SVG.Parent + SVG.ParentEffect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Parent, + extend: { + // Set in attribute + in: function(effect) { + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in')+'"]').get(0) || this.attr('in') : this.attr('in', effect) + }, + // Named result + result: function(result) { + return result == null? this.attr('result') : this.attr('result',result) + }, + // Stringification + toString: function() { + return this.result() + } + } + }); + + //chaining + var chainingEffects = { + // Blend effect + blend: function(in2, mode) { + return this.parent() && this.parent().blend(this, in2, mode) //pass this as the first input + }, + // ColorMatrix effect + colorMatrix: function(type, values) { + return this.parent() && this.parent().colorMatrix(type, values).in(this) + }, + // ConvolveMatrix effect + convolveMatrix: function(matrix) { + return this.parent() && this.parent().convolveMatrix(matrix).in(this) + }, + // ComponentTransfer effect + componentTransfer: function(components) { + return this.parent() && this.parent().componentTransfer(components).in(this) + }, + // Composite effect + composite: function(in2, operator) { + return this.parent() && this.parent().composite(this, in2, operator) //pass this as the first input + }, + // Flood effect + flood: function(color, opacity) { + return this.parent() && this.parent().flood(color, opacity) //this effect dont have inputs + }, + // Offset effect + offset: function(x, y) { + return this.parent() && this.parent().offset(x,y).in(this) + }, + // Image effect + image: function(src) { + return this.parent() && this.parent().image(src) //this effect dont have inputs + }, + // Merge effect + merge: function() { + return this.parent() && this.parent().merge.apply(this.parent(),[this].concat(arguments)) //pass this as the first argument + }, + // Gaussian Blur effect + gaussianBlur: function(x,y) { + return this.parent() && this.parent().gaussianBlur(x,y).in(this) + }, + // Morphology effect + morphology: function(operator,radius){ + return this.parent() && this.parent().morphology(operator,radius).in(this) + }, + // DiffuseLighting effect + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + return this.parent() && this.parent().diffuseLighting(surfaceScale,diffuseConstant,kernelUnitLength).in(this) + }, + // DisplacementMap effect + displacementMap: function(in2,scale,xChannelSelector,yChannelSelector){ + return this.parent() && this.parent().displacementMap(this,in2,scale,xChannelSelector,yChannelSelector) //pass this as the first input + }, + // SpecularLighting effect + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + return this.parent() && this.parent().specularLighting(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength).in(this) + }, + // Tile effect + tile: function(){ + return this.parent() && this.parent().tile().in(this) + }, + // Turbulence effect + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + return this.parent() && this.parent().turbulence(baseFrequency,numOctaves,seed,stitchTiles,type).in(this) + } + }; + SVG.extend(SVG.Effect,chainingEffects); + SVG.extend(SVG.ParentEffect,chainingEffects); + + //crea class for child effects, like MergeNode, FuncR and lights + SVG.ChildEffect = SVG.invent({ + create: function(){ + this.constructor.call(this); + }, + inherit: SVG.Element, + extend: { + in: function(effect){ + this.attr('in',effect); + } + //dont include any "result" functions because these types of nodes dont have them + } + }); + + // Create all different effects + var effects = { + blend: function(in1,in2,mode){ + this.attr({ + in: in1, + in2: in2, + mode: mode || 'normal' + }); + }, + colorMatrix: function(type,values){ + if (type == 'matrix') + values = normaliseMatrix(values); + + this.attr({ + type: type + , values: typeof values == 'undefined' ? null : values + }); + }, + convolveMatrix: function(matrix){ + matrix = normaliseMatrix(matrix); + + this.attr({ + order: Math.sqrt(matrix.split(' ').length) + , kernelMatrix: matrix + }); + }, + composite: function(in1, in2, operator){ + this.attr({ + in: in1, + in2: in2, + operator: operator + }); + }, + flood: function(color,opacity){ + this.attr('flood-color',color); + if(opacity != null) this.attr('flood-opacity',opacity); + }, + offset: function(x,y){ + this.attr({ + dx: x, + dy: y + }); + }, + image: function(src){ + this.attr('href', src, SVG.xlink); + }, + displacementMap: function(in1,in2,scale,xChannelSelector,yChannelSelector){ + this.attr({ + in: in1, + in2: in2, + scale: scale, + xChannelSelector: xChannelSelector, + yChannelSelector: yChannelSelector + }); + }, + gaussianBlur: function(x,y){ + if(x != null || y != null) + this.attr('stdDeviation', listString(Array.prototype.slice.call(arguments))); + else + this.attr('stdDeviation', '0 0'); + }, + morphology: function(operator,radius){ + this.attr({ + operator: operator, + radius: radius + }); + }, + tile: function(){ + + }, + turbulence: function(baseFrequency,numOctaves,seed,stitchTiles,type){ + this.attr({ + numOctaves: numOctaves, + seed: seed, + stitchTiles: stitchTiles, + baseFrequency: baseFrequency, + type: type + }); + } + }; + + // Create all parent effects + var parentEffects = { + merge: function(){ + var children; + + //test to see if we have a set + if(arguments[0] instanceof SVG.Set){ + var that = this; + arguments[0].each(function(i){ + if(this instanceof SVG.MergeNode) + that.put(this); + else if(this instanceof SVG.Effect || this instanceof SVG.ParentEffect) + that.put(new SVG.MergeNode(this)); + }); + } + else { + //if the first argument is an array use it + if(Array.isArray(arguments[0])) + children = arguments[0]; + else + children = arguments; + + for(var i = 0; i < children.length; i++){ + if(children[i] instanceof SVG.MergeNode){ + this.put(children[i]); + } + else this.put(new SVG.MergeNode(children[i])); + } + } + }, + componentTransfer: function(compontents){ + /* create rgb set */ + this.rgb = new SVG.Set + + /* create components */ + ;(['r', 'g', 'b', 'a']).forEach(function(c) { + /* create component */ + this[c] = new SVG['Func' + c.toUpperCase()]('identity'); + + /* store component in set */ + this.rgb.add(this[c]); + + /* add component node */ + this.node.appendChild(this[c].node); + }.bind(this)); //lost context in foreach + + /* set components */ + if (compontents) { + if (compontents.rgb) { + (['r', 'g', 'b']).forEach(function(c) { + this[c].attr(compontents.rgb); + }.bind(this)); + + delete compontents.rgb; + } + + /* set individual components */ + for (var c in compontents) + this[c].attr(compontents[c]); + } + }, + diffuseLighting: function(surfaceScale,diffuseConstant,kernelUnitLength){ + this.attr({ + surfaceScale: surfaceScale, + diffuseConstant: diffuseConstant, + kernelUnitLength: kernelUnitLength + }); + }, + specularLighting: function(surfaceScale,diffuseConstant,specularExponent,kernelUnitLength){ + this.attr({ + surfaceScale: surfaceScale, + diffuseConstant: diffuseConstant, + specularExponent: specularExponent, + kernelUnitLength: kernelUnitLength + }); + }, + }; + + // Create child effects like PointLight and MergeNode + var childEffects = { + distantLight: function(azimuth, elevation){ + this.attr({ + azimuth: azimuth, + elevation: elevation + }); + }, + pointLight: function(x,y,z){ + this.attr({ + x: x, + y: y, + z: z + }); + }, + spotLight: function(x,y,z,pointsAtX,pointsAtY,pointsAtZ){ + this.attr({ + x: x, + y: y, + z: z, + pointsAtX: pointsAtX, + pointsAtY: pointsAtY, + pointsAtZ: pointsAtZ + }); + }, + mergeNode: function(in1){ + this.attr('in',in1); + } + } + + // Create compontent functions + ;(['r', 'g', 'b', 'a']).forEach(function(c) { + /* create class */ + childEffects['Func' + c.toUpperCase()] = function(type) { + this.attr('type',type); + + // take diffent arguments based on the type + switch(type){ + case 'table': + this.attr('tableValues',arguments[1]); + break + case 'linear': + this.attr('slope',arguments[1]); + this.attr('intercept',arguments[2]); + break + case 'gamma': + this.attr('amplitude',arguments[1]); + this.attr('exponent',arguments[2]); + this.attr('offset',arguments[2]); + break + } + }; + }); + + //create effects + foreach(effects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name + 'Effect'] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + + //set the result + this.result(this.attr('id') + 'Out'); + }, + inherit: SVG.Effect, + extend: proto + }); + }); + + //create parent effects + foreach(parentEffects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name + 'Effect'] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + + //set the result + this.result(this.attr('id') + 'Out'); + }, + inherit: SVG.ParentEffect, + extend: proto + }); + }); + + //create child effects + foreach(childEffects,function(effect,i){ + + /* capitalize name */ + var name = i.charAt(0).toUpperCase() + i.slice(1); + var proto = {}; + + /* create class */ + SVG[name] = SVG.invent({ + create: function() { + //call super + this.constructor.call(this, SVG.create('fe' + name)); + + //call constructor for this effect + effect.apply(this,arguments); + }, + inherit: SVG.ChildEffect, + extend: proto + }); + }); + + // Effect-specific extensions + SVG.extend(SVG.MergeEffect,{ + in: function(effect){ + if(effect instanceof SVG.MergeNode) + this.add(effect,0); + else + this.add(new SVG.MergeNode(effect),0); + + return this + } + }); + SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{ + in2: function(effect){ + return effect == null? this.parent() && this.parent().select('[result="'+this.attr('in2')+'"]').get(0) || this.attr('in2') : this.attr('in2', effect) + } + }); + + // Presets + SVG.filter = { + sepiatone: [ .343, .669, .119, 0, 0 + , .249, .626, .130, 0, 0 + , .172, .334, .111, 0, 0 + , .000, .000, .000, 1, 0 ] + }; + + // Helpers + function normaliseMatrix(matrix) { + /* convert possible array value to string */ + if (Array.isArray(matrix)) + matrix = new SVG.Array(matrix); + + /* ensure there are no leading, tailing or double spaces */ + return matrix.toString().replace(/^\s+/, '').replace(/\s+$/, '').replace(/\s+/g, ' ') + } + + function listString(list) { + if (!Array.isArray(list)) + return list + + for (var i = 0, l = list.length, s = []; i < l; i++) + s.push(list[i]); + + return s.join(' ') + } + + function foreach(){ //loops through mutiple objects + var fn = function(){}; + if(typeof arguments[arguments.length-1] == 'function'){ + fn = arguments[arguments.length-1]; + Array.prototype.splice.call(arguments,arguments.length-1,1); + } + for(var k in arguments){ + for(var i in arguments[k]){ + fn(arguments[k][i],i,arguments[k]); + } + } + } + + }).call(undefined); + + (function() { + + SVG.extend(SVG.PathArray, { + morph: function(array) { + + var startArr = this.value + , destArr = this.parse(array); + + var startOffsetM = 0 + , destOffsetM = 0; + + var startOffsetNextM = false + , destOffsetNextM = false; + + while(true){ + // stop if there is no M anymore + if(startOffsetM === false && destOffsetM === false) break + + // find the next M in path array + startOffsetNextM = findNextM(startArr, startOffsetM === false ? false : startOffsetM+1); + destOffsetNextM = findNextM( destArr, destOffsetM === false ? false : destOffsetM+1); + + // We have to add one M to the startArray + if(startOffsetM === false){ + var bbox = new SVG.PathArray(result.start).bbox(); + + // when the last block had no bounding box we simply take the first M we got + if(bbox.height == 0 || bbox.width == 0){ + startOffsetM = startArr.push(startArr[0]) - 1; + }else { + // we take the middle of the bbox instead when we got one + startOffsetM = startArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1; + } + } + + // We have to add one M to the destArray + if( destOffsetM === false){ + var bbox = new SVG.PathArray(result.dest).bbox(); + + if(bbox.height == 0 || bbox.width == 0){ + destOffsetM = destArr.push(destArr[0]) - 1; + }else { + destOffsetM = destArr.push( ['M', bbox.x + bbox.width/2, bbox.y + bbox.height/2 ] ) - 1; + } + } + + // handle block from M to next M + var result = handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM); + + // update the arrays to their new values + startArr = startArr.slice(0, startOffsetM).concat(result.start, startOffsetNextM === false ? [] : startArr.slice(startOffsetNextM)); + destArr = destArr.slice(0, destOffsetM).concat(result.dest , destOffsetNextM === false ? [] : destArr.slice( destOffsetNextM)); + + // update offsets + startOffsetM = startOffsetNextM === false ? false : startOffsetM + result.start.length; + destOffsetM = destOffsetNextM === false ? false : destOffsetM + result.dest.length; + + } + + // copy back arrays + this.value = startArr; + this.destination = new SVG.PathArray(); + this.destination.value = destArr; + + return this + } + }); + + + + // sorry for the long declaration + // slices out one block (from M to M) and syncronize it so the types and length match + function handleBlock(startArr, startOffsetM, startOffsetNextM, destArr, destOffsetM, destOffsetNextM, undefined$1){ + + // slice out the block we need + var startArrTemp = startArr.slice(startOffsetM, startOffsetNextM || undefined$1) + , destArrTemp = destArr.slice( destOffsetM, destOffsetNextM || undefined$1); + + var i = 0 + , posStart = {pos:[0,0], start:[0,0]} + , posDest = {pos:[0,0], start:[0,0]}; + + do{ + + // convert shorthand types to long form + startArrTemp[i] = simplyfy.call(posStart, startArrTemp[i]); + destArrTemp[i] = simplyfy.call(posDest , destArrTemp[i]); + + // check if both shape types match + // 2 elliptical arc curve commands ('A'), are considered different if the + // flags (large-arc-flag, sweep-flag) don't match + if(startArrTemp[i][0] != destArrTemp[i][0] || startArrTemp[i][0] == 'M' || + (startArrTemp[i][0] == 'A' && + (startArrTemp[i][4] != destArrTemp[i][4] || startArrTemp[i][5] != destArrTemp[i][5]) + ) + ) { + + // if not, convert shapes to beziere + Array.prototype.splice.apply(startArrTemp, [i, 1].concat(toBeziere.call(posStart, startArrTemp[i]))); + Array.prototype.splice.apply(destArrTemp, [i, 1].concat(toBeziere.call(posDest, destArrTemp[i]))); + + } else { + + // only update positions otherwise + startArrTemp[i] = setPosAndReflection.call(posStart, startArrTemp[i]); + destArrTemp[i] = setPosAndReflection.call(posDest , destArrTemp[i]); + + } + + // we are at the end at both arrays. stop here + if(++i == startArrTemp.length && i == destArrTemp.length) break + + // destArray is longer. Add one element + if(i == startArrTemp.length){ + startArrTemp.push([ + 'C', + posStart.pos[0], + posStart.pos[1], + posStart.pos[0], + posStart.pos[1], + posStart.pos[0], + posStart.pos[1], + ]); + } + + // startArr is longer. Add one element + if(i == destArrTemp.length){ + destArrTemp.push([ + 'C', + posDest.pos[0], + posDest.pos[1], + posDest.pos[0], + posDest.pos[1], + posDest.pos[0], + posDest.pos[1] + ]); + } + + + }while(true) + + // return the updated block + return {start:startArrTemp, dest:destArrTemp} + } + + // converts shorthand types to long form + function simplyfy(val){ + + switch(val[0]){ + case 'z': // shorthand line to start + case 'Z': + val[0] = 'L'; + val[1] = this.start[0]; + val[2] = this.start[1]; + break + case 'H': // shorthand horizontal line + val[0] = 'L'; + val[2] = this.pos[1]; + break + case 'V': // shorthand vertical line + val[0] = 'L'; + val[2] = val[1]; + val[1] = this.pos[0]; + break + case 'T': // shorthand quadratic beziere + val[0] = 'Q'; + val[3] = val[1]; + val[4] = val[2]; + val[1] = this.reflection[1]; + val[2] = this.reflection[0]; + break + case 'S': // shorthand cubic beziere + val[0] = 'C'; + val[6] = val[4]; + val[5] = val[3]; + val[4] = val[2]; + val[3] = val[1]; + val[2] = this.reflection[1]; + val[1] = this.reflection[0]; + break + } + + return val + + } + + // updates reflection point and current position + function setPosAndReflection(val){ + + var len = val.length; + + this.pos = [ val[len-2], val[len-1] ]; + + if('SCQT'.indexOf(val[0]) != -1) + this.reflection = [ 2 * this.pos[0] - val[len-4], 2 * this.pos[1] - val[len-3] ]; + + return val + } + + // converts all types to cubic beziere + function toBeziere(val){ + var retVal = [val]; + + switch(val[0]){ + case 'M': // special handling for M + this.pos = this.start = [val[1], val[2]]; + return retVal + case 'L': + val[5] = val[3] = val[1]; + val[6] = val[4] = val[2]; + val[1] = this.pos[0]; + val[2] = this.pos[1]; + break + case 'Q': + val[6] = val[4]; + val[5] = val[3]; + val[4] = val[4] * 1/3 + val[2] * 2/3; + val[3] = val[3] * 1/3 + val[1] * 2/3; + val[2] = this.pos[1] * 1/3 + val[2] * 2/3; + val[1] = this.pos[0] * 1/3 + val[1] * 2/3; + break + case 'A': + retVal = arcToBeziere(this.pos, val); + val = retVal[0]; + break + } + + val[0] = 'C'; + this.pos = [val[5], val[6]]; + this.reflection = [2 * val[5] - val[3], 2 * val[6] - val[4]]; + + return retVal + + } + + // finds the next position of type M + function findNextM(arr, offset){ + + if(offset === false) return false + + for(var i = offset, len = arr.length;i < len;++i){ + + if(arr[i][0] == 'M') return i + + } + + return false + } + + + + // Convert an arc segment into equivalent cubic Bezier curves + // Depending on the arc, up to 4 curves might be used to represent it since a + // curve gives a good approximation for only a quarter of an ellipse + // The curves are returned as an array of SVG curve commands: + // [ ['C', x1, y1, x2, y2, x, y] ... ] + function arcToBeziere(pos, val) { + // Parameters extraction, handle out-of-range parameters as specified in the SVG spec + // See: https://www.w3.org/TR/SVG11/implnote.html#ArcOutOfRangeParameters + var rx = Math.abs(val[1]), ry = Math.abs(val[2]), xAxisRotation = val[3] % 360 + , largeArcFlag = val[4], sweepFlag = val[5], x = val[6], y = val[7] + , A = new SVG.Point(pos), B = new SVG.Point(x, y) + , primedCoord, lambda, mat, k, c, cSquare, t, O, OA, OB, tetaStart, tetaEnd + , deltaTeta, nbSectors, f, arcSegPoints, angle, sinAngle, cosAngle, pt, i, il + , retVal = [], x1, y1, x2, y2; + + // Ensure radii are non-zero + if(rx === 0 || ry === 0 || (A.x === B.x && A.y === B.y)) { + // treat this arc as a straight line segment + return [['C', A.x, A.y, B.x, B.y, B.x, B.y]] + } + + // Ensure radii are large enough using the algorithm provided in the SVG spec + // See: https://www.w3.org/TR/SVG11/implnote.html#ArcCorrectionOutOfRangeRadii + primedCoord = new SVG.Point((A.x-B.x)/2, (A.y-B.y)/2).transform(new SVG.Matrix().rotate(xAxisRotation)); + lambda = (primedCoord.x * primedCoord.x) / (rx * rx) + (primedCoord.y * primedCoord.y) / (ry * ry); + if(lambda > 1) { + lambda = Math.sqrt(lambda); + rx = lambda*rx; + ry = lambda*ry; + } + + // To simplify calculations, we make the arc part of a unit circle (rayon is 1) instead of an ellipse + mat = new SVG.Matrix().rotate(xAxisRotation).scale(1/rx, 1/ry).rotate(-xAxisRotation); + A = A.transform(mat); + B = B.transform(mat); + + // Calculate the horizontal and vertical distance between the initial and final point of the arc + k = [B.x-A.x, B.y-A.y]; + + // Find the length of the chord formed by A and B + cSquare = k[0]*k[0] + k[1]*k[1]; + c = Math.sqrt(cSquare); + + // Calculate the ratios of the horizontal and vertical distance on the length of the chord + k[0] /= c; + k[1] /= c; + + // Calculate the distance between the circle center and the chord midpoint + // using this formula: t = sqrt(r^2 - c^2 / 4) + // where t is the distance between the cirle center and the chord midpoint, + // r is the rayon of the circle and c is the chord length + // From: http://www.ajdesigner.com/phpcircle/circle_segment_chord_t.php + // Because of the imprecision of floating point numbers, cSquare might end + // up being slightly above 4 which would result in a negative radicand + // To prevent that, a test is made before computing the square root + t = (cSquare < 4) ? Math.sqrt(1 - cSquare/4) : 0; + + // For most situations, there are actually two different ellipses that + // satisfy the constraints imposed by the points A and B, the radii rx and ry, + // and the xAxisRotation + // When the flags largeArcFlag and sweepFlag are equal, it means that the + // second ellipse is used as a solution + // See: https://www.w3.org/TR/SVG/paths.html#PathDataEllipticalArcCommands + if(largeArcFlag === sweepFlag) { + t *= -1; + } + + // Calculate the coordinates of the center of the circle from the midpoint of the chord + // This is done by multiplying the ratios calculated previously by the distance between + // the circle center and the chord midpoint and using these values to go from the midpoint + // to the center of the circle + // The negative of the vertical distance ratio is used to modify the x coordinate while + // the horizontal distance ratio is used to modify the y coordinate + // That is because the center of the circle is perpendicular to the chord and perpendicular + // lines are negative reciprocals + O = new SVG.Point((B.x+A.x)/2 + t*-k[1], (B.y+A.y)/2 + t*k[0]); + // Move the center of the circle at the origin + OA = new SVG.Point(A.x-O.x, A.y-O.y); + OB = new SVG.Point(B.x-O.x, B.y-O.y); + + // Calculate the start and end angle + tetaStart = Math.acos(OA.x/Math.sqrt(OA.x*OA.x + OA.y*OA.y)); + if (OA.y < 0) { + tetaStart *= -1; + } + tetaEnd = Math.acos(OB.x/Math.sqrt(OB.x*OB.x + OB.y*OB.y)); + if (OB.y < 0) { + tetaEnd *= -1; + } + + // If sweep-flag is '1', then the arc will be drawn in a "positive-angle" direction, + // make sure that the end angle is above the start angle + if (sweepFlag && tetaStart > tetaEnd) { + tetaEnd += 2*Math.PI; + } + // If sweep-flag is '0', then the arc will be drawn in a "negative-angle" direction, + // make sure that the end angle is below the start angle + if (!sweepFlag && tetaStart < tetaEnd) { + tetaEnd -= 2*Math.PI; + } + + // Find the number of Bezier curves that are required to represent the arc + // A cubic Bezier curve gives a good enough approximation when representing at most a quarter of a circle + nbSectors = Math.ceil(Math.abs(tetaStart-tetaEnd) * 2/Math.PI); + + // Calculate the coordinates of the points of all the Bezier curves required to represent the arc + // For an in-depth explanation of this part see: http://pomax.github.io/bezierinfo/#circles_cubic + arcSegPoints = []; + angle = tetaStart; + deltaTeta = (tetaEnd-tetaStart)/nbSectors; + f = 4*Math.tan(deltaTeta/4)/3; + for (i = 0; i <= nbSectors; i++) { // The <= is because a Bezier curve have a start and a endpoint + cosAngle = Math.cos(angle); + sinAngle = Math.sin(angle); + + pt = new SVG.Point(O.x+cosAngle, O.y+sinAngle); + arcSegPoints[i] = [new SVG.Point(pt.x+f*sinAngle, pt.y-f*cosAngle), pt, new SVG.Point(pt.x-f*sinAngle, pt.y+f*cosAngle)]; + + angle += deltaTeta; + } + + // Remove the first control point of the first segment point and remove the second control point of the last segment point + // These two control points are not used in the approximation of the arc, that is why they are removed + arcSegPoints[0][0] = arcSegPoints[0][1].clone(); + arcSegPoints[arcSegPoints.length-1][2] = arcSegPoints[arcSegPoints.length-1][1].clone(); + + // Revert the transformation that was applied to make the arc part of a unit circle instead of an ellipse + mat = new SVG.Matrix().rotate(xAxisRotation).scale(rx, ry).rotate(-xAxisRotation); + for (i = 0, il = arcSegPoints.length; i < il; i++) { + arcSegPoints[i][0] = arcSegPoints[i][0].transform(mat); + arcSegPoints[i][1] = arcSegPoints[i][1].transform(mat); + arcSegPoints[i][2] = arcSegPoints[i][2].transform(mat); + } + + + // Convert the segments points to SVG curve commands + for (i = 1, il = arcSegPoints.length; i < il; i++) { + pt = arcSegPoints[i-1][2]; + x1 = pt.x; + y1 = pt.y; + + pt = arcSegPoints[i][0]; + x2 = pt.x; + y2 = pt.y; + + pt = arcSegPoints[i][1]; + x = pt.x; + y = pt.y; + + retVal.push(['C', x1, y1, x2, y2, x, y]); + } + + return retVal + } + }()); + + /*! svg.draggable.js - v2.2.2 - 2019-01-08 + * https://github.com/svgdotjs/svg.draggable.js + * Copyright (c) 2019 Wout Fierens; Licensed MIT */ + (function() { + + // creates handler, saves it + function DragHandler(el){ + el.remember('_draggable', this); + this.el = el; + } + + + // Sets new parameter, starts dragging + DragHandler.prototype.init = function(constraint, val){ + var _this = this; + this.constraint = constraint; + this.value = val; + this.el.on('mousedown.drag', function(e){ _this.start(e); }); + this.el.on('touchstart.drag', function(e){ _this.start(e); }); + }; + + // transforms one point from screen to user coords + DragHandler.prototype.transformPoint = function(event, offset){ + event = event || window.event; + var touches = event.changedTouches && event.changedTouches[0] || event; + this.p.x = touches.clientX - (offset || 0); + this.p.y = touches.clientY; + return this.p.matrixTransform(this.m) + }; + + // gets elements bounding box with special handling of groups, nested and use + DragHandler.prototype.getBBox = function(){ + + var box = this.el.bbox(); + + if(this.el instanceof SVG.Nested) box = this.el.rbox(); + + if (this.el instanceof SVG.G || this.el instanceof SVG.Use || this.el instanceof SVG.Nested) { + box.x = this.el.x(); + box.y = this.el.y(); + } + + return box + }; + + // start dragging + DragHandler.prototype.start = function(e){ + + // check for left button + if(e.type == 'click'|| e.type == 'mousedown' || e.type == 'mousemove'){ + if((e.which || e.buttons) != 1){ + return + } + } + + var _this = this; + + // fire beforedrag event + this.el.fire('beforedrag', { event: e, handler: this }); + if(this.el.event().defaultPrevented) return; + + // prevent browser drag behavior as soon as possible + e.preventDefault(); + + // prevent propagation to a parent that might also have dragging enabled + e.stopPropagation(); + + // search for parent on the fly to make sure we can call + // draggable() even when element is not in the dom currently + this.parent = this.parent || this.el.parent(SVG.Nested) || this.el.parent(SVG.Doc); + this.p = this.parent.node.createSVGPoint(); + + // save current transformation matrix + this.m = this.el.node.getScreenCTM().inverse(); + + var box = this.getBBox(); + + var anchorOffset; + + // fix text-anchor in text-element (#37) + if(this.el instanceof SVG.Text){ + anchorOffset = this.el.node.getComputedTextLength(); + + switch(this.el.attr('text-anchor')){ + case 'middle': + anchorOffset /= 2; + break + case 'start': + anchorOffset = 0; + break; + } + } + + this.startPoints = { + // We take absolute coordinates since we are just using a delta here + point: this.transformPoint(e, anchorOffset), + box: box, + transform: this.el.transform() + }; + + // add drag and end events to window + SVG.on(window, 'mousemove.drag', function(e){ _this.drag(e); }); + SVG.on(window, 'touchmove.drag', function(e){ _this.drag(e); }); + SVG.on(window, 'mouseup.drag', function(e){ _this.end(e); }); + SVG.on(window, 'touchend.drag', function(e){ _this.end(e); }); + + // fire dragstart event + this.el.fire('dragstart', {event: e, p: this.startPoints.point, m: this.m, handler: this}); + }; + + // while dragging + DragHandler.prototype.drag = function(e){ + + var box = this.getBBox() + , p = this.transformPoint(e) + , x = this.startPoints.box.x + p.x - this.startPoints.point.x + , y = this.startPoints.box.y + p.y - this.startPoints.point.y + , c = this.constraint + , gx = p.x - this.startPoints.point.x + , gy = p.y - this.startPoints.point.y; + + this.el.fire('dragmove', { + event: e + , p: p + , m: this.m + , handler: this + }); + + if(this.el.event().defaultPrevented) return p + + // move the element to its new position, if possible by constraint + if (typeof c == 'function') { + + var coord = c.call(this.el, x, y, this.m); + + // bool, just show us if movement is allowed or not + if (typeof coord == 'boolean') { + coord = { + x: coord, + y: coord + }; + } + + // if true, we just move. If !false its a number and we move it there + if (coord.x === true) { + this.el.x(x); + } else if (coord.x !== false) { + this.el.x(coord.x); + } + + if (coord.y === true) { + this.el.y(y); + } else if (coord.y !== false) { + this.el.y(coord.y); + } + + } else if (typeof c == 'object') { + + // keep element within constrained box + if (c.minX != null && x < c.minX) { + x = c.minX; + gx = x - this.startPoints.box.x; + } else if (c.maxX != null && x > c.maxX - box.width) { + x = c.maxX - box.width; + gx = x - this.startPoints.box.x; + } if (c.minY != null && y < c.minY) { + y = c.minY; + gy = y - this.startPoints.box.y; + } else if (c.maxY != null && y > c.maxY - box.height) { + y = c.maxY - box.height; + gy = y - this.startPoints.box.y; + } + + if (c.snapToGrid != null) { + x = x - (x % c.snapToGrid); + y = y - (y % c.snapToGrid); + gx = gx - (gx % c.snapToGrid); + gy = gy - (gy % c.snapToGrid); + } + + if(this.el instanceof SVG.G) + this.el.matrix(this.startPoints.transform).transform({x:gx, y: gy}, true); + else + this.el.move(x, y); + } + + // so we can use it in the end-method, too + return p + }; + + DragHandler.prototype.end = function(e){ + + // final drag + var p = this.drag(e); + + // fire dragend event + this.el.fire('dragend', { event: e, p: p, m: this.m, handler: this }); + + // unbind events + SVG.off(window, 'mousemove.drag'); + SVG.off(window, 'touchmove.drag'); + SVG.off(window, 'mouseup.drag'); + SVG.off(window, 'touchend.drag'); + + }; + + SVG.extend(SVG.Element, { + // Make element draggable + // Constraint might be an object (as described in readme.md) or a function in the form "function (x, y)" that gets called before every move. + // The function can return a boolean or an object of the form {x, y}, to which the element will be moved. "False" skips moving, true moves to raw x, y. + draggable: function(value, constraint) { + + // Check the parameters and reassign if needed + if (typeof value == 'function' || typeof value == 'object') { + constraint = value; + value = true; + } + + var dragHandler = this.remember('_draggable') || new DragHandler(this); + + // When no parameter is given, value is true + value = typeof value === 'undefined' ? true : value; + + if(value) dragHandler.init(constraint || {}, value); + else { + this.off('mousedown.drag'); + this.off('touchstart.drag'); + } + + return this + } + + }); + + }).call(undefined); + + (function() { + + function SelectHandler(el) { + + this.el = el; + el.remember('_selectHandler', this); + this.pointSelection = {isSelected: false}; + this.rectSelection = {isSelected: false}; + + // helper list with position settings of each type of point + this.pointsList = { + lt: [ 0, 0 ], + rt: [ 'width', 0 ], + rb: [ 'width', 'height' ], + lb: [ 0, 'height' ], + t: [ 'width', 0 ], + r: [ 'width', 'height' ], + b: [ 'width', 'height' ], + l: [ 0, 'height' ] + }; + + // helper function to get point coordinates based on settings above and an object (bbox in our case) + this.pointCoord = function (setting, object, isPointCentered) { + var coord = typeof setting !== 'string' ? setting : object[setting]; + // Top, bottom, right and left points are placed in the center of element width/height + return isPointCentered ? coord / 2 : coord + }; + + this.pointCoords = function (point, object) { + var settings = this.pointsList[point]; + + return { + x: this.pointCoord(settings[0], object, (point === 't' || point === 'b')), + y: this.pointCoord(settings[1], object, (point === 'r' || point === 'l')) + } + }; + } + + SelectHandler.prototype.init = function (value, options) { + + var bbox = this.el.bbox(); + this.options = {}; + + // store defaults list of points in order to verify users config + var points = this.el.selectize.defaults.points; + + // Merging the defaults and the options-object together + for (var i in this.el.selectize.defaults) { + this.options[i] = this.el.selectize.defaults[i]; + if (options[i] !== undefined) { + this.options[i] = options[i]; + } + } + + // prepare & validate list of points to be added (or excluded) + var pointsLists = ['points', 'pointsExclude']; + + for (var i in pointsLists) { + var option = this.options[pointsLists[i]]; + + if (typeof option === 'string') { + if (option.length > 0) { + // if set as comma separated string list => convert it into an array + option = option.split(/\s*,\s*/i); + } else { + option = []; + } + } else if (typeof option === 'boolean' && pointsLists[i] === 'points') { + // this is not needed, but let's have it for legacy support + option = option ? points : []; + } + + this.options[pointsLists[i]] = option; + } + + // intersect correct all points options with users config (exclude unwanted points) + // ES5 -> NO arrow functions nor Array.includes() + this.options.points = [ points, this.options.points ].reduce( + function (a, b) { + return a.filter( + function (c) { + return b.indexOf(c) > -1; + } + ) + } + ); + + // exclude pointsExclude, if wanted + this.options.points = [ this.options.points, this.options.pointsExclude ].reduce( + function (a, b) { + return a.filter( + function (c) { + return b.indexOf(c) < 0; + } + ) + } + ); + + this.parent = this.el.parent(); + this.nested = (this.nested || this.parent.group()); + this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y)); + + // When deepSelect is enabled and the element is a line/polyline/polygon, draw only points for moving + if (this.options.deepSelect && ['line', 'polyline', 'polygon'].indexOf(this.el.type) !== -1) { + this.selectPoints(value); + } else { + this.selectRect(value); + } + + this.observe(); + this.cleanup(); + + }; + + SelectHandler.prototype.selectPoints = function (value) { + + this.pointSelection.isSelected = value; + + // When set is already there we dont have to create one + if (this.pointSelection.set) { + return this; + } + + // Create our set of elements + this.pointSelection.set = this.parent.set(); + // draw the points and mark the element as selected + this.drawPoints(); + + return this; + + }; + + // create the point-array which contains the 2 points of a line or simply the points-array of polyline/polygon + SelectHandler.prototype.getPointArray = function () { + var bbox = this.el.bbox(); + + return this.el.array().valueOf().map(function (el) { + return [el[0] - bbox.x, el[1] - bbox.y]; + }); + }; + + // Draws a points + SelectHandler.prototype.drawPoints = function () { + + var _this = this, array = this.getPointArray(); + + // go through the array of points + for (var i = 0, len = array.length; i < len; ++i) { + + var curriedEvent = (function (k) { + return function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire('point', {x: x, y: y, i: k, event: ev}); + }; + })(i); + + // add every point to the set + // add css-classes and a touchstart-event which fires our event for moving points + var point = this.drawPoint(array[i][0], array[i][1]) + .addClass(this.options.classPoints) + .addClass(this.options.classPoints + '_point') + .on('touchstart', curriedEvent) + .on('mousedown', curriedEvent); + this.pointSelection.set.add(point); + } + }; + + // The function to draw single point + SelectHandler.prototype.drawPoint = function (cx, cy) { + var pointType = this.options.pointType; + + switch (pointType) { + case 'circle': + return this.drawCircle(cx, cy); + case 'rect': + return this.drawRect(cx, cy); + default: + if (typeof pointType === 'function') { + return pointType.call(this, cx, cy); + } + + throw new Error('Unknown ' + pointType + ' point type!'); + } + }; + + // The function to draw the circle point + SelectHandler.prototype.drawCircle = function (cx, cy) { + return this.nested.circle(this.options.pointSize) + .center(cx, cy); + }; + + // The function to draw the rect point + SelectHandler.prototype.drawRect = function (cx, cy) { + return this.nested.rect(this.options.pointSize, this.options.pointSize) + .center(cx, cy); + }; + + // every time a point is moved, we have to update the positions of our point + SelectHandler.prototype.updatePointSelection = function () { + var array = this.getPointArray(); + + this.pointSelection.set.each(function (i) { + if (this.cx() === array[i][0] && this.cy() === array[i][1]) { + return; + } + this.center(array[i][0], array[i][1]); + }); + }; + + SelectHandler.prototype.updateRectSelection = function () { + var _this = this, bbox = this.el.bbox(); + + this.rectSelection.set.get(0).attr({ + width: bbox.width, + height: bbox.height + }); + + // set.get(1) is always in the upper left corner. no need to move it + if (this.options.points.length) { + this.options.points.map(function (point, index) { + var coords = _this.pointCoords(point, bbox); + + _this.rectSelection.set.get(index + 1).center(coords.x, coords.y); + }); + } + + if (this.options.rotationPoint) { + var length = this.rectSelection.set.length(); + + this.rectSelection.set.get(length - 1).center(bbox.width / 2, 20); + } + }; + + SelectHandler.prototype.selectRect = function (value) { + + var _this = this, bbox = this.el.bbox(); + + this.rectSelection.isSelected = value; + + // when set is already p + this.rectSelection.set = this.rectSelection.set || this.parent.set(); + + // helperFunction to create a mouse-down function which triggers the event specified in `eventName` + function getMoseDownFunc(eventName) { + return function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire(eventName, {x: x, y: y, event: ev}); + }; + } + + // create the selection-rectangle and add the css-class + if (!this.rectSelection.set.get(0)) { + this.rectSelection.set.add(this.nested.rect(bbox.width, bbox.height).addClass(this.options.classRect)); + } + + // Draw Points at the edges, if enabled + if (this.options.points.length && this.rectSelection.set.length() < 2) { + var ename ="touchstart", mname = "mousedown"; + + this.options.points.map(function (point, index) { + var coords = _this.pointCoords(point, bbox); + + var pointElement = _this.drawPoint(coords.x, coords.y) + .attr('class', _this.options.classPoints + '_' + point) + .on(mname, getMoseDownFunc(point)) + .on(ename, getMoseDownFunc(point)); + _this.rectSelection.set.add(pointElement); + }); + + this.rectSelection.set.each(function () { + this.addClass(_this.options.classPoints); + }); + } + + // draw rotationPint, if enabled + if (this.options.rotationPoint && ((this.options.points && !this.rectSelection.set.get(9)) || (!this.options.points && !this.rectSelection.set.get(1)))) { + + var curriedEvent = function (ev) { + ev = ev || window.event; + ev.preventDefault ? ev.preventDefault() : ev.returnValue = false; + ev.stopPropagation(); + + var x = ev.pageX || ev.touches[0].pageX; + var y = ev.pageY || ev.touches[0].pageY; + _this.el.fire('rot', {x: x, y: y, event: ev}); + }; + + var pointElement = this.drawPoint(bbox.width / 2, 20) + .attr('class', this.options.classPoints + '_rot') + .on("touchstart", curriedEvent) + .on("mousedown", curriedEvent); + this.rectSelection.set.add(pointElement); + } + + }; + + SelectHandler.prototype.handler = function () { + + var bbox = this.el.bbox(); + this.nested.matrix(new SVG.Matrix(this.el).translate(bbox.x, bbox.y)); + + if (this.rectSelection.isSelected) { + this.updateRectSelection(); + } + + if (this.pointSelection.isSelected) { + this.updatePointSelection(); + } + + }; + + SelectHandler.prototype.observe = function () { + var _this = this; + + if (MutationObserver) { + if (this.rectSelection.isSelected || this.pointSelection.isSelected) { + this.observerInst = this.observerInst || new MutationObserver(function () { + _this.handler(); + }); + this.observerInst.observe(this.el.node, {attributes: true}); + } else { + try { + this.observerInst.disconnect(); + delete this.observerInst; + } catch (e) { + } + } + } else { + this.el.off('DOMAttrModified.select'); + + if (this.rectSelection.isSelected || this.pointSelection.isSelected) { + this.el.on('DOMAttrModified.select', function () { + _this.handler(); + }); + } + } + }; + + SelectHandler.prototype.cleanup = function () { + + //var _this = this; + + if (!this.rectSelection.isSelected && this.rectSelection.set) { + // stop watching the element, remove the selection + this.rectSelection.set.each(function () { + this.remove(); + }); + + this.rectSelection.set.clear(); + delete this.rectSelection.set; + } + + if (!this.pointSelection.isSelected && this.pointSelection.set) { + // Remove all points, clear the set, stop watching the element + this.pointSelection.set.each(function () { + this.remove(); + }); + + this.pointSelection.set.clear(); + delete this.pointSelection.set; + } + + if (!this.pointSelection.isSelected && !this.rectSelection.isSelected) { + this.nested.remove(); + delete this.nested; + + } + }; + + + SVG.extend(SVG.Element, { + // Select element with mouse + selectize: function (value, options) { + + // Check the parameters and reassign if needed + if (typeof value === 'object') { + options = value; + value = true; + } + + var selectHandler = this.remember('_selectHandler') || new SelectHandler(this); + + selectHandler.init(value === undefined ? true : value, options || {}); + + return this; + + } + }); + + SVG.Element.prototype.selectize.defaults = { + points: ['lt', 'rt', 'rb', 'lb', 't', 'r', 'b', 'l'], // which points to draw, default all + pointsExclude: [], // easier option if to exclude few than rewrite all + classRect: 'svg_select_boundingRect', // Css-class added to the rect + classPoints: 'svg_select_points', // Css-class added to the points + pointSize: 7, // size of point + rotationPoint: true, // If true, rotation point is drawn. Needed for rotation! + deepSelect: false, // If true, moving of single points is possible (only line, polyline, polyon) + pointType: 'circle' // Point type: circle or rect, default circle + }; + }()); + + (function() { + (function () { + + function ResizeHandler(el) { + + el.remember('_resizeHandler', this); + + this.el = el; + this.parameters = {}; + this.lastUpdateCall = null; + this.p = el.doc().node.createSVGPoint(); + } + + ResizeHandler.prototype.transformPoint = function(x, y, m){ + + this.p.x = x - (this.offset.x - window.pageXOffset); + this.p.y = y - (this.offset.y - window.pageYOffset); + + return this.p.matrixTransform(m || this.m); + + }; + + ResizeHandler.prototype._extractPosition = function(event) { + // Extract a position from a mouse/touch event. + // Returns { x: .., y: .. } + return { + x: event.clientX != null ? event.clientX : event.touches[0].clientX, + y: event.clientY != null ? event.clientY : event.touches[0].clientY + } + }; + + ResizeHandler.prototype.init = function (options) { + + var _this = this; + + this.stop(); + + if (options === 'stop') { + return; + } + + this.options = {}; + + // Merge options and defaults + for (var i in this.el.resize.defaults) { + this.options[i] = this.el.resize.defaults[i]; + if (typeof options[i] !== 'undefined') { + this.options[i] = options[i]; + } + } + + // We listen to all these events which are specifying different edges + this.el.on('lt.resize', function(e){ _this.resize(e || window.event); }); // Left-Top + this.el.on('rt.resize', function(e){ _this.resize(e || window.event); }); // Right-Top + this.el.on('rb.resize', function(e){ _this.resize(e || window.event); }); // Right-Bottom + this.el.on('lb.resize', function(e){ _this.resize(e || window.event); }); // Left-Bottom + + this.el.on('t.resize', function(e){ _this.resize(e || window.event); }); // Top + this.el.on('r.resize', function(e){ _this.resize(e || window.event); }); // Right + this.el.on('b.resize', function(e){ _this.resize(e || window.event); }); // Bottom + this.el.on('l.resize', function(e){ _this.resize(e || window.event); }); // Left + + this.el.on('rot.resize', function(e){ _this.resize(e || window.event); }); // Rotation + + this.el.on('point.resize', function(e){ _this.resize(e || window.event); }); // Point-Moving + + // This call ensures, that the plugin reacts to a change of snapToGrid immediately + this.update(); + + }; + + ResizeHandler.prototype.stop = function(){ + this.el.off('lt.resize'); + this.el.off('rt.resize'); + this.el.off('rb.resize'); + this.el.off('lb.resize'); + + this.el.off('t.resize'); + this.el.off('r.resize'); + this.el.off('b.resize'); + this.el.off('l.resize'); + + this.el.off('rot.resize'); + + this.el.off('point.resize'); + + return this; + }; + + ResizeHandler.prototype.resize = function (event) { + + var _this = this; + + this.m = this.el.node.getScreenCTM().inverse(); + this.offset = { x: window.pageXOffset, y: window.pageYOffset }; + + var txPt = this._extractPosition(event.detail.event); + this.parameters = { + type: this.el.type, // the type of element + p: this.transformPoint(txPt.x, txPt.y), + x: event.detail.x, // x-position of the mouse when resizing started + y: event.detail.y, // y-position of the mouse when resizing started + box: this.el.bbox(), // The bounding-box of the element + rotation: this.el.transform().rotation // The current rotation of the element + }; + + // Add font-size parameter if the element type is text + if (this.el.type === "text") { + this.parameters.fontSize = this.el.attr()["font-size"]; + } + + // the i-param in the event holds the index of the point which is moved, when using `deepSelect` + if (event.detail.i !== undefined) { + + // get the point array + var array = this.el.array().valueOf(); + + // Save the index and the point which is moved + this.parameters.i = event.detail.i; + this.parameters.pointCoords = [array[event.detail.i][0], array[event.detail.i][1]]; + } + + // Lets check which edge of the bounding-box was clicked and resize the this.el according to this + switch (event.type) { + + // Left-Top-Edge + case 'lt': + // We build a calculating function for every case which gives us the new position of the this.el + this.calc = function (diffX, diffY) { + // The procedure is always the same + // First we snap the edge to the given grid (snapping to 1px grid is normal resizing) + var snap = this.snapToGrid(diffX, diffY); + + // Now we check if the new height and width still valid (> 0) + if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height - snap[1] > 0) { + // ...if valid, we resize the this.el (which can include moving because the coord-system starts at the left-top and this edge is moving sometimes when resized) + + /* + * but first check if the element is text box, so we can change the font size instead of + * the width and height + */ + + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize - snap[0]); + return; + } + + snap = this.checkAspectRatio(snap); + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y + snap[1]).size(this.parameters.box.width - snap[0], this.parameters.box.height - snap[1]); + } + }; + break; + + // Right-Top + case 'rt': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1 << 1); + if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height - snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize + snap[0]); + return; + } + + snap = this.checkAspectRatio(snap, true); + + this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).size(this.parameters.box.width + snap[0], this.parameters.box.height - snap[1]); + } + }; + break; + + // Right-Bottom + case 'rb': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.width + snap[0] > 0 && this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x - snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize + snap[0]); + return; + } + + snap = this.checkAspectRatio(snap); + + this.el.move(this.parameters.box.x, this.parameters.box.y).size(this.parameters.box.width + snap[0], this.parameters.box.height + snap[1]); + } + }; + break; + + // Left-Bottom + case 'lb': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1); + if (this.parameters.box.width - snap[0] > 0 && this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y); + this.el.attr("font-size", this.parameters.fontSize - snap[0]); + return; + } + + snap = this.checkAspectRatio(snap, true); + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).size(this.parameters.box.width - snap[0], this.parameters.box.height + snap[1]); + } + }; + break; + + // Top + case 't': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1 << 1); + if (this.parameters.box.height - snap[1] > 0) { + // Disable the font-resizing if it is not from the corner of bounding-box + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y + snap[1]).height(this.parameters.box.height - snap[1]); + } + }; + break; + + // Right + case 'r': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.width + snap[0] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y).width(this.parameters.box.width + snap[0]); + } + }; + break; + + // Bottom + case 'b': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 0); + if (this.parameters.box.height + snap[1] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x, this.parameters.box.y).height(this.parameters.box.height + snap[1]); + } + }; + break; + + // Left + case 'l': + // s.a. + this.calc = function (diffX, diffY) { + var snap = this.snapToGrid(diffX, diffY, 1); + if (this.parameters.box.width - snap[0] > 0) { + if (this.parameters.type === "text") { + return; + } + + this.el.move(this.parameters.box.x + snap[0], this.parameters.box.y).width(this.parameters.box.width - snap[0]); + } + }; + break; + + // Rotation + case 'rot': + // s.a. + this.calc = function (diffX, diffY) { + + // yes this is kinda stupid but we need the mouse coords back... + var current = {x: diffX + this.parameters.p.x, y: diffY + this.parameters.p.y}; + + // start minus middle + var sAngle = Math.atan2((this.parameters.p.y - this.parameters.box.y - this.parameters.box.height / 2), (this.parameters.p.x - this.parameters.box.x - this.parameters.box.width / 2)); + + // end minus middle + var pAngle = Math.atan2((current.y - this.parameters.box.y - this.parameters.box.height / 2), (current.x - this.parameters.box.x - this.parameters.box.width / 2)); + + var angle = this.parameters.rotation + (pAngle - sAngle) * 180 / Math.PI + this.options.snapToAngle / 2; + + // We have to move the element to the center of the box first and change the rotation afterwards + // because rotation always works around a rotation-center, which is changed when moving the element + // We also set the new rotation center to the center of the box. + this.el.center(this.parameters.box.cx, this.parameters.box.cy).rotate(angle - (angle % this.options.snapToAngle), this.parameters.box.cx, this.parameters.box.cy); + }; + break; + + // Moving one single Point (needed when an element is deepSelected which means you can move every single point of the object) + case 'point': + this.calc = function (diffX, diffY) { + + // Snapping the point to the grid + var snap = this.snapToGrid(diffX, diffY, this.parameters.pointCoords[0], this.parameters.pointCoords[1]); + + // Get the point array + var array = this.el.array().valueOf(); + + // Changing the moved point in the array + array[this.parameters.i][0] = this.parameters.pointCoords[0] + snap[0]; + array[this.parameters.i][1] = this.parameters.pointCoords[1] + snap[1]; + + // And plot the new this.el + this.el.plot(array); + }; + } + + this.el.fire('resizestart', {dx: this.parameters.x, dy: this.parameters.y, event: event}); + // When resizing started, we have to register events for... + // Touches. + SVG.on(window, 'touchmove.resize', function(e) { + _this.update(e || window.event); + }); + SVG.on(window, 'touchend.resize', function() { + _this.done(); + }); + // Mouse. + SVG.on(window, 'mousemove.resize', function (e) { + _this.update(e || window.event); + }); + SVG.on(window, 'mouseup.resize', function () { + _this.done(); + }); + + }; + + // The update-function redraws the element every time the mouse is moving + ResizeHandler.prototype.update = function (event) { + + if (!event) { + if (this.lastUpdateCall) { + this.calc(this.lastUpdateCall[0], this.lastUpdateCall[1]); + } + return; + } + + // Calculate the difference between the mouseposition at start and now + var txPt = this._extractPosition(event); + var p = this.transformPoint(txPt.x, txPt.y); + + var diffX = p.x - this.parameters.p.x, + diffY = p.y - this.parameters.p.y; + + this.lastUpdateCall = [diffX, diffY]; + + // Calculate the new position and height / width of the element + this.calc(diffX, diffY); + + // Emit an event to say we have changed. + this.el.fire('resizing', {dx: diffX, dy: diffY, event: event}); + }; + + // Is called on mouseup. + // Removes the update-function from the mousemove event + ResizeHandler.prototype.done = function () { + this.lastUpdateCall = null; + SVG.off(window, 'mousemove.resize'); + SVG.off(window, 'mouseup.resize'); + SVG.off(window, 'touchmove.resize'); + SVG.off(window, 'touchend.resize'); + this.el.fire('resizedone'); + }; + + // The flag is used to determine whether the resizing is used with a left-Point (first bit) and top-point (second bit) + // In this cases the temp-values are calculated differently + ResizeHandler.prototype.snapToGrid = function (diffX, diffY, flag, pointCoordsY) { + + var temp; + + // If `pointCoordsY` is given, a single Point has to be snapped (deepSelect). That's why we need a different temp-value + if (typeof pointCoordsY !== 'undefined') { + // Note that flag = pointCoordsX in this case + temp = [(flag + diffX) % this.options.snapToGrid, (pointCoordsY + diffY) % this.options.snapToGrid]; + } else { + // We check if the flag is set and if not we set a default-value (both bits set - which means upper-left-edge) + flag = flag == null ? 1 | 1 << 1 : flag; + temp = [(this.parameters.box.x + diffX + (flag & 1 ? 0 : this.parameters.box.width)) % this.options.snapToGrid, (this.parameters.box.y + diffY + (flag & (1 << 1) ? 0 : this.parameters.box.height)) % this.options.snapToGrid]; + } + + if(diffX < 0) { + temp[0] -= this.options.snapToGrid; + } + if(diffY < 0) { + temp[1] -= this.options.snapToGrid; + } + + diffX -= (Math.abs(temp[0]) < this.options.snapToGrid / 2 ? + temp[0] : + temp[0] - (diffX < 0 ? -this.options.snapToGrid : this.options.snapToGrid)); + diffY -= (Math.abs(temp[1]) < this.options.snapToGrid / 2 ? + temp[1] : + temp[1] - (diffY < 0 ? -this.options.snapToGrid : this.options.snapToGrid)); + + return this.constraintToBox(diffX, diffY, flag, pointCoordsY); + + }; + + // keep element within constrained box + ResizeHandler.prototype.constraintToBox = function (diffX, diffY, flag, pointCoordsY) { + //return [diffX, diffY] + var c = this.options.constraint || {}; + var orgX, orgY; + + if (typeof pointCoordsY !== 'undefined') { + orgX = flag; + orgY = pointCoordsY; + } else { + orgX = this.parameters.box.x + (flag & 1 ? 0 : this.parameters.box.width); + orgY = this.parameters.box.y + (flag & (1<<1) ? 0 : this.parameters.box.height); + } + + if (typeof c.minX !== 'undefined' && orgX + diffX < c.minX) { + diffX = c.minX - orgX; + } + + if (typeof c.maxX !== 'undefined' && orgX + diffX > c.maxX) { + diffX = c.maxX - orgX; + } + + if (typeof c.minY !== 'undefined' && orgY + diffY < c.minY) { + diffY = c.minY - orgY; + } + + if (typeof c.maxY !== 'undefined' && orgY + diffY > c.maxY) { + diffY = c.maxY - orgY; + } + + return [diffX, diffY]; + }; + + ResizeHandler.prototype.checkAspectRatio = function (snap, isReverse) { + if (!this.options.saveAspectRatio) { + return snap; + } + + var updatedSnap = snap.slice(); + var aspectRatio = this.parameters.box.width / this.parameters.box.height; + var newW = this.parameters.box.width + snap[0]; + var newH = this.parameters.box.height - snap[1]; + var newAspectRatio = newW / newH; + + if (newAspectRatio < aspectRatio) { + // Height is too big. Adapt it + updatedSnap[1] = newW / aspectRatio - this.parameters.box.height; + isReverse && (updatedSnap[1] = -updatedSnap[1]); + } else if (newAspectRatio > aspectRatio) { + // Width is too big. Adapt it + updatedSnap[0] = this.parameters.box.width - newH * aspectRatio; + isReverse && (updatedSnap[0] = -updatedSnap[0]); + } + + return updatedSnap; + }; + + SVG.extend(SVG.Element, { + // Resize element with mouse + resize: function (options) { + + (this.remember('_resizeHandler') || new ResizeHandler(this)).init(options || {}); + + return this; + + } + + }); + + SVG.Element.prototype.resize.defaults = { + snapToAngle: 0.1, // Specifies the speed the rotation is happening when moving the mouse + snapToGrid: 1, // Snaps to a grid of `snapToGrid` Pixels + constraint: {}, // keep element within constrained box + saveAspectRatio: false // Save aspect ratio when resizing using lt, rt, rb or lb points + }; + + }).call(this); + }()); + + if (typeof window.Apex === 'undefined') { + window.Apex = {}; + } + + var InitCtxVariables = /*#__PURE__*/function () { + function InitCtxVariables(ctx) { + _classCallCheck(this, InitCtxVariables); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(InitCtxVariables, [{ + key: "initModules", + value: function initModules() { + this.ctx.publicMethods = ['updateOptions', 'updateSeries', 'appendData', 'appendSeries', 'toggleSeries', 'showSeries', 'hideSeries', 'setLocale', 'resetSeries', 'zoomX', 'toggleDataPointSelection', 'dataURI', 'exportToCSV', 'addXaxisAnnotation', 'addYaxisAnnotation', 'addPointAnnotation', 'clearAnnotations', 'removeAnnotation', 'paper', 'destroy']; + this.ctx.eventList = ['click', 'mousedown', 'mousemove', 'mouseleave', 'touchstart', 'touchmove', 'touchleave', 'mouseup', 'touchend']; + this.ctx.animations = new Animations(this.ctx); + this.ctx.axes = new Axes(this.ctx); + this.ctx.core = new Core(this.ctx.el, this.ctx); + this.ctx.config = new Config({}); + this.ctx.data = new Data(this.ctx); + this.ctx.grid = new Grid(this.ctx); + this.ctx.graphics = new Graphics(this.ctx); + this.ctx.coreUtils = new CoreUtils(this.ctx); + this.ctx.crosshairs = new Crosshairs(this.ctx); + this.ctx.events = new Events(this.ctx); + this.ctx.exports = new Exports(this.ctx); + this.ctx.localization = new Localization(this.ctx); + this.ctx.options = new Options(); + this.ctx.responsive = new Responsive(this.ctx); + this.ctx.series = new Series(this.ctx); + this.ctx.theme = new Theme(this.ctx); + this.ctx.formatters = new Formatters(this.ctx); + this.ctx.titleSubtitle = new TitleSubtitle(this.ctx); + this.ctx.legend = new Legend(this.ctx); + this.ctx.toolbar = new Toolbar(this.ctx); + this.ctx.tooltip = new Tooltip(this.ctx); + this.ctx.dimensions = new Dimensions(this.ctx); + this.ctx.updateHelpers = new UpdateHelpers(this.ctx); + this.ctx.zoomPanSelection = new ZoomPanSelection(this.ctx); + this.ctx.w.globals.tooltip = new Tooltip(this.ctx); + } + }]); + + return InitCtxVariables; + }(); + + var Destroy = /*#__PURE__*/function () { + function Destroy(ctx) { + _classCallCheck(this, Destroy); + + this.ctx = ctx; + this.w = ctx.w; + } + + _createClass(Destroy, [{ + key: "clear", + value: function clear(_ref) { + var isUpdating = _ref.isUpdating; + + if (this.ctx.zoomPanSelection) { + this.ctx.zoomPanSelection.destroy(); + } + + if (this.ctx.toolbar) { + this.ctx.toolbar.destroy(); + } + + this.ctx.animations = null; + this.ctx.axes = null; + this.ctx.annotations = null; + this.ctx.core = null; + this.ctx.data = null; + this.ctx.grid = null; + this.ctx.series = null; + this.ctx.responsive = null; + this.ctx.theme = null; + this.ctx.formatters = null; + this.ctx.titleSubtitle = null; + this.ctx.legend = null; + this.ctx.dimensions = null; + this.ctx.options = null; + this.ctx.crosshairs = null; + this.ctx.zoomPanSelection = null; + this.ctx.updateHelpers = null; + this.ctx.toolbar = null; + this.ctx.localization = null; + this.ctx.w.globals.tooltip = null; + this.clearDomElements({ + isUpdating: isUpdating + }); + } + }, { + key: "killSVG", + value: function killSVG(draw) { + draw.each(function (i, children) { + this.removeClass('*'); + this.off(); + this.stop(); + }, true); + draw.ungroup(); + draw.clear(); + } + }, { + key: "clearDomElements", + value: function clearDomElements(_ref2) { + var _this = this; + + var isUpdating = _ref2.isUpdating; + var elSVG = this.w.globals.dom.Paper.node; // fixes apexcharts.js#1654 & vue-apexcharts#256 + + if (elSVG.parentNode && elSVG.parentNode.parentNode && !isUpdating) { + elSVG.parentNode.parentNode.style.minHeight = 'unset'; + } // detach root event + + + var baseEl = this.w.globals.dom.baseEl; + + if (baseEl) { + // see https://github.com/apexcharts/vue-apexcharts/issues/275 + this.ctx.eventList.forEach(function (event) { + baseEl.removeEventListener(event, _this.ctx.events.documentEvent); + }); + } + + var domEls = this.w.globals.dom; + + if (this.ctx.el !== null) { + // remove all child elements - resetting the whole chart + while (this.ctx.el.firstChild) { + this.ctx.el.removeChild(this.ctx.el.firstChild); + } + } + + this.killSVG(domEls.Paper); + domEls.Paper.remove(); + domEls.elWrap = null; + domEls.elGraphical = null; + domEls.elAnnotations = null; + domEls.elLegendWrap = null; + domEls.baseEl = null; + domEls.elGridRect = null; + domEls.elGridRectMask = null; + domEls.elGridRectMarkerMask = null; + domEls.elForecastMask = null; + domEls.elNonForecastMask = null; + domEls.elDefs = null; + } + }]); + + return Destroy; + }(); + + // Helpers to react to element resizes, regardless of what caused them + // TODO Currently this creates a new ResizeObserver every time we want to observe an element for resizes + // Ideally, we should be able to use a single observer for all elements + var ros = new WeakMap(); // Map callbacks to ResizeObserver instances for easy removal + + function addResizeListener(el, fn) { + var called = false; + + if (el.nodeType !== Node.DOCUMENT_FRAGMENT_NODE) { + var elRect = el.getBoundingClientRect(); + + if (el.style.display === 'none' || elRect.width === 0) { + // if elRect.width=0, the chart is not rendered at all + // (it has either display none or hidden in a different tab) + // fixes https://github.com/apexcharts/apexcharts.js/issues/2825 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2991 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2992 + called = true; + } + } + + var ro = new ResizeObserver(function (r) { + // ROs fire immediately after being created, + // per spec: https://drafts.csswg.org/resize-observer/#ref-for-element%E2%91%A3 + // we don't want that so we just discard the first run + if (called) { + fn.call(el, r); + } + + called = true; + }); + + if (el.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + // Document fragment, observe children instead (needed for Shadow DOM, see #1332) + Array.from(el.children).forEach(function (c) { + return ro.observe(c); + }); + } else { + ro.observe(el); + } + + ros.set(fn, ro); + } + function removeResizeListener(el, fn) { + var ro = ros.get(fn); + + if (ro) { + ro.disconnect(); + ros.delete(fn); + } + } + + var css_248z = "@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: \" \";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: \" \";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n"; + + /** + * + * @module ApexCharts + **/ + + var ApexCharts$1 = /*#__PURE__*/function () { + function ApexCharts(el, opts) { + _classCallCheck(this, ApexCharts); + + this.opts = opts; + this.ctx = this; // Pass the user supplied options to the Base Class where these options will be extended with defaults. The returned object from Base Class will become the config object in the entire codebase. + + this.w = new Base(opts).init(); + this.el = el; + this.w.globals.cuid = Utils$1.randomId(); + this.w.globals.chartID = this.w.config.chart.id ? Utils$1.escapeString(this.w.config.chart.id) : this.w.globals.cuid; + var initCtx = new InitCtxVariables(this); + initCtx.initModules(); + this.create = Utils$1.bind(this.create, this); + this.windowResizeHandler = this._windowResizeHandler.bind(this); + this.parentResizeHandler = this._parentResizeCallback.bind(this); + } + /** + * The primary method user will call to render the chart. + */ + + + _createClass(ApexCharts, [{ + key: "render", + value: function render() { + var _this = this; + + // main method + return new Promise(function (resolve, reject) { + // only draw chart, if element found + if (_this.el !== null) { + if (typeof Apex._chartInstances === 'undefined') { + Apex._chartInstances = []; + } + + if (_this.w.config.chart.id) { + Apex._chartInstances.push({ + id: _this.w.globals.chartID, + group: _this.w.config.chart.group, + chart: _this + }); + } // set the locale here + + + _this.setLocale(_this.w.config.chart.defaultLocale); + + var beforeMount = _this.w.config.chart.events.beforeMount; + + if (typeof beforeMount === 'function') { + beforeMount(_this, _this.w); + } + + _this.events.fireEvent('beforeMount', [_this, _this.w]); + + window.addEventListener('resize', _this.windowResizeHandler); + addResizeListener(_this.el.parentNode, _this.parentResizeHandler); // Add CSS if not already added + + if (!_this.css) { + var rootNode = _this.el.getRootNode && _this.el.getRootNode(); + + var inShadowRoot = Utils$1.is('ShadowRoot', rootNode); + var doc = _this.el.ownerDocument; + var globalCSS = doc.getElementById('apexcharts-css'); + + if (inShadowRoot || !globalCSS) { + _this.css = document.createElement('style'); + _this.css.id = 'apexcharts-css'; + _this.css.textContent = css_248z; + + if (inShadowRoot) { + // We are in Shadow DOM, add to shadow root + rootNode.prepend(_this.css); + } else { + // Add to of element's document + doc.head.appendChild(_this.css); + } + } + } + + var graphData = _this.create(_this.w.config.series, {}); + + if (!graphData) return resolve(_this); + + _this.mount(graphData).then(function () { + if (typeof _this.w.config.chart.events.mounted === 'function') { + _this.w.config.chart.events.mounted(_this, _this.w); + } + + _this.events.fireEvent('mounted', [_this, _this.w]); + + resolve(graphData); + }).catch(function (e) { + reject(e); // handle error in case no data or element not found + }); + } else { + reject(new Error('Element not found')); + } + }); + } + }, { + key: "create", + value: function create(ser, opts) { + var w = this.w; + var initCtx = new InitCtxVariables(this); + initCtx.initModules(); + var gl = this.w.globals; + gl.noData = false; + gl.animationEnded = false; + this.responsive.checkResponsiveConfig(opts); + + if (w.config.xaxis.convertedCatToNumeric) { + var defaults = new Defaults(w.config); + defaults.convertCatToNumericXaxis(w.config, this.ctx); + } + + if (this.el === null) { + gl.animationEnded = true; + return null; + } + + this.core.setupElements(); + + if (w.config.chart.type === 'treemap') { + w.config.grid.show = false; + w.config.yaxis[0].show = false; + } + + if (gl.svgWidth === 0) { + // if the element is hidden, skip drawing + gl.animationEnded = true; + return null; + } + + var combo = CoreUtils.checkComboSeries(ser); + gl.comboCharts = combo.comboCharts; + gl.comboBarCount = combo.comboBarCount; + var allSeriesAreEmpty = ser.every(function (s) { + return s.data && s.data.length === 0; + }); + + if (ser.length === 0 || allSeriesAreEmpty) { + this.series.handleNoData(); + } + + this.events.setupEventHandlers(); // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time + + this.data.parseData(ser); // this is a good time to set theme colors first + + this.theme.init(); // as markers accepts array, we need to setup global markers for easier access + + var markers = new Markers(this); + markers.setGlobalMarkerSize(); // labelFormatters should be called before dimensions as in dimensions we need text labels width + + this.formatters.setLabelFormatters(); + this.titleSubtitle.draw(); // legend is calculated here before coreCalculations because it affects the plottable area + // if there is some data to show or user collapsed all series, then proceed drawing legend + + if (!gl.noData || gl.collapsedSeries.length === gl.series.length || w.config.legend.showForSingleSeries) { + this.legend.init(); + } // check whether in multiple series, all series share the same X + + + this.series.hasAllSeriesEqualX(); // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals + + if (gl.axisCharts) { + this.core.coreCalculations(); + + if (w.config.xaxis.type !== 'category') { + // as we have minX and maxX values, determine the default DateTimeFormat for time series + this.formatters.setLabelFormatters(); + } + + this.ctx.toolbar.minX = w.globals.minX; + this.ctx.toolbar.maxX = w.globals.maxX; + } // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function + // Also we need to do this before calculating Dimensions plotCoords() method of Dimensions + + + this.formatters.heatmapLabelFormatters(); // get the largest marker size which will be needed in dimensions calc + + var coreUtils = new CoreUtils(this); + coreUtils.getLargestMarkerSize(); // We got plottable area here, next task would be to calculate axis areas + + this.dimensions.plotCoords(); + var xyRatios = this.core.xySettings(); + this.grid.createGridMask(); + var elGraph = this.core.plotChartType(ser, xyRatios); + var dataLabels = new DataLabels(this); + dataLabels.bringForward(); + + if (w.config.dataLabels.background.enabled) { + dataLabels.dataLabelsBackground(); + } // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends + + + this.core.shiftGraphPosition(); + var dim = { + plot: { + left: w.globals.translateX, + top: w.globals.translateY, + width: w.globals.gridWidth, + height: w.globals.gridHeight + } + }; + return { + elGraph: elGraph, + xyRatios: xyRatios, + elInner: w.globals.dom.elGraphical, + dimensions: dim + }; + } + }, { + key: "mount", + value: function mount() { + var _this2 = this; + + var graphData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var me = this; + var w = me.w; + return new Promise(function (resolve, reject) { + // no data to display + if (me.el === null) { + return reject(new Error('Not enough data to display or target element not found')); + } else if (graphData === null || w.globals.allSeriesCollapsed) { + me.series.handleNoData(); + } + + me.grid = new Grid(me); + var elgrid = me.grid.drawGrid(); + + if (w.config.chart.type !== 'treemap') { + me.axes.drawAxis(w.config.chart.type, elgrid); + } + + me.annotations = new Annotations(me); + me.annotations.drawImageAnnos(); + me.annotations.drawTextAnnos(); + + if (w.config.grid.position === 'back' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el); + } + + var xAxis = new XAxis(_this2.ctx, elgrid); + var yaxis = new YAxis(_this2.ctx, elgrid); + + if (elgrid !== null) { + xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth); + yaxis.setYAxisTextAlignments(); + w.config.yaxis.map(function (yaxe, index) { + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + yaxis.yAxisTitleRotate(index, yaxe.opposite); + } + }); + } + + if (w.config.annotations.position === 'back') { + w.globals.dom.Paper.add(w.globals.dom.elAnnotations); + me.annotations.drawAxesAnnotations(); + } + + if (Array.isArray(graphData.elGraph)) { + for (var g = 0; g < graphData.elGraph.length; g++) { + w.globals.dom.elGraphical.add(graphData.elGraph[g]); + } + } else { + w.globals.dom.elGraphical.add(graphData.elGraph); + } + + if (w.config.grid.position === 'front' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el); + } + + if (elgrid && elgrid.elGridBorders && elgrid.elGridBorders.node) { + w.globals.dom.elGraphical.add(elgrid.elGridBorders); + } + + if (w.config.xaxis.crosshairs.position === 'front') { + me.crosshairs.drawXCrosshairs(); + } + + if (w.config.yaxis[0].crosshairs.position === 'front') { + me.crosshairs.drawYCrosshairs(); + } + + if (w.config.annotations.position === 'front') { + w.globals.dom.Paper.add(w.globals.dom.elAnnotations); + me.annotations.drawAxesAnnotations(); + } + + if (!w.globals.noData) { + // draw tooltips at the end + if (w.config.tooltip.enabled && !w.globals.noData) { + me.w.globals.tooltip.drawTooltip(graphData.xyRatios); + } + + if (w.globals.axisCharts && (w.globals.isXNumeric || w.config.xaxis.convertedCatToNumeric || w.globals.isRangeBar)) { + if (w.config.chart.zoom.enabled || w.config.chart.selection && w.config.chart.selection.enabled || w.config.chart.pan && w.config.chart.pan.enabled) { + me.zoomPanSelection.init({ + xyRatios: graphData.xyRatios + }); + } + } else { + var tools = w.config.chart.toolbar.tools; + var toolsArr = ['zoom', 'zoomin', 'zoomout', 'selection', 'pan', 'reset']; + toolsArr.forEach(function (t) { + tools[t] = false; + }); + } + + if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) { + me.toolbar.createToolbar(); + } + } + + if (w.globals.memory.methodsToExec.length > 0) { + w.globals.memory.methodsToExec.forEach(function (fn) { + fn.method(fn.params, false, fn.context); + }); + } + + if (!w.globals.axisCharts && !w.globals.noData) { + me.core.resizeNonAxisCharts(); + } + + resolve(me); + }); + } + /** + * Destroy the chart instance by removing all elements which also clean up event listeners on those elements. + */ + + }, { + key: "destroy", + value: function destroy() { + window.removeEventListener('resize', this.windowResizeHandler); + removeResizeListener(this.el.parentNode, this.parentResizeHandler); // remove the chart's instance from the global Apex._chartInstances + + var chartID = this.w.config.chart.id; + + if (chartID) { + Apex._chartInstances.forEach(function (c, i) { + if (c.id === Utils$1.escapeString(chartID)) { + Apex._chartInstances.splice(i, 1); + } + }); + } + + new Destroy(this.ctx).clear({ + isUpdating: false + }); + } + /** + * Allows users to update Options after the chart has rendered. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + */ + + }, { + key: "updateOptions", + value: function updateOptions(options) { + var _this3 = this; + + var redraw = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var animate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var updateSyncedCharts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var overwriteInitialConfig = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var w = this.w; // when called externally, clear some global variables + // fixes apexcharts.js#1488 + + w.globals.selection = undefined; + + if (options.series) { + this.series.resetSeries(false, true, false); + + if (options.series.length && options.series[0].data) { + options.series = options.series.map(function (s, i) { + return _this3.updateHelpers._extendSeries(s, i); + }); + } // user updated the series via updateOptions() function. + // Hence, we need to reset axis min/max to avoid zooming issues + + + this.updateHelpers.revertDefaultAxisMinMax(); + } // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max + + + if (options.xaxis) { + options = this.updateHelpers.forceXAxisUpdate(options); + } + + if (options.yaxis) { + options = this.updateHelpers.forceYAxisUpdate(options); + } + + if (w.globals.collapsedSeriesIndices.length > 0) { + this.series.clearPreviousPaths(); + } + /* update theme mode#459 */ + + + if (options.theme) { + options = this.theme.updateThemeOptions(options); + } + + return this.updateHelpers._updateOptions(options, redraw, animate, updateSyncedCharts, overwriteInitialConfig); + } + /** + * Allows users to update Series after the chart has rendered. + * + * @param {array} series - New series which will override the existing + */ + + }, { + key: "updateSeries", + value: function updateSeries() { + var newSeries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + this.series.resetSeries(false); + this.updateHelpers.revertDefaultAxisMinMax(); + return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries); + } + /** + * Allows users to append a new series after the chart has rendered. + * + * @param {array} newSerie - New serie which will be appended to the existing series + */ + + }, { + key: "appendSeries", + value: function appendSeries(newSerie) { + var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var overwriteInitialSeries = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + var newSeries = this.w.config.series.slice(); + newSeries.push(newSerie); + this.series.resetSeries(false); + this.updateHelpers.revertDefaultAxisMinMax(); + return this.updateHelpers._updateSeries(newSeries, animate, overwriteInitialSeries); + } + /** + * Allows users to append Data to series. + * + * @param {array} newData - New data in the same format as series + */ + + }, { + key: "appendData", + value: function appendData(newData) { + var overwriteInitialSeries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var me = this; + me.w.globals.dataChanged = true; + me.series.getPreviousPaths(); + var newSeries = me.w.config.series.slice(); + + for (var i = 0; i < newSeries.length; i++) { + if (newData[i] !== null && typeof newData[i] !== 'undefined') { + for (var j = 0; j < newData[i].data.length; j++) { + newSeries[i].data.push(newData[i].data[j]); + } + } + } + + me.w.config.series = newSeries; + + if (overwriteInitialSeries) { + me.w.globals.initialSeries = Utils$1.clone(me.w.config.series); + } + + return this.update(); + } + }, { + key: "update", + value: function update(options) { + var _this4 = this; + + return new Promise(function (resolve, reject) { + new Destroy(_this4.ctx).clear({ + isUpdating: true + }); + + var graphData = _this4.create(_this4.w.config.series, options); + + if (!graphData) return resolve(_this4); + + _this4.mount(graphData).then(function () { + if (typeof _this4.w.config.chart.events.updated === 'function') { + _this4.w.config.chart.events.updated(_this4, _this4.w); + } + + _this4.events.fireEvent('updated', [_this4, _this4.w]); + + _this4.w.globals.isDirty = true; + resolve(_this4); + }).catch(function (e) { + reject(e); + }); + }); + } + /** + * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan. + */ + + }, { + key: "getSyncedCharts", + value: function getSyncedCharts() { + var chartGroups = this.getGroupedCharts(); + var allCharts = [this]; + + if (chartGroups.length) { + allCharts = []; + chartGroups.forEach(function (ch) { + allCharts.push(ch); + }); + } + + return allCharts; + } + /** + * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering) + */ + + }, { + key: "getGroupedCharts", + value: function getGroupedCharts() { + var _this5 = this; + + return Apex._chartInstances.filter(function (ch) { + if (ch.group) { + return true; + } + }).map(function (ch) { + return _this5.w.config.chart.group === ch.group ? ch.chart : _this5; + }); + } + }, { + key: "toggleSeries", + value: function toggleSeries(seriesName) { + return this.series.toggleSeries(seriesName); + } + }, { + key: "highlightSeriesOnLegendHover", + value: function highlightSeriesOnLegendHover(e, targetElement) { + return this.series.toggleSeriesOnHover(e, targetElement); + } + }, { + key: "showSeries", + value: function showSeries(seriesName) { + this.series.showSeries(seriesName); + } + }, { + key: "hideSeries", + value: function hideSeries(seriesName) { + this.series.hideSeries(seriesName); + } + }, { + key: "resetSeries", + value: function resetSeries() { + var shouldUpdateChart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var shouldResetZoom = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + this.series.resetSeries(shouldUpdateChart, shouldResetZoom); + } // Public method to add event listener on chart context + + }, { + key: "addEventListener", + value: function addEventListener(name, handler) { + this.events.addEventListener(name, handler); + } // Public method to remove event listener on chart context + + }, { + key: "removeEventListener", + value: function removeEventListener(name, handler) { + this.events.removeEventListener(name, handler); + } + }, { + key: "addXaxisAnnotation", + value: function addXaxisAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "addYaxisAnnotation", + value: function addYaxisAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "addPointAnnotation", + value: function addPointAnnotation(opts) { + var pushToMemory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.addPointAnnotationExternal(opts, pushToMemory, me); + } + }, { + key: "clearAnnotations", + value: function clearAnnotations() { + var context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.clearAnnotations(me); + } + }, { + key: "removeAnnotation", + value: function removeAnnotation(id) { + var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined; + var me = this; + + if (context) { + me = context; + } + + me.annotations.removeAnnotation(me, id); + } + }, { + key: "getChartArea", + value: function getChartArea() { + var el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner'); + return el; + } + }, { + key: "getSeriesTotalXRange", + value: function getSeriesTotalXRange(minX, maxX) { + return this.coreUtils.getSeriesTotalsXRange(minX, maxX); + } + }, { + key: "getHighestValueInSeries", + value: function getHighestValueInSeries() { + var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var range = new Range(this.ctx); + return range.getMinYMaxY(seriesIndex).highestY; + } + }, { + key: "getLowestValueInSeries", + value: function getLowestValueInSeries() { + var seriesIndex = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; + var range = new Range(this.ctx); + return range.getMinYMaxY(seriesIndex).lowestY; + } + }, { + key: "getSeriesTotal", + value: function getSeriesTotal() { + return this.w.globals.seriesTotals; + } + }, { + key: "toggleDataPointSelection", + value: function toggleDataPointSelection(seriesIndex, dataPointIndex) { + return this.updateHelpers.toggleDataPointSelection(seriesIndex, dataPointIndex); + } + }, { + key: "zoomX", + value: function zoomX(min, max) { + this.ctx.toolbar.zoomUpdateOptions(min, max); + } + }, { + key: "setLocale", + value: function setLocale(localeName) { + this.localization.setCurrentLocaleValues(localeName); + } + }, { + key: "dataURI", + value: function dataURI(options) { + var exp = new Exports(this.ctx); + return exp.dataURI(options); + } + }, { + key: "exportToCSV", + value: function exportToCSV() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var exp = new Exports(this.ctx); + return exp.exportToCSV(options); + } + }, { + key: "paper", + value: function paper() { + return this.w.globals.dom.Paper; + } + }, { + key: "_parentResizeCallback", + value: function _parentResizeCallback() { + if (this.w.globals.animationEnded && this.w.config.chart.redrawOnParentResize) { + this._windowResize(); + } + } + /** + * Handle window resize and re-draw the whole chart. + */ + + }, { + key: "_windowResize", + value: function _windowResize() { + var _this6 = this; + + clearTimeout(this.w.globals.resizeTimer); + this.w.globals.resizeTimer = window.setTimeout(function () { + _this6.w.globals.resized = true; + _this6.w.globals.dataChanged = false; // we need to redraw the whole chart on window resize (with a small delay). + + _this6.ctx.update(); + }, 150); + } + }, { + key: "_windowResizeHandler", + value: function _windowResizeHandler() { + var redraw = this.w.config.chart.redrawOnWindowResize; + + if (typeof redraw === 'function') { + redraw = redraw(); + } + + redraw && this._windowResize(); + } + }], [{ + key: "getChartByID", + value: function getChartByID(id) { + var chartId = Utils$1.escapeString(id); + + var c = Apex._chartInstances.filter(function (ch) { + return ch.id === chartId; + })[0]; + + return c && c.chart; + } + /** + * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute + */ + + }, { + key: "initOnLoad", + value: function initOnLoad() { + var els = document.querySelectorAll('[data-apexcharts]'); + + for (var i = 0; i < els.length; i++) { + var el = els[i]; + var options = JSON.parse(els[i].getAttribute('data-options')); + var apexChart = new ApexCharts(el, options); + apexChart.render(); + } + } + /** + * This static method allows users to call chart methods without necessarily from the + * instance of the chart in case user has assigned chartID to the targeted chart. + * The chartID is used for mapping the instance stored in Apex._chartInstances global variable + * + * This is helpful in cases when you don't have reference of the chart instance + * easily and need to call the method from anywhere. + * For eg, in React/Vue applications when you have many parent/child components, + * and need easy reference to other charts for performing dynamic operations + * + * @param {string} chartID - The unique identifier which will be used to call methods + * on that chart instance + * @param {function} fn - The method name to call + * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order. + */ + + }, { + key: "exec", + value: function exec(chartID, fn) { + var chart = this.getChartByID(chartID); + if (!chart) return; // turn on the global exec flag to indicate this method was called + + chart.w.globals.isExecCalled = true; + var ret = null; + + if (chart.publicMethods.indexOf(fn) !== -1) { + for (var _len = arguments.length, opts = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { + opts[_key - 2] = arguments[_key]; + } + + ret = chart[fn].apply(chart, opts); + } + + return ret; + } + }, { + key: "merge", + value: function merge(target, source) { + return Utils$1.extend(target, source); + } + }]); + + return ApexCharts; + }(); + + return ApexCharts$1; + +}))); diff --git a/public/assets/libs/apexcharts/dist/apexcharts.min.js b/public/assets/libs/apexcharts/dist/apexcharts.min.js new file mode 100644 index 0000000..050b0ed --- /dev/null +++ b/public/assets/libs/apexcharts/dist/apexcharts.min.js @@ -0,0 +1,14 @@ +/*! + * ApexCharts v3.36.2 + * (c) 2018-2022 ApexCharts + * Released under the MIT License. + */ +!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).ApexCharts=e()}(this,(function(){"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;it.length)&&(e=t.length);for(var i=0,a=new Array(e);i>16,o=i>>8&255,n=255&i;return"#"+(16777216+65536*(Math.round((a-r)*s)+r)+256*(Math.round((a-o)*s)+o)+(Math.round((a-n)*s)+n)).toString(16).slice(1)}},{key:"shadeColor",value:function(e,i){return t.isColorHex(i)?this.shadeHexColor(e,i):this.shadeRGBColor(e,i)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(t){return t&&"object"===i(t)&&!Array.isArray(t)&&null!=t}},{key:"is",value:function(t,e){return Object.prototype.toString.call(e)==="[object "+t+"]"}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;ee.length?t:e}))),t.length>e.length?t:e}),0)}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var a=0;a1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()|+\=?;:'",.<>{}[\]\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var a=i-t.length+1;a--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d.]*/g,""))}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var a=t.indexOf("Edge/");return a>0&&parseInt(t.substring(a+5,t.indexOf(".",a)),10)}}]),t}(),b=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.setEasingFunctions()}return r(t,[{key:"setEasingFunctions",value:function(){var t;if(!this.w.globals.easing){switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":default:t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1}}this.w.globals.easing=t}}},{key:"animateLine",value:function(t,e,i,a){t.attr(e).animate(a).attr(i)}},{key:"animateMarker",value:function(t,e,i,a,s,r){e||(e=0),t.attr({r:e,width:e,height:e}).animate(a,s).attr({r:i,width:i.width,height:i.height}).afterAll((function(){r()}))}},{key:"animateCircle",value:function(t,e,i,a,s){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(a,s).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,a,s){t.attr(e).animate(a).attr(i).afterAll((function(){return s()}))}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.realIndex,a=t.j,s=t.fill,r=t.pathFrom,o=t.pathTo,n=t.speed,l=t.delay,h=this.w,c=0;h.config.chart.animations.animateGradually.enabled&&(c=h.config.chart.animations.animateGradually.delay),h.config.chart.animations.dynamicAnimation.enabled&&h.globals.dataChanged&&"bar"!==h.config.chart.type&&(c=0),this.morphSVG(e,i,a,"line"!==h.config.chart.type||h.globals.comboCharts?s:"stroke",r,o,n,l*c)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach((function(t){t.el.classList.remove("apexcharts-element-hidden")}))}},{key:"animationCompleted",value:function(t){var e=this.w;e.globals.animationEnded||(e.globals.animationEnded=!0,this.showDelayedElements(),"function"==typeof e.config.chart.events.animationEnd&&e.config.chart.events.animationEnd(this.ctx,{el:t,w:e}))}},{key:"morphSVG",value:function(t,e,i,a,s,r,o,n){var l=this,h=this.w;s||(s=t.attr("pathFrom")),r||(r=t.attr("pathTo"));var c=function(t){return"radar"===h.config.chart.type&&(o=1),"M 0 ".concat(h.globals.gridHeight)};(!s||s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s=c()),(!r||r.indexOf("undefined")>-1||r.indexOf("NaN")>-1)&&(r=c()),h.globals.shouldAnimate||(o=1),t.plot(s).animate(1,h.globals.easing,n).plot(s).animate(o,h.globals.easing,n).plot(r).afterAll((function(){x.isNumber(i)?i===h.globals.series[h.globals.maxValsInArrayIndex].length-2&&h.globals.shouldAnimate&&l.animationCompleted(t):"none"!==a&&h.globals.shouldAnimate&&(!h.globals.comboCharts&&e===h.globals.series.length-1||h.globals.comboCharts)&&l.animationCompleted(t),l.showDelayedElements()}))}}]),t}(),v=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&!t.node.classList.contains("apexcharts-marker")&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"addDarkenFilter",value:function(t,e,i){var a=this,s=this.w,r=i.intensity;t.unfilter(!0);new window.SVG.Filter;t.filter((function(t){var i=s.config.chart.dropShadow;(i.enabled?a.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:r}})})),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)}},{key:"applyFilter",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:a});break;case"darken":this.addDarkenFilter(t,e,{intensity:a})}}},{key:"addShadow",value:function(t,e,i){var a=i.blur,s=i.top,r=i.left,o=i.color,n=i.opacity,l=t.flood(Array.isArray(o)?o[e]:o,n).composite(t.sourceAlpha,"in").offset(r,s).gaussianBlur(a).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=e.top,s=e.left,r=e.blur,o=e.color,n=e.opacity,l=e.noUserSpaceOnUse,h=this.w;return t.unfilter(!0),x.isIE()&&"radialBar"===h.config.chart.type||(o=Array.isArray(o)?o[i]:o,t.filter((function(t){var e=null;e=x.isSafari()||x.isFirefox()||x.isIE()?t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r):t.flood(o,n).composite(t.sourceAlpha,"in").offset(s,a).gaussianBlur(r).merge(t.source),t.blend(t.source,e)})),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),this._scaleFilterSize(t.filterer.node)),t}},{key:"setSelectionFilter",value:function(t,e,i){var a=this.w;if(void 0!==a.globals.selectedDataPoints[e]&&a.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var s=a.config.states.active.filter;"none"!==s&&this.applyFilter(t,e,s.type,s.value)}}},{key:"_scaleFilterSize",value:function(t){!function(e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}({width:"200%",height:"200%",x:"-50%",y:"-50%"})}}]),t}(),m=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"roundPathCorners",value:function(t,e){function i(t,e,i){var s=e.x-t.x,r=e.y-t.y,o=Math.sqrt(s*s+r*r);return a(t,e,Math.min(1,i/o))}function a(t,e,i){return{x:t.x+(e.x-t.x)*i,y:t.y+(e.y-t.y)*i}}function s(t,e){t.length>2&&(t[t.length-2]=e.x,t[t.length-1]=e.y)}function r(t){return{x:parseFloat(t[t.length-2]),y:parseFloat(t[t.length-1])}}var o=t.split(/[,\s]/).reduce((function(t,e){var i=e.match("([a-zA-Z])(.+)");return i?(t.push(i[1]),t.push(i[2])):t.push(e),t}),[]).reduce((function(t,e){return parseFloat(e)==e&&t.length?t[t.length-1].push(e):t.push([e]),t}),[]),n=[];if(o.length>1){var l=r(o[0]),h=null;"Z"==o[o.length-1][0]&&o[0].length>2&&(h=["L",l.x,l.y],o[o.length-1]=h),n.push(o[0]);for(var c=1;c2&&"L"==g[0]&&u.length>2&&"L"==u[0]){var f,p,x=r(d),b=r(g),v=r(u);f=i(b,x,e),p=i(b,v,e),s(g,f),g.origPoint=b,n.push(g);var m=a(f,b,.5),y=a(b,p,.5),w=["C",m.x,m.y,y.x,y.y,p.x,p.y];w.origPoint=b,n.push(w)}else n.push(g)}if(h){var k=r(n[n.length-1]);n.push(["Z"]),s(n[0],k)}}else n=o;return n.reduce((function(t,e){return t+e.join(" ")+" "}),"")}},{key:"drawLine",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:"butt",l=this.w,h=l.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:a,stroke:s,"stroke-dasharray":r,"stroke-width":o,"stroke-linecap":n});return h}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,n=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w,d=c.globals.dom.Paper.rect();return d.attr({x:t,y:e,width:i>0?i:0,height:a>0?a:0,rx:s,ry:s,opacity:o,"stroke-width":null!==n?n:0,stroke:null!==l?l:"none","stroke-dasharray":h}),d.node.setAttribute("fill",r),d}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"none",s=this.w,r=s.globals.dom.Paper.polygon(t).attr({fill:a,stroke:e,"stroke-width":i});return r}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;t<0&&(t=0);var a=i.globals.dom.Paper.circle(2*t);return null!==e&&a.attr(e),a}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,a=t.stroke,s=void 0===a?"#a8a8a8":a,r=t.strokeWidth,o=void 0===r?1:r,n=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,g=t.classes,u=t.strokeLinecap,f=void 0===u?null:u,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:n,"fill-opacity":h,stroke:s,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":o,"stroke-dasharray":x,class:g})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=e.globals.dom.Paper.group();return null!==t&&i.attr(t),i}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=null;return null===i?a=[" L",t,e].join(" "):"H"===i?a=[" H",t].join(" "):"V"===i&&(a=[" V",e].join(" ")),a}},{key:"curve",value:function(t,e,i,a,s,r){var o=["C",t,e,i,a,s,r].join(" ");return o}},{key:"quadraticCurve",value:function(t,e,i,a){return["Q",t,e,i,a].join(" ")}},{key:"arc",value:function(t,e,i,a,s,r,o){var n=arguments.length>7&&void 0!==arguments[7]&&arguments[7],l="A";n&&(l="a");var h=[l,t,e,i,a,s,r,o].join(" ");return h}},{key:"renderPaths",value:function(t){var i,a=t.j,s=t.realIndex,r=t.pathFrom,o=t.pathTo,n=t.stroke,l=t.strokeWidth,h=t.strokeLinecap,c=t.fill,d=t.animationDelay,g=t.initialSpeed,u=t.dataChangeSpeed,f=t.className,p=t.shouldClipToGrid,x=void 0===p||p,m=t.bindEventsOnPaths,y=void 0===m||m,w=t.drawShadow,k=void 0===w||w,A=this.w,S=new v(this.ctx),C=new b(this.ctx),L=this.w.config.chart.animations.enabled,P=L&&this.w.config.chart.animations.dynamicAnimation.enabled,T=!!(L&&!A.globals.resized||P&&A.globals.dataChanged&&A.globals.shouldAnimate);T?i=r:(i=o,A.globals.animationEnded=!0);var M=A.config.stroke.dashArray,I=0;I=Array.isArray(M)?M[s]:A.config.stroke.dashArray;var z=this.drawPath({d:i,stroke:n,strokeWidth:l,fill:c,fillOpacity:1,classes:f,strokeLinecap:h,strokeDashArray:I});if(z.attr("index",s),x&&z.attr({"clip-path":"url(#gridRectMask".concat(A.globals.cuid,")")}),"none"!==A.config.states.normal.filter.type)S.getDefaultFilter(z,s);else if(A.config.chart.dropShadow.enabled&&k&&(!A.config.chart.dropShadow.enabledOnSeries||A.config.chart.dropShadow.enabledOnSeries&&-1!==A.config.chart.dropShadow.enabledOnSeries.indexOf(s))){var X=A.config.chart.dropShadow;S.dropShadow(z,X,s)}y&&(z.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,z)),z.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,z)),z.node.addEventListener("mousedown",this.pathMouseDown.bind(this,z))),z.attr({pathTo:o,pathFrom:r});var E={el:z,j:a,realIndex:s,pathFrom:r,pathTo:o,fill:c,strokeWidth:l,delay:d};return!L||A.globals.resized||A.globals.dataChanged?!A.globals.resized&&A.globals.dataChanged||C.showDelayedElements():C.animatePathsGradually(e(e({},E),{},{speed:g})),A.globals.dataChanged&&P&&T&&C.animatePathsGradually(e(e({},E),{},{speed:u})),z}},{key:"drawPattern",value:function(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,r=this.w,o=r.globals.dom.Paper.pattern(e,i,(function(r){"horizontalLines"===t?r.line(0,0,i,0).stroke({color:a,width:s+1}):"verticalLines"===t?r.line(0,0,0,e).stroke({color:a,width:s+1}):"slantedLines"===t?r.line(0,0,e,i).stroke({color:a,width:s}):"squares"===t?r.rect(e,i).fill("none").stroke({color:a,width:s}):"circles"===t&&r.circle(e).fill("none").stroke({color:a,width:s})}));return o}},{key:"drawGradient",value:function(t,e,i,a,s){var r,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,n=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e.length<9&&0===e.indexOf("#")&&(e=x.hexToRgba(e,a)),i.length<9&&0===i.indexOf("#")&&(i=x.hexToRgba(i,s));var d=0,g=1,u=1,f=null;null!==n&&(d=void 0!==n[0]?n[0]/100:0,g=void 0!==n[1]?n[1]/100:1,u=void 0!==n[2]?n[2]/100:1,f=void 0!==n[3]?n[3]/100:null);var p=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"polarArea"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(r=null===l||0===l.length?c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){t.at(d,e,a),t.at(g,i,s),t.at(u,i,s),null!==f&&t.at(f,e,a)})):c.globals.dom.Paper.gradient(p?"radial":"linear",(function(t){(Array.isArray(l[h])?l[h]:l).forEach((function(e){t.at(e.offset/100,e.color,e.opacity)}))})),p){var b=c.globals.gridWidth/2,v=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?r.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:v,r:o}):r.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?r.from(0,0).to(0,1):"diagonal"===t?r.from(0,0).to(1,1):"horizontal"===t?r.from(0,1).to(1,1):"diagonal2"===t&&r.from(1,0).to(0,1);return r}},{key:"getTextBasedOnMaxWidth",value:function(t){var e=t.text,i=t.maxWidth,a=t.fontSize,s=t.fontFamily,r=this.getTextRects(e,a,s),o=r.width/e.length,n=Math.floor(i/o);return i-1){var n=i.globals.selectedDataPoints[s].indexOf(r);i.globals.selectedDataPoints[s].splice(n,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members,c=function(t){Array.prototype.forEach.call(t,(function(t){t.node.setAttribute("selected","false"),a.getDefaultFilter(t,s)}))};c(l),c(h)}t.node.setAttribute("selected","true"),o="true",void 0===i.globals.selectedDataPoints[s]&&(i.globals.selectedDataPoints[s]=[]),i.globals.selectedDataPoints[s].push(r)}if("true"===o){var d=i.config.states.active.filter;if("none"!==d)a.applyFilter(t,s,d.type,d.value);else if("none"!==i.config.states.hover.filter&&!i.globals.isTouchDevice){var g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}}else if("none"!==i.config.states.active.filter.type)if("none"===i.config.states.hover.filter.type||i.globals.isTouchDevice)a.getDefaultFilter(t,s);else{g=i.config.states.hover.filter;a.applyFilter(t,s,g.type,g.value)}"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}),e&&this.ctx.events.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:s,dataPointIndex:r,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e={};return t&&"function"==typeof t.getBBox&&(e=t.getBBox()),{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,a){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],r=this.w,o=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});a&&o.attr("transform",a),r.globals.dom.Paper.add(o);var n=o.bbox();return s||(n=o.node.getBoundingClientRect()),o.remove(),{width:n.width,height:n.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if("function"==typeof t.getComputedTextLength&&(t.textContent=e,e.length>0&&t.getComputedTextLength()>=i/1.1)){for(var a=e.length-3;a>0;a-=3)if(t.getSubStringLength(0,a)<=i/1.1)return void(t.textContent=e.substring(0,a)+"...");t.textContent="."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}(),y=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getStackedSeriesTotals",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=this.w,i=[];if(0===e.globals.series.length)return i;for(var a=0;a0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce((function(t,e){return t+e}),0):this.w.globals.series[t].reduce((function(t,e){return t+e}),0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter((function(t){return null!==t})):this.w.config.series[t].data.filter((function(t){return null!==t}))).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every((function(t,e,i){return t===i[0]}))}},{key:"getCategoryLabels",value:function(t){var e=this.w,i=t.slice();return e.config.xaxis.convertedCatToNumeric&&(i=t.map((function(t,i){return e.config.xaxis.labels.formatter(t-e.globals.minX+1)}))),i}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map((function(t){return t.length})).indexOf(Math.max.apply(Math,t.globals.series.map((function(t){return t.length}))))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach((function(t){e=Math.max(e,t)})),t.config.markers.discrete&&t.config.markers.discrete.length&&t.config.markers.discrete.forEach((function(t){e=Math.max(e,t.size)})),e>0&&(e+=t.config.markers.hover.sizeOffset+1),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map((function(t,e){var i=0;if(Array.isArray(t))for(var a=0;at&&i.globals.seriesX[s][o]0&&(e=!0),{comboBarCount:i,comboCharts:e}}},{key:"extendArrayProps",value:function(t,e,i){return e.yaxis&&(e=t.extendYAxis(e,i)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e}return r(t,[{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var a=null!==e?e:0,s=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(a,"']"));if(null!==s){var r=s.getBoundingClientRect();s.setAttribute("x",parseFloat(s.getAttribute("x"))-r.height+4),"top"===t.label.position?s.setAttribute("y",parseFloat(s.getAttribute("y"))+r.width):s.setAttribute("y",parseFloat(s.getAttribute("y"))-r.width);var o=this.annoCtx.graphics.rotateAroundCenter(s),n=o.x,l=o.y;s.setAttribute("transform","rotate(-90 ".concat(n," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!t||void 0===e.label.text||void 0!==e.label.text&&!String(e.label.text).trim())return null;var a=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),s=t.getBoundingClientRect(),r=e.label.style.padding.left,o=e.label.style.padding.right,n=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(n=e.label.style.padding.left,l=e.label.style.padding.right,r=e.label.style.padding.top,o=e.label.style.padding.bottom);var h=s.left-a.left-r,c=s.top-a.top-n,d=this.annoCtx.graphics.drawRect(h-i.globals.barPadForNumericAxis,c,s.width+r+o,s.height+n+l,e.label.borderRadius,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0);return e.id&&d.node.classList.add(e.id),d}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,a,s){var r=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(a,"']"));if(r){var o=r.parentNode,n=t.addBackgroundToAnno(r,i);n&&(o.insertBefore(n.node,r),i.label.mouseEnter&&n.node.addEventListener("mouseenter",i.label.mouseEnter.bind(t,i)),i.label.mouseLeave&&n.node.addEventListener("mouseleave",i.label.mouseLeave.bind(t,i)),i.label.click&&n.node.addEventListener("click",i.label.click.bind(t,i)))}};e.config.annotations.xaxis.map((function(t,e){i(t,e,"xaxis")})),e.config.annotations.yaxis.map((function(t,e){i(t,e,"yaxis")})),e.config.annotations.points.map((function(t,e){i(t,e,"point")}))}},{key:"getY1Y2",value:function(t,e){var i,a="y1"===t?e.y:e.y2,s=this.w;if(this.annoCtx.invertAxis){var r=s.globals.labels.indexOf(a);s.config.xaxis.convertedCatToNumeric&&(r=s.globals.categoryLabels.indexOf(a));var o=s.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(r+1)+")");o&&(i=parseFloat(o.getAttribute("y")))}else{var n;if(s.config.yaxis[e.yAxisIndex].logarithmic)n=(a=new y(this.annoCtx.ctx).getLogVal(a,e.yAxisIndex))/s.globals.yLogRatio[e.yAxisIndex];else n=(a-s.globals.minYArr[e.yAxisIndex])/(s.globals.yRange[e.yAxisIndex]/s.globals.gridHeight);i=s.globals.gridHeight-n,!e.marker||void 0!==e.y&&null!==e.y||(i=0),s.config.yaxis[e.yAxisIndex]&&s.config.yaxis[e.yAxisIndex].reversed&&(i=n)}return"string"==typeof a&&a.indexOf("px")>-1&&(i=parseFloat(a)),i}},{key:"getX1X2",value:function(t,e){var i=this.w,a=this.annoCtx.invertAxis?i.globals.minY:i.globals.minX,s=this.annoCtx.invertAxis?i.globals.maxY:i.globals.maxX,r=this.annoCtx.invertAxis?i.globals.yRange[0]:i.globals.xRange,o=(e.x-a)/(r/i.globals.gridWidth);this.annoCtx.inversedReversedAxis&&(o=(s-e.x)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(o=this.getStringX(e.x));var n=(e.x2-a)/(r/i.globals.gridWidth);return this.annoCtx.inversedReversedAxis&&(n=(s-e.x2)/(r/i.globals.gridWidth)),"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric||this.annoCtx.invertAxis||i.globals.dataFormatXNumeric||(n=this.getStringX(e.x2)),void 0!==e.x&&null!==e.x||!e.marker||(o=i.globals.gridWidth),"x1"===t&&"string"==typeof e.x&&e.x.indexOf("px")>-1&&(o=parseFloat(e.x)),"x2"===t&&"string"==typeof e.x2&&e.x2.indexOf("px")>-1&&(n=parseFloat(e.x2)),"x1"===t?o:n}},{key:"getStringX",value:function(t){var e=this.w,i=t;e.config.xaxis.convertedCatToNumeric&&e.globals.categoryLabels.length&&(t=e.globals.categoryLabels.indexOf(t)+1);var a=e.globals.labels.indexOf(t),s=e.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(a+1)+")");return s&&(i=parseFloat(s.getAttribute("x"))),i}}]),t}(),k=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.invertAxis=this.annoCtx.invertAxis,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addXaxisAnnotation",value:function(t,e,i){var a,s=this.w,r=this.helpers.getX1X2("x1",t),o=t.label.text,n=t.strokeDashArray;if(x.isNumber(r)){if(null===t.x2||void 0===t.x2){var l=this.annoCtx.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,n,t.borderWidth);e.appendChild(l.node),t.id&&l.node.classList.add(t.id)}else{if((a=this.helpers.getX1X2("x2",t))o){var h=o;o=a,a=h}var c=this.annoCtx.graphics.drawRect(0+t.offsetX,a+t.offsetY,this._getYAxisAnnotationWidth(t),o-a,0,t.fillColor,t.opacity,1,t.borderColor,r);c.node.classList.add("apexcharts-annotation-rect"),c.attr("clip-path","url(#gridRectMask".concat(s.globals.cuid,")")),e.appendChild(c.node),t.id&&c.node.classList.add(t.id)}var d="right"===t.label.position?s.globals.gridWidth:"center"===t.label.position?s.globals.gridWidth/2:0,g=this.annoCtx.graphics.drawText({x:d+t.label.offsetX,y:(null!=a?a:o)+t.label.offsetY-3,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});g.attr({rel:i}),e.appendChild(g.node)}},{key:"_getYAxisAnnotationWidth",value:function(t){var e=this.w;e.globals.gridWidth;return(t.width.indexOf("%")>-1?e.globals.gridWidth*parseInt(t.width,10)/100:parseInt(t.width,10))+t.offsetX}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map((function(e,a){t.addYaxisAnnotation(e,i.node,a)})),i}}]),t}(),S=function(){function t(e){a(this,t),this.w=e.w,this.annoCtx=e,this.helpers=new w(this.annoCtx)}return r(t,[{key:"addPointAnnotation",value:function(t,e,i){this.w;var a=this.helpers.getX1X2("x1",t),s=this.helpers.getY1Y2("y1",t);if(x.isNumber(a)){var r={pSize:t.marker.size,pointStrokeWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,pRadius:t.marker.radius,class:"apexcharts-point-annotation-marker ".concat(t.marker.cssClass," ").concat(t.id?t.id:"")},o=this.annoCtx.graphics.drawMarker(a+t.marker.offsetX,s+t.marker.offsetY,r);e.appendChild(o.node);var n=t.label.text?t.label.text:"",l=this.annoCtx.graphics.drawText({x:a+t.label.offsetX,y:s+t.label.offsetY-t.marker.size-parseFloat(t.label.style.fontSize)/1.6,text:n,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,fontWeight:t.label.style.fontWeight,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label ".concat(t.label.style.cssClass," ").concat(t.id?t.id:"")});if(l.attr({rel:i}),e.appendChild(l.node),t.customSVG.SVG){var h=this.annoCtx.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});h.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(s+t.customSVG.offsetY,")")}),h.node.innerHTML=t.customSVG.SVG,e.appendChild(h.node)}if(t.image.path){var c=t.image.width?t.image.width:20,d=t.image.height?t.image.height:20;o=this.annoCtx.addImage({x:a+t.image.offsetX-c/2,y:s+t.image.offsetY-d/2,width:c,height:d,path:t.image.path,appendTo:".apexcharts-point-annotations"})}t.mouseEnter&&o.node.addEventListener("mouseenter",t.mouseEnter.bind(this,t)),t.mouseLeave&&o.node.addEventListener("mouseleave",t.mouseLeave.bind(this,t)),t.click&&o.node.addEventListener("click",t.click.bind(this,t))}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.annoCtx.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map((function(e,a){t.addPointAnnotation(e,i.node,a)})),i}}]),t}();var C={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",exportToCSV:"Download CSV",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},L=function(){function t(){a(this,t),this.yAxis={show:!0,showAlways:!1,showForNullSeries:!0,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,logBase:10,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontWeight:400,fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#e0e0e0",width:1,offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#e0e0e0",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:-90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontWeight:900,fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.pointAnnotation={id:void 0,x:0,y:null,yAxisIndex:0,seriesIndex:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,marker:{size:4,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0},image:{path:void 0,width:20,height:20,offsetX:0,offsetY:0}},this.yAxisAnnotation={id:void 0,y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,width:"100%",yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.xAxisAnnotation={id:void 0,x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",borderWidth:1,opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,borderRadius:2,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,mouseEnter:void 0,mouseLeave:void 0,click:void 0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,fontWeight:400,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.text={x:0,y:0,text:"",textAnchor:"start",foreColor:void 0,fontSize:"13px",fontFamily:void 0,fontWeight:400,appendTo:".apexcharts-annotations",backgroundColor:"transparent",borderColor:"#c2c2c2",borderRadius:0,borderWidth:0,paddingLeft:4,paddingRight:4,paddingTop:2,paddingBottom:2}}return r(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation],texts:[],images:[],shapes:[]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[C],defaultLocale:"en",dropShadow:{enabled:!1,enabledOnSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,mouseMove:void 0,mouseLeave:void 0,xAxisLabelClick:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,beforeResetZoom:void 0,zoomed:void 0,scrolled:void 0,brushScrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,redrawOnParentResize:!0,redrawOnWindowResize:!0,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!0,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,offsetX:0,offsetY:0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},export:{csv:{filename:void 0,columnDelimiter:",",headerCategory:"category",headerValue:"value",dateFormatter:function(t){return new Date(t).toDateString()}},png:{filename:void 0},svg:{filename:void 0}},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",autoScaleYaxis:!1,zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{area:{fillTo:"origin"},bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,borderRadius:0,borderRadiusApplication:"around",borderRadiusWhenStacked:"last",rangeBarOverlap:!0,rangeBarGroupRows:!1,colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1,backgroundBarRadius:0},dataLabels:{position:"top",maxItems:100,hideOverflowingLabels:!0,orientation:"horizontal",total:{enabled:!1,formatter:void 0,offsetX:0,offsetY:0,style:{color:"#373d3f",fontSize:"12px",fontFamily:void 0,fontWeight:600}}}},bubble:{zScaling:!0,minBubbleRadius:void 0,maxBubbleRadius:void 0},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},boxPlot:{colors:{upper:"#00E396",lower:"#008FFB"}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!1,distributed:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},treemap:{enableShades:!0,shadeIntensity:.5,distributed:!1,reverseNegativeShade:!1,useFillColorAsStroke:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:0,formatter:function(t){return t}},value:{show:!0,fontSize:"14px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",fontSize:"16px",fontWeight:600,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)/t.globals.series.length+"%"}}}},pie:{customScale:1,offsetX:0,offsetY:0,startAngle:0,endAngle:360,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,fontWeight:600,color:void 0,offsetY:-10,formatter:function(t){return t}},value:{show:!0,fontSize:"20px",fontFamily:void 0,fontWeight:400,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,showAlways:!1,label:"Total",fontSize:"16px",fontWeight:400,fontFamily:void 0,color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce((function(t,e){return t+e}),0)}}}}},polarArea:{rings:{strokeWidth:1,strokeColor:"#e8e8e8"},spokes:{strokeWidth:1,connectorColors:"#e8e8e8"}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeWidth:1,strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return null!==t?t:""},textAnchor:"middle",distributed:!1,offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,fontWeight:600,colors:void 0},background:{enabled:!0,foreColor:"#fff",borderRadius:2,padding:4,opacity:.9,borderWidth:1,borderColor:"#fff",dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"squares",width:6,height:6,strokeWidth:2}},forecastDataPoints:{count:0,fillOpacity:.5,strokeWidth:void 0,dashArray:4},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1}},yaxis:{lines:{show:!0}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",inverseOrder:!1,fontSize:"12px",fontFamily:void 0,fontWeight:400,width:void 0,height:void 0,formatter:void 0,tooltipHoverFormatter:void 0,offsetX:-20,offsetY:4,customLegendItems:[],labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,fillColors:void 0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:5,vertical:2},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,strokeDashArray:0,fillOpacity:1,shape:"circle",width:8,height:8,radius:2,offsetX:0,offsetY:0,onClick:void 0,onDblClick:void 0,showNullDataPoints:!0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.1}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.5}}},title:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontWeight:900,fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:5,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontWeight:400,fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0,fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]}}},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",cssClass:"",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t?t+": ":""}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0,fillColors:void 0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],convertedCatToNumeric:!1,offsetX:0,offsetY:0,overwriteCategories:void 0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!1,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeUTC:!0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss",second:"HH:mm:ss"}},group:{groups:[],style:{colors:[],fontSize:"12px",fontWeight:400,fontFamily:void 0,cssClass:""}},axisBorder:{show:!0,color:"#e0e0e0",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#e0e0e0",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,decimalsInFloat:void 0,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontWeight:900,fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),P=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.graphics=new m(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.helpers=new w(this),this.xAxisAnnotations=new k(this),this.yAxisAnnotations=new A(this),this.pointsAnnotations=new S(this),this.w.globals.isBarHorizontal&&this.w.config.yaxis[0].reversed&&(this.inversedReversedAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return r(t,[{key:"drawAxesAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.yAxisAnnotations.drawYAxisAnnotations(),i=this.xAxisAnnotations.drawXAxisAnnotations(),a=this.pointsAnnotations.drawPointAnnotations(),s=t.config.chart.animations.enabled,r=[e,i,a],o=[i.node,e.node,a.node],n=0;n<3;n++)t.globals.dom.elGraphical.add(r[n]),!s||t.globals.resized||t.globals.dataChanged||"scatter"!==t.config.chart.type&&"bubble"!==t.config.chart.type&&t.globals.dataPoints>1&&o[n].classList.add("apexcharts-element-hidden"),t.globals.delayedElements.push({el:o[n],index:0});this.helpers.annotationsBackground()}}},{key:"drawImageAnnos",value:function(){var t=this;this.w.config.annotations.images.map((function(e,i){t.addImage(e,i)}))}},{key:"drawTextAnnos",value:function(){var t=this;this.w.config.annotations.texts.map((function(e,i){t.addText(e,i)}))}},{key:"addXaxisAnnotation",value:function(t,e,i){this.xAxisAnnotations.addXaxisAnnotation(t,e,i)}},{key:"addYaxisAnnotation",value:function(t,e,i){this.yAxisAnnotations.addYaxisAnnotation(t,e,i)}},{key:"addPointAnnotation",value:function(t,e,i){this.pointsAnnotations.addPointAnnotation(t,e,i)}},{key:"addText",value:function(t,e){var i=t.x,a=t.y,s=t.text,r=t.textAnchor,o=t.foreColor,n=t.fontSize,l=t.fontFamily,h=t.fontWeight,c=t.cssClass,d=t.backgroundColor,g=t.borderWidth,u=t.strokeDashArray,f=t.borderRadius,p=t.borderColor,x=t.appendTo,b=void 0===x?".apexcharts-annotations":x,v=t.paddingLeft,m=void 0===v?4:v,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=this.w,P=this.graphics.drawText({x:i,y:a,text:s,textAnchor:r||"start",fontSize:n||"12px",fontWeight:h||"regular",fontFamily:l||L.config.chart.fontFamily,foreColor:o||L.config.chart.foreColor,cssClass:c}),T=L.globals.dom.baseEl.querySelector(b);T&&T.appendChild(P.node);var M=P.bbox();if(s){var I=this.graphics.drawRect(M.x-m,M.y-C,M.width+m+w,M.height+A+C,f,d||"transparent",1,g,p,u);T.insertBefore(I.node,P.node)}}},{key:"addImage",value:function(t,e){var i=this.w,a=t.path,s=t.x,r=void 0===s?0:s,o=t.y,n=void 0===o?0:o,l=t.width,h=void 0===l?20:l,c=t.height,d=void 0===c?20:c,g=t.appendTo,u=void 0===g?".apexcharts-annotations":g,f=i.globals.dom.Paper.image(a);f.size(h,d).move(r,n);var p=i.globals.dom.baseEl.querySelector(u);return p&&p.appendChild(f.node),f}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,a=t.context,s=t.type,r=t.contextMethod,o=a,n=o.w,l=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations")),h=l.childNodes.length+1,c=new L,d=Object.assign({},"xaxis"===s?c.xAxisAnnotation:"yaxis"===s?c.yAxisAnnotation:c.pointAnnotation),g=x.extend(d,e);switch(s){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var u=n.globals.dom.baseEl.querySelector(".apexcharts-".concat(s,"-annotations .apexcharts-").concat(s,"-annotation-label[rel='").concat(h,"']")),f=this.helpers.addBackgroundToAnno(u,g);return f&&l.insertBefore(f.node,u),i&&n.globals.memory.methodsToExec.push({context:o,id:g.id?g.id:x.randomId(),method:r,label:"addAnnotation",params:e}),a}},{key:"clearAnnotations",value:function(t){var e=t.w,i=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");e.globals.memory.methodsToExec.map((function(t,i){"addText"!==t.label&&"addAnnotation"!==t.label||e.globals.memory.methodsToExec.splice(i,1)})),i=x.listToArray(i),Array.prototype.forEach.call(i,(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)}))}},{key:"removeAnnotation",value:function(t,e){var i=t.w,a=i.globals.dom.baseEl.querySelectorAll(".".concat(e));a&&(i.globals.memory.methodsToExec.map((function(t,a){t.id===e&&i.globals.memory.methodsToExec.splice(a,1)})),Array.prototype.forEach.call(a,(function(t){t.parentElement.removeChild(t)})))}}]),t}(),T=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return r(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getTimeStamp",value:function(t){return Date.parse(t)?this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toISOString().substr(0,25)).getTime():new Date(t).getTime():t}},{key:"getDate",value:function(t){return this.w.config.xaxis.labels.datetimeUTC?new Date(new Date(t).toUTCString()):new Date(t)}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getTimeStamp(i)}},{key:"parseDateWithTimezone",value:function(t){return Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "))}},{key:"formatDate",value:function(t,e){var i=this.w.globals.locale,a=this.w.config.xaxis.labels.datetimeUTC,s=["\0"].concat(u(i.months)),r=["\x01"].concat(u(i.shortMonths)),o=["\x02"].concat(u(i.days)),n=["\x03"].concat(u(i.shortDays));function l(t,e){var i=t+"";for(e=e||2;i.length12?g-12:0===g?12:g;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+l(g))).replace(/(^|[^\\])H/g,"$1"+g)).replace(/(^|[^\\])hh+/g,"$1"+l(f))).replace(/(^|[^\\])h/g,"$1"+f);var p=a?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+l(p))).replace(/(^|[^\\])m/g,"$1"+p);var x=a?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+l(x))).replace(/(^|[^\\])s/g,"$1"+x);var b=a?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+l(b,3)),b=Math.round(b/10),e=e.replace(/(^|[^\\])ff/g,"$1"+l(b)),b=Math.round(b/10);var v=g<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+b)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var m=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+m)).replace(/(^|[^\\])t/g,"$1"+m.charAt(0));var y=-t.getTimezoneOffset(),w=a||!y?"Z":y>0?"+":"-";if(!a){var k=(y=Math.abs(y))%60;w+=l(Math.floor(y/60))+":"+l(k)}e=e.replace(/(^|[^\\])K/g,"$1"+w);var A=(a?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[A])).replace(new RegExp(n[0],"g"),n[A])).replace(new RegExp(s[0],"g"),s[c])).replace(new RegExp(r[0],"g"),r[c])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e,i){var a=this.w;void 0!==a.config.xaxis.min&&(t=a.config.xaxis.min),void 0!==a.config.xaxis.max&&(e=a.config.xaxis.max);var s=this.getDate(t),r=this.getDate(e),o=this.formatDate(s,"yyyy MM dd HH mm ss fff").split(" "),n=this.formatDate(r,"yyyy MM dd HH mm ss fff").split(" ");return{minMillisecond:parseInt(o[6],10),maxMillisecond:parseInt(n[6],10),minSecond:parseInt(o[5],10),maxSecond:parseInt(n[5],10),minMinute:parseInt(o[4],10),maxMinute:parseInt(n[4],10),minHour:parseInt(o[3],10),maxHour:parseInt(n[3],10),minDate:parseInt(o[2],10),maxDate:parseInt(n[2],10),minMonth:parseInt(o[1],10)-1,maxMonth:parseInt(n[1],10)-1,minYear:parseInt(o[0],10),maxYear:parseInt(n[0],10)}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var a=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&a++,a}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=x.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),M=function(t){var e,i=t.ctx,a=t.seriesIndex,s=t.dataPointIndex,r=t.y1,o=t.y2,n=t.w,l=n.globals.seriesRangeStart[a][s],h=n.globals.seriesRangeEnd[a][s],c=n.globals.labels[s],d=n.config.series[a].name?n.config.series[a].name:"",g=n.config.tooltip.y.formatter,u=n.config.tooltip.y.title.formatter,f={w:n,seriesIndex:a,dataPointIndex:s,start:l,end:h};"function"==typeof u&&(d=u(d,f)),null!==(e=n.config.series[a].data[s])&&void 0!==e&&e.x&&(c=n.config.series[a].data[s].x+":"),"function"==typeof g&&(c=g(c,f)),Number.isFinite(r)&&Number.isFinite(o)&&(l=r,h=o);var p="",x="",b=n.globals.colors[a];if(void 0===n.config.tooltip.x.formatter)if("datetime"===n.config.xaxis.type){var v=new T(i);p=v.formatDate(v.getDate(l),n.config.tooltip.x.format),x=v.formatDate(v.getDate(h),n.config.tooltip.x.format)}else p=l,x=h;else p=n.config.tooltip.x.formatter(l),x=n.config.tooltip.x.formatter(h);return{start:l,end:h,startVal:p,endVal:x,ylabel:c,color:b,seriesName:d}},I=function(t){var e=t.color,i=t.seriesName,a=t.ylabel,s=t.start,r=t.end,o=t.seriesIndex,n=t.dataPointIndex,l=t.ctx.tooltip.tooltipLabels.getFormatters(o);s=l.yLbFormatter(s),r=l.yLbFormatter(r);var h=l.yLbFormatter(t.w.globals.series[o][n]),c='\n '.concat(s,'\n - \n ').concat(r,"\n ");return'
    '+(i||"")+'
    '+a+" "+(t.w.globals.comboCharts?"rangeArea"===t.w.config.series[o].type||"rangeBar"===t.w.config.series[o].type?c:"".concat(h,""):c)+"
    "},z=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].show=!1,this.opts.yaxis[0].title.text="",this.opts.yaxis[0].axisBorder.show=!1,this.opts.yaxis[0].axisTicks.show=!1,this.opts.yaxis[0].floating=!0;return x.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1},axisTicks:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]},background:{enabled:!1}},stroke:{width:0,lineCap:"round"},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1,intersect:!0},xaxis:{tooltip:{enabled:!1},tickPlacement:"between",crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){var t=this;return{stroke:{width:1,colors:["#333"]},fill:{opacity:1},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Open","High","","Low","Close"],"candlestick")}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"boxPlot",value:function(){var t=this;return{chart:{animations:{dynamicAnimation:{enabled:!1}}},stroke:{width:1,colors:["#24292e"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(e){var i=e.seriesIndex,a=e.dataPointIndex,s=e.w;return t._getBoxTooltip(s,i,a,["Minimum","Q1","Median","Q3","Maximum"],"boxPlot")}},markers:{size:5,strokeWidth:1,strokeColors:"#111"},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0,lineCap:"square"},plotOptions:{bar:{borderRadius:0,dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,a=e.dataPointIndex,s=e.w,r=function(){var t=s.globals.seriesRangeStart[i][a];return s.globals.seriesRangeEnd[i][a]-t};return s.globals.comboCharts?"rangeBar"===s.config.series[i].type||"rangeArea"===s.config.series[i].type?r():t:r()},background:{enabled:!1},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){return t.w.config.plotOptions&&t.w.config.plotOptions.bar&&t.w.config.plotOptions.bar.horizontal?function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.startVal,n=i.endVal;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t):function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}},xaxis:{tickPlacement:"between",tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4,fill:{type:"solid",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}}},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"rangeArea",value:function(){return{stroke:{curve:"straight",width:0},fill:{type:"solid",opacity:.6},markers:{size:0},states:{hover:{filter:{type:"none"}},active:{filter:{type:"none"}}},tooltip:{intersect:!1,shared:!0,followCursor:!0,custom:function(t){return function(t){var i=M(t),a=i.color,s=i.seriesName,r=i.ylabel,o=i.start,n=i.end;return I(e(e({},t),{},{color:a,seriesName:s,ylabel:r,start:o,end:n}))}(t)}}}}},{key:"brush",value:function(t){return x.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(t){t.dataLabels=t.dataLabels||{},t.dataLabels.formatter=t.dataLabels.formatter||void 0;var e=t.dataLabels.formatter;return t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})),"bar"===t.chart.type&&(t.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t}),t}},{key:"convertCatToNumeric",value:function(t){return t.xaxis.convertedCatToNumeric=!0,t}},{key:"convertCatToNumericXaxis",value:function(t,e,i){t.xaxis.type="numeric",t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return x.isNumber(t)?Math.floor(t):t};var a=t.xaxis.labels.formatter,s=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(s=i.map((function(t){return Array.isArray(t)?t:String(t)}))),s&&s.length&&(t.xaxis.labels.formatter=function(t){return x.isNumber(t)?a(s[Math.floor(t)-1]):a(t)}),t.xaxis.categories=[],t.labels=[],t.xaxis.tickAmount=t.xaxis.tickAmount||"dataPoints",t}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:1,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"treemap",value:function(){return{chart:{zoom:{enabled:!1}},dataLabels:{style:{fontSize:14,fontWeight:600,colors:["#fff"]}},stroke:{show:!0,width:2,colors:["#fff"]},legend:{show:!1},fill:{gradient:{stops:[0,100]}},tooltip:{followCursor:!0,x:{show:!1}},grid:{padding:{left:0,right:0}},xaxis:{crosshairs:{show:!1},tooltip:{enabled:!1}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",stops:[0,100]}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},background:{enabled:!1},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"light",shadeIntensity:.35,stops:[80,100],opacityFrom:1,opacityTo:1}},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"polarArea",value:function(){return this.opts.yaxis[0].tickAmount=this.opts.yaxis[0].tickAmount?this.opts.yaxis[0].tickAmount:6,{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},enabled:!1},stroke:{show:!0,width:2},fill:{opacity:.7},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.offsetY=this.opts.yaxis[0].labels.offsetY?this.opts.yaxis[0].labels.offsetY:6,{dataLabels:{enabled:!1,style:{fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{labels:{formatter:function(t){return t},style:{colors:["#a8a8a8"],fontSize:"11px"}},tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}},{key:"_getBoxTooltip",value:function(t,e,i,a,s){var r=t.globals.seriesCandleO[e][i],o=t.globals.seriesCandleH[e][i],n=t.globals.seriesCandleM[e][i],l=t.globals.seriesCandleL[e][i],h=t.globals.seriesCandleC[e][i];return t.config.series[e].type&&t.config.series[e].type!==s?'
    \n '.concat(t.config.series[e].name?t.config.series[e].name:"series-"+(e+1),": ").concat(t.globals.series[e][i],"\n
    "):'
    ')+"
    ".concat(a[0],': ')+r+"
    "+"
    ".concat(a[1],': ')+o+"
    "+(n?"
    ".concat(a[2],': ')+n+"
    ":"")+"
    ".concat(a[3],': ')+l+"
    "+"
    ".concat(a[4],': ')+h+"
    "}}]),t}(),X=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(t){var e=t.responsiveOverride,a=this.opts,s=new L,r=new z(a);this.chartType=a.chart.type,"histogram"===this.chartType&&(a.chart.type="bar",a=x.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},a)),a=this.extendYAxis(a),a=this.extendAnnotations(a);var o=s.init(),n={};if(a&&"object"===i(a)){var l={};l=-1!==["line","area","bar","candlestick","boxPlot","rangeBar","rangeArea","histogram","bubble","scatter","heatmap","treemap","pie","polarArea","donut","radar","radialBar"].indexOf(a.chart.type)?r[a.chart.type]():r.line(),a.chart.brush&&a.chart.brush.enabled&&(l=r.brush(l)),a.chart.stacked&&"100%"===a.chart.stackType&&(a=r.stacked100(a)),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(a),a.xaxis=a.xaxis||window.Apex.xaxis||{},e||(a.xaxis.convertedCatToNumeric=!1),((a=this.checkForCatToNumericXAxis(this.chartType,l,a)).chart.sparkline&&a.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(l=r.sparkline(l)),n=x.extend(o,l)}var h=x.extend(n,window.Apex);return o=x.extend(h,a),o=this.handleUserInputErrors(o)}},{key:"checkForCatToNumericXAxis",value:function(t,e,i){var a=new z(i),s=("bar"===t||"boxPlot"===t)&&i.plotOptions&&i.plotOptions.bar&&i.plotOptions.bar.horizontal,r="pie"===t||"polarArea"===t||"donut"===t||"radar"===t||"radialBar"===t||"heatmap"===t,o="datetime"!==i.xaxis.type&&"numeric"!==i.xaxis.type,n=i.xaxis.tickPlacement?i.xaxis.tickPlacement:e.xaxis&&e.xaxis.tickPlacement;return s||r||!o||"between"===n||(i=a.convertCatToNumeric(i)),i}},{key:"extendYAxis",value:function(t,e){var i=new L;(void 0===t.yaxis||!t.yaxis||Array.isArray(t.yaxis)&&0===t.yaxis.length)&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=x.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[x.extend(i.yAxis,t.yaxis)]:t.yaxis=x.extendArray(t.yaxis,i.yAxis);var a=!1;t.yaxis.forEach((function(t){t.logarithmic&&(a=!0)}));var s=t.series;return e&&!s&&(s=e.config.series),a&&s.length!==t.yaxis.length&&s.length&&(t.yaxis=s.map((function(e,a){if(e.name||(s[a].name="series-".concat(a+1)),t.yaxis[a])return t.yaxis[a].seriesName=s[a].name,t.yaxis[a];var r=x.extend(i.yAxis,t.yaxis[0]);return r.show=!1,r}))),a&&s.length>1&&s.length!==t.yaxis.length&&console.warn("A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both."),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new L;return t.annotations.yaxis=x.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new L;return t.annotations.xaxis=x.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new L;return t.annotations.points=x.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.chart.background||(t.chart.background="#424242"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if("bar"===e.chart.type&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&"barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(e.xaxis.crosshairs.width="tickWidth"),"candlestick"!==e.chart.type&&"boxPlot"!==e.chart.type||e.yaxis[0].reversed&&(console.warn("Reversed y-axis in ".concat(e.chart.type," chart is not supported.")),e.yaxis[0].reversed=!1),e}}]),t}(),E=function(){function t(){a(this,t)}return r(t,[{key:"initGlobalVars",value:function(t){t.series=[],t.seriesCandleO=[],t.seriesCandleH=[],t.seriesCandleM=[],t.seriesCandleL=[],t.seriesCandleC=[],t.seriesRangeStart=[],t.seriesRangeEnd=[],t.seriesRange=[],t.seriesPercent=[],t.seriesGoals=[],t.seriesX=[],t.seriesZ=[],t.seriesNames=[],t.seriesTotals=[],t.seriesLog=[],t.seriesColors=[],t.stackedSeriesTotals=[],t.seriesXvalues=[],t.seriesYvalues=[],t.labels=[],t.hasGroups=!1,t.groups=[],t.categoryLabels=[],t.timescaleLabels=[],t.noLabelsProvided=!1,t.resizeTimer=null,t.selectionResizeTimer=null,t.delayedElements=[],t.pointsArray=[],t.dataLabelsRects=[],t.isXNumeric=!1,t.xaxisLabelsCount=0,t.skipLastTimelinelabel=!1,t.skipFirstTimelinelabel=!1,t.isDataXYZ=!1,t.isMultiLineX=!1,t.isMultipleYAxis=!1,t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE,t.minYArr=[],t.maxYArr=[],t.maxX=-Number.MAX_VALUE,t.minX=Number.MAX_VALUE,t.initialMaxX=-Number.MAX_VALUE,t.initialMinX=Number.MAX_VALUE,t.maxDate=0,t.minDate=Number.MAX_VALUE,t.minZ=Number.MAX_VALUE,t.maxZ=-Number.MAX_VALUE,t.minXDiff=Number.MAX_VALUE,t.yAxisScale=[],t.xAxisScale=null,t.xAxisTicksPositions=[],t.yLabelsCoords=[],t.yTitleCoords=[],t.barPadForNumericAxis=0,t.padHorizontal=0,t.xRange=0,t.yRange=[],t.zRange=0,t.dataPoints=0,t.xTickAmount=0}},{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,isExecCalled:!1,initialConfig:null,initialSeries:[],lastXAxis:[],lastYAxis:[],columnSeries:null,labels:[],timescaleLabels:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,capturedSeriesIndex:-1,capturedDataPointIndex:-1,selectedDataPoints:[],goldenPadding:35,invalidLogScale:!1,ignoreYAxisIndexes:[],yAxisSameScaleIndices:[],maxValsInArrayIndex:0,radialSize:0,selection:void 0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,skipFirstTimelinelabel:!1,delayedElements:[],axisCharts:!0,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,dataChanged:!1,previousPaths:[],allSeriesHasEqualX:!0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,xAxisGroupLabelsHeight:0,xAxisLabelsWidth:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return this.initGlobalVars(e),e.initialConfig=x.extend({},t),e.initialSeries=x.clone(t.series),e.lastXAxis=x.clone(e.initialConfig.xaxis),e.lastYAxis=x.clone(e.initialConfig.yaxis),e}}]),t}(),Y=function(){function t(e){a(this,t),this.opts=e}return r(t,[{key:"init",value:function(){var t=new X(this.opts).init({responsiveOverride:!1});return{config:t,globals:(new E).init(t)}}}]),t}(),F=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.opts=null,this.seriesIndex=0}return r(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,a=parseInt(e.globals.gridWidth,10),s=parseInt(e.globals.gridHeight,10),r=a>s?a:s,o=t.image,n=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(n=i.fill.image.width+1,l=i.fill.image.height):(n=r+1,l=r):(n=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");m.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:n+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS(window.SVG.xlink,"href",o),m.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:n+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type||"treemap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,a,s,r=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var o=this.getFillColors()[this.seriesIndex];void 0!==e.globals.seriesColors[this.seriesIndex]&&(o=e.globals.seriesColors[this.seriesIndex]),"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,dataPointIndex:t.dataPointIndex,value:t.value,w:e}));var n=t.fillType?t.fillType:this.getFillType(this.seriesIndex),l=Array.isArray(r.fill.opacity)?r.fill.opacity[this.seriesIndex]:r.fill.opacity;t.color&&(o=t.color);var h=o;if(-1===o.indexOf("rgb")?o.length<9&&(h=x.hexToRgba(o,l)):o.indexOf("rgba")>-1&&(l=x.getOpacityFromRGBA(o)),t.opacity&&(l=t.opacity),"pattern"===n&&(a=this.handlePatternFill({fillConfig:t.fillConfig,patternFill:a,fillColor:o,fillOpacity:l,defaultColor:h})),"gradient"===n&&(s=this.handleGradientFill({fillConfig:t.fillConfig,fillColor:o,fillOpacity:l,i:this.seriesIndex})),"image"===n){var c=r.fill.image.src,d=t.patternID?t.patternID:"";this.clippedImgArea({opacity:l,image:Array.isArray(c)?t.seriesNumber-1&&(u=x.getOpacityFromRGBA(g));var f=void 0===o.gradient.opacityTo?a:Array.isArray(o.gradient.opacityTo)?o.gradient.opacityTo[r]:o.gradient.opacityTo;if(void 0===o.gradient.gradientToColors||0===o.gradient.gradientToColors.length)n="dark"===o.gradient.shade?c.shadeColor(-1*parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i):c.shadeColor(parseFloat(o.gradient.shadeIntensity),i.indexOf("rgb")>-1?x.rgb2hex(i):i);else if(o.gradient.gradientToColors[l.seriesNumber]){var p=o.gradient.gradientToColors[l.seriesNumber];n=p,p.indexOf("rgba")>-1&&(f=x.getOpacityFromRGBA(p))}else n=i;if(o.gradient.gradientFrom&&(g=o.gradient.gradientFrom),o.gradient.gradientTo&&(n=o.gradient.gradientTo),o.gradient.inverseColors){var b=g;g=n,n=b}return g.indexOf("rgb")>-1&&(g=x.rgb2hex(g)),n.indexOf("rgb")>-1&&(n=x.rgb2hex(n)),h.drawGradient(d,g,n,u,f,l.size,o.gradient.stops,o.gradient.colorStops,r)}}]),t}(),R=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length4&&void 0!==arguments[4]&&arguments[4],o=this.w,n=e,l=t,h=null,c=new m(this.ctx),d=o.config.markers.discrete&&o.config.markers.discrete.length;if((o.globals.markers.size[e]>0||r||d)&&(h=c.group({class:r||d?"":"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(o.globals.cuid,")")),Array.isArray(l.x))for(var g=0;g0:o.config.markers.size>0;if(p||r||d){x.isNumber(l.y[g])?f+=" w".concat(x.randomId()):f="apexcharts-nullpoint";var b=this.getMarkerConfig({cssClass:f,seriesIndex:e,dataPointIndex:u});o.config.series[n].data[u]&&(o.config.series[n].data[u].fillColor&&(b.pointFillColor=o.config.series[n].data[u].fillColor),o.config.series[n].data[u].strokeColor&&(b.pointStrokeColor=o.config.series[n].data[u].strokeColor)),a&&(b.pSize=a),(s=c.drawMarker(l.x[g],l.y[g],b)).attr("rel",u),s.attr("j",u),s.attr("index",e),s.node.setAttribute("default-marker-size",b.pSize);var y=new v(this.ctx);y.setSelectionFilter(s,e,u),this.addEvents(s),h&&h.add(s)}else void 0===o.globals.pointsArray[e]&&(o.globals.pointsArray[e]=[]),o.globals.pointsArray[e].push([l.x[g],l.y[g]])}return h}},{key:"getMarkerConfig",value:function(t){var e=t.cssClass,i=t.seriesIndex,a=t.dataPointIndex,s=void 0===a?null:a,r=t.finishRadius,o=void 0===r?null:r,n=this.w,l=this.getMarkerStyle(i),h=n.globals.markers.size[i],c=n.config.markers;return null!==s&&c.discrete.length&&c.discrete.map((function(t){t.seriesIndex===i&&t.dataPointIndex===s&&(l.pointStrokeColor=t.strokeColor,l.pointFillColor=t.fillColor,h=t.size,l.pointShape=t.shape)})),{pSize:null===o?h:o,pRadius:c.radius,width:Array.isArray(c.width)?c.width[i]:c.width,height:Array.isArray(c.height)?c.height[i]:c.height,pointStrokeWidth:Array.isArray(c.strokeWidth)?c.strokeWidth[i]:c.strokeWidth,pointStrokeColor:l.pointStrokeColor,pointFillColor:l.pointFillColor,shape:l.pointShape||(Array.isArray(c.shape)?c.shape[i]:c.shape),class:e,pointStrokeOpacity:Array.isArray(c.strokeOpacity)?c.strokeOpacity[i]:c.strokeOpacity,pointStrokeDashArray:Array.isArray(c.strokeDashArray)?c.strokeDashArray[i]:c.strokeDashArray,pointFillOpacity:Array.isArray(c.fillOpacity)?c.fillOpacity[i]:c.fillOpacity,seriesIndex:i}}},{key:"addEvents",value:function(t){var e=this.w,i=new m(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("click",e.config.markers.onClick),t.node.addEventListener("dblclick",e.config.markers.onDblClick),t.node.addEventListener("touchstart",i.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,a=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:Array.isArray(a)?a[t]:a,pointFillColor:Array.isArray(i)?i[t]:i}}}]),t}(),D=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled}return r(t,[{key:"draw",value:function(t,e,i){var a=this.w,s=new m(this.ctx),r=i.realIndex,o=i.pointsPos,n=i.zRatio,l=i.elParent,h=s.group({class:"apexcharts-series-markers apexcharts-series-".concat(a.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")")),Array.isArray(o.x))for(var c=0;cp.maxBubbleRadius&&(f=p.maxBubbleRadius)}a.config.chart.animations.enabled||(u=f);var x=o.x[c],b=o.y[c];if(u=u||0,null!==b&&void 0!==a.globals.series[r][d]||(g=!1),g){var v=this.drawPoint(x,b,u,f,r,d,e);h.add(v)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,a,s,r,o){var n=this.w,l=s,h=new b(this.ctx),c=new v(this.ctx),d=new F(this.ctx),g=new R(this.ctx),u=new m(this.ctx),f=g.getMarkerConfig({cssClass:"apexcharts-marker",seriesIndex:l,dataPointIndex:r,finishRadius:"bubble"===n.config.chart.type||n.globals.comboCharts&&n.config.series[s]&&"bubble"===n.config.series[s].type?a:null});a=f.pSize;var p,x=d.fillPath({seriesNumber:s,dataPointIndex:r,color:f.pointFillColor,patternUnits:"objectBoundingBox",value:n.globals.series[s][o]});if("circle"===f.shape?p=u.drawCircle(i):"square"!==f.shape&&"rect"!==f.shape||(p=u.drawRect(0,0,f.width-f.pointStrokeWidth/2,f.height-f.pointStrokeWidth/2,f.pRadius)),n.config.series[l].data[r]&&n.config.series[l].data[r].fillColor&&(x=n.config.series[l].data[r].fillColor),p.attr({x:t-f.width/2-f.pointStrokeWidth/2,y:e-f.height/2-f.pointStrokeWidth/2,cx:t,cy:e,fill:x,"fill-opacity":f.pointFillOpacity,stroke:f.pointStrokeColor,r:a,"stroke-width":f.pointStrokeWidth,"stroke-dasharray":f.pointStrokeDashArray,"stroke-opacity":f.pointStrokeOpacity}),n.config.chart.dropShadow.enabled){var y=n.config.chart.dropShadow;c.dropShadow(p,y,s)}if(!this.initialAnim||n.globals.dataChanged||n.globals.resized)n.globals.animationEnded=!0;else{var w=n.config.chart.animations.speed;h.animateMarker(p,0,"circle"===f.shape?a:{width:f.width,height:f.height},w,n.globals.easing,(function(){window.setTimeout((function(){h.animationCompleted(p)}),100)}))}if(n.globals.dataChanged&&"circle"===f.shape)if(this.dynamicAnim){var k,A,S,C,L=n.config.chart.animations.dynamicAnimation.speed;null!=(C=n.globals.previousPaths[s]&&n.globals.previousPaths[s][o])&&(k=C.x,A=C.y,S=void 0!==C.r?C.r:a);for(var P=0;Pn.globals.gridHeight+d&&(e=n.globals.gridHeight+d/2),void 0===n.globals.dataLabelsRects[a]&&(n.globals.dataLabelsRects[a]=[]),n.globals.dataLabelsRects[a].push({x:t,y:e,width:c,height:d});var g=n.globals.dataLabelsRects[a].length-2,u=void 0!==n.globals.lastDrawnDataLabelsIndexes[a]?n.globals.lastDrawnDataLabelsIndexes[a][n.globals.lastDrawnDataLabelsIndexes[a].length-1]:0;if(void 0!==n.globals.dataLabelsRects[a][g]){var f=n.globals.dataLabelsRects[a][u];(t>f.x+f.width+2||e>f.y+f.height+2||t+ce.globals.gridWidth+p.textRects.width+10)&&(n="");var x=e.globals.dataLabels.style.colors[r];(("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&e.config.plotOptions.bar.distributed||e.config.dataLabels.distributed)&&(x=e.globals.dataLabels.style.colors[o]),"function"==typeof x&&(x=x({series:e.globals.series,seriesIndex:r,dataPointIndex:o,w:e})),g&&(x=g);var b=d.offsetX,y=d.offsetY;if("bar"!==e.config.chart.type&&"rangeBar"!==e.config.chart.type||(b=0,y=0),p.drawnextLabel){var w=i.drawText({width:100,height:parseInt(d.style.fontSize,10),x:a+b,y:s+y,foreColor:x,textAnchor:l||d.textAnchor,text:n,fontSize:h||d.style.fontSize,fontFamily:d.style.fontFamily,fontWeight:d.style.fontWeight||"normal"});if(w.attr({class:"apexcharts-datalabel",cx:a,cy:s}),d.dropShadow.enabled){var k=d.dropShadow;new v(this.ctx).dropShadow(w,k)}c.add(w),void 0===e.globals.lastDrawnDataLabelsIndexes[r]&&(e.globals.lastDrawnDataLabelsIndexes[r]=[]),e.globals.lastDrawnDataLabelsIndexes[r].push(o)}}}},{key:"addBackgroundToDataLabel",value:function(t,e){var i=this.w,a=i.config.dataLabels.background,s=a.padding,r=a.padding/2,o=e.width,n=e.height,l=new m(this.ctx).drawRect(e.x-s,e.y-r/2,o+2*s,n+r,a.borderRadius,"transparent"===i.config.chart.background?"#fff":i.config.chart.background,a.opacity,a.borderWidth,a.borderColor);a.dropShadow.enabled&&new v(this.ctx).dropShadow(l,a.dropShadow);return l}},{key:"dataLabelsBackground",value:function(){var t=this.w;if("bubble"!==t.config.chart.type)for(var e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-datalabels text"),i=0;i0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w,s=x.clone(a.globals.initialSeries);a.globals.previousPaths=[],i?(a.globals.collapsedSeries=[],a.globals.ancillaryCollapsedSeries=[],a.globals.collapsedSeriesIndices=[],a.globals.ancillaryCollapsedSeriesIndices=[]):s=this.emptyCollapsedSeries(s),a.config.series=s,t&&(e&&(a.globals.zoomed=!1,this.ctx.updateHelpers.revertDefaultAxisMinMax()),this.ctx.updateHelpers._updateSeries(s,a.config.chart.animations.dynamicAnimation.enabled))}},{key:"emptyCollapsedSeries",value:function(t){for(var e=this.w,i=0;i-1&&(t[i].data=[]);return t}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w;e||(e=t.target);var a=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series, .apexcharts-datalabels");if("mousemove"===t.type){var s=parseInt(e.getAttribute("rel"),10)-1,r=null,o=null;i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?(r=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(s,"']")),o=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels[data\\:realIndex='".concat(s,"']"))):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"']")):r=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(s+1,"'] path"));for(var n=0;n=t.from&&a<=t.to&&s[e].classList.remove(i.legendInactiveClass)}}(a.config.plotOptions.heatmap.colorScale.ranges[o])}else"mouseout"===t.type&&r("remove")}},{key:"getActiveConfigSeriesIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=this.w,a=0;if(i.config.series.length>1)for(var s=i.config.series.map((function(t,a){return t.data&&t.data.length>0&&-1===i.globals.collapsedSeriesIndices.indexOf(a)&&(!i.globals.comboCharts||0===e.length||e.length&&e.indexOf(i.config.series[a].type)>-1)?a:-1})),r="asc"===t?0:s.length-1;"asc"===t?r=0;"asc"===t?r++:r--)if(-1!==s[r]){a=s[r];break}return a}},{key:"getBarSeriesIndices",value:function(){return this.w.globals.comboCharts?this.w.config.series.map((function(t,e){return"bar"===t.type||"column"===t.type?e:-1})).filter((function(t){return-1!==t})):this.w.config.series.map((function(t,e){return e}))}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,a){for(var s=e[i].childNodes,r={type:a,paths:[],realIndex:e[i].getAttribute("data:realIndex")},o=0;o0)for(var a=function(e){for(var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-".concat(t.config.chart.type," .apexcharts-series[data\\:realIndex='").concat(e,"'] rect")),a=[],s=function(t){var e=function(e){return i[t].getAttribute(e)},s={x:parseFloat(e("x")),y:parseFloat(e("y")),width:parseFloat(e("width")),height:parseFloat(e("height"))};a.push({rect:s,color:i[t].getAttribute("color")})},r=0;r0)for(var a=0;a0?t:[]}));return t}}]),t}(),N=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[],this.seriesGoals=[],this.coreUtils=new y(this.ctx)}return r(t,[{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new O(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,a=this.w.globals,s="boxPlot"===i.chart.type||"boxPlot"===i.series[e].type,r=0;r=5?this.twoDSeries.push(x.parseNumber(t[e].data[r][4])):this.twoDSeries.push(x.parseNumber(t[e].data[r][1])),a.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var o=new Date(t[e].data[r][0]);o=new Date(o).getTime(),this.twoDSeriesX.push(o)}else this.twoDSeriesX.push(t[e].data[r][0]);for(var n=0;n-1&&(r=this.activeSeriesIndex);for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:this.ctx,a=this.w.config,s=this.w.globals,r=new T(i),o=a.labels.length>0?a.labels.slice():a.xaxis.categories.slice();s.isRangeBar="rangeBar"===a.chart.type&&s.isBarHorizontal,s.hasGroups="category"===a.xaxis.type&&a.xaxis.group.groups.length>0,s.hasGroups&&(s.groups=a.xaxis.group.groups);for(var n=function(){for(var t=0;t0&&(this.twoDSeriesX=o,s.seriesX.push(this.twoDSeriesX))),s.labels.push(this.twoDSeriesX);var h=t[l].data.map((function(t){return x.parseNumber(t)}));s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[l].name?s.seriesNames.push(t[l].name):s.seriesNames.push("series-"+parseInt(l+1,10)),void 0!==t[l].color?s.seriesColors.push(t[l].color):s.seriesColors.push(void 0)}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var a=0;a0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory){if(i.labels=i.labels[0],i.seriesRange.length&&(i.seriesRange.map((function(t){t.forEach((function(t){i.labels.indexOf(t.x)<0&&t.x&&i.labels.push(t.x)}))})),i.labels=i.labels.filter((function(t,e,i){return i.indexOf(t)===e}))),e.xaxis.convertedCatToNumeric)new z(e).convertCatToNumericXaxis(e,this.ctx,i.seriesX[0]),this._generateExternalLabels(t)}else this._generateExternalLabels(t)}},{key:"_generateExternalLabels",value:function(t){var e=this.w.globals,i=this.w.config,a=[];if(e.axisCharts){if(e.series.length>0)if(this.isFormatXY())for(var s=i.series.map((function(t,e){return t.data.filter((function(t,e,i){return i.findIndex((function(e){return e.x===t.x}))===e}))})),r=s.reduce((function(t,e,i,a){return a[t].length>e.length?t:i}),0),o=0;o0&&i<100?t.toFixed(1):t.toFixed(0)}if(e.globals.isBarHorizontal)if(e.globals.maxY-e.globals.minYArr<4)return t.toFixed(1);return t.toFixed(0)}return t},"function"==typeof e.config.tooltip.x.formatter?e.globals.ttKeyFormatter=e.config.tooltip.x.formatter:e.globals.ttKeyFormatter=e.globals.xLabelFormatter,"function"==typeof e.config.xaxis.tooltip.formatter&&(e.globals.xaxisTooltipFormatter=e.config.xaxis.tooltip.formatter),(Array.isArray(e.config.tooltip.y)||void 0!==e.config.tooltip.y.formatter)&&(e.globals.ttVal=e.config.tooltip.y),void 0!==e.config.tooltip.z.formatter&&(e.globals.ttZFormatter=e.config.tooltip.z.formatter),void 0!==e.config.legend.formatter&&(e.globals.legendFormatter=e.config.legend.formatter),e.config.yaxis.forEach((function(i,a){void 0!==i.labels.formatter?e.globals.yLabelFormatters[a]=i.labels.formatter:e.globals.yLabelFormatters[a]=function(s){return e.globals.xyCharts?Array.isArray(s)?s.map((function(e){return t.defaultYFormatter(e,i,a)})):t.defaultYFormatter(s,i,a):s}})),e.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce((function(t,e){return t.length>e.length?t:e}),0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),B=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"getLabel",value:function(t,e,i,a){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"12px",o=!(arguments.length>6&&void 0!==arguments[6])||arguments[6],n=this.w,l=void 0===t[a]?"":t[a],h=l,c=n.globals.xLabelFormatter,d=n.config.xaxis.labels.formatter,g=!1,u=new W(this.ctx),f=l;o&&(h=u.xLabelFormat(c,l,f,{i:a,dateFormatter:new T(this.ctx).formatDate,w:n}),void 0!==d&&(h=d(l,t[a],{i:a,dateFormatter:new T(this.ctx).formatDate,w:n})));var p=function(t){var i=null;return e.forEach((function(t){"month"===t.unit?i="year":"day"===t.unit?i="month":"hour"===t.unit?i="day":"minute"===t.unit&&(i="hour")})),i===t};e.length>0?(g=p(e[a].unit),i=e[a].position,h=e[a].value):"datetime"===n.config.xaxis.type&&void 0===d&&(h=""),void 0===h&&(h=""),h=Array.isArray(h)?h:h.toString();var x=new m(this.ctx),b={};b=n.globals.rotateXLabels&&o?x.getTextRects(h,parseInt(r,10),null,"rotate(".concat(n.config.xaxis.labels.rotate," 0 0)"),!1):x.getTextRects(h,parseInt(r,10));var v=!n.config.xaxis.labels.showDuplicates&&this.ctx.timeScale;return!Array.isArray(h)&&(0===h.indexOf("NaN")||0===h.toLowerCase().indexOf("invalid")||h.toLowerCase().indexOf("infinity")>=0||s.indexOf(h)>=0&&v)&&(h=""),{x:i,text:h,textRect:b,isBold:g}}},{key:"checkLabelBasedOnTickamount",value:function(t,e,i){var a=this.w,s=a.config.xaxis.tickAmount;return"dataPoints"===s&&(s=Math.round(a.globals.gridWidth/120)),s>i||t%Math.round(i/(s+1))==0||(e.text=""),e}},{key:"checkForOverflowingLabels",value:function(t,e,i,a,s){var r=this.w;if(0===t&&r.globals.skipFirstTimelinelabel&&(e.text=""),t===i-1&&r.globals.skipLastTimelinelabel&&(e.text=""),r.config.xaxis.labels.hideOverlappingLabels&&a.length>0){var o=s[s.length-1];e.x0){!0===n.config.yaxis[s].opposite&&(t+=a.width);for(var c=e;c>=0;c--){var d=h+e/10+n.config.yaxis[s].labels.offsetY-1;n.globals.isBarHorizontal&&(d=r*c),"heatmap"===n.config.chart.type&&(d+=r/2);var g=l.drawLine(t+i.offsetX-a.width+a.offsetX,d+a.offsetY,t+i.offsetX+a.offsetX,d+a.offsetY,a.color);o.add(g),h+=r}}}}]),t}(),G=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"scaleSvgNode",value:function(t,e){var i=parseFloat(t.getAttributeNS(null,"width")),a=parseFloat(t.getAttributeNS(null,"height"));t.setAttributeNS(null,"width",i*e),t.setAttributeNS(null,"height",a*e),t.setAttributeNS(null,"viewBox","0 0 "+i+" "+a)}},{key:"fixSvgStringForIe11",value:function(t){if(!x.isIE11())return t.replace(/ /g," ");var e=0,i=t.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g,(function(t){return 2===++e?'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"':t}));return i=(i=i.replace(/xmlns:NS\d+=""/g,"")).replace(/NS\d+:(\w+:\w+=")/g,"$1")}},{key:"getSvgString",value:function(t){null==t&&(t=1);var e=this.w.globals.dom.Paper.svg();if(1!==t){var i=this.w.globals.dom.Paper.node.cloneNode(!0);this.scaleSvgNode(i,t),e=(new XMLSerializer).serializeToString(i)}return this.fixSvgStringForIe11(e)}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.getElementsByClassName("apexcharts-ycrosshairs"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-zoom-rect, .apexcharts-selection-rect");Array.prototype.forEach.call(a,(function(t){t.setAttribute("width",0)})),e&&e[0]&&(e[0].setAttribute("x",-500),e[0].setAttribute("x1",-500),e[0].setAttribute("x2",-500)),i&&i[0]&&(i[0].setAttribute("y",-100),i[0].setAttribute("y1",-100),i[0].setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(t){var e=this;return new Promise((function(i){var a=e.w,s=t?t.scale||t.width/a.globals.svgWidth:1;e.cleanup();var r=document.createElement("canvas");r.width=a.globals.svgWidth*s,r.height=parseInt(a.globals.dom.elWrap.style.height,10)*s;var o="transparent"===a.config.chart.background?"#fff":a.config.chart.background,n=r.getContext("2d");n.fillStyle=o,n.fillRect(0,0,r.width*s,r.height*s);var l=e.getSvgString(s);if(window.canvg&&x.isIE11()){var h=window.canvg.Canvg.fromString(n,l,{ignoreClear:!0,ignoreDimensions:!0});h.start();var c=r.msToBlob();h.stop(),i({blob:c})}else{var d="data:image/svg+xml,"+encodeURIComponent(l),g=new Image;g.crossOrigin="anonymous",g.onload=function(){if(n.drawImage(g,0,0),r.msToBlob){var t=r.msToBlob();i({blob:t})}else{var e=r.toDataURL("image/png");i({imgURI:e})}},g.src=d}}))}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),this.w.config.chart.toolbar.export.svg.filename,".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then((function(e){var i=e.imgURI,a=e.blob;a?navigator.msSaveOrOpenBlob(a,t.w.globals.chartID+".png"):t.triggerDownload(i,t.w.config.chart.toolbar.export.png.filename,".png")}))}},{key:"exportToCSV",value:function(t){var e=this,i=t.series,a=t.fileName,s=t.columnDelimiter,r=void 0===s?",":s,o=t.lineDelimiter,n=void 0===o?"\n":o,l=this.w;i||(i=l.config.series);var h=[],c=[],d="",g=l.globals.series.map((function(t,e){return-1===l.globals.collapsedSeriesIndices.indexOf(e)?t:[]})),f=Math.max.apply(Math,u(i.map((function(t){return t.data?t.data.length:0})))),p=new N(this.ctx),b=new B(this.ctx),v=function(t){var i="";if(l.globals.axisCharts){if("category"===l.config.xaxis.type||l.config.xaxis.convertedCatToNumeric)if(l.globals.isBarHorizontal){var a=l.globals.yLabelFormatters[0],s=new O(e.ctx).getActiveConfigSeriesIndex();i=a(l.globals.labels[t],{seriesIndex:s,dataPointIndex:t,w:l})}else i=b.getLabel(l.globals.labels,l.globals.timescaleLabels,0,t).text;"datetime"===l.config.xaxis.type&&(l.config.xaxis.categories.length?i=l.config.xaxis.categories[t]:l.config.labels.length&&(i=l.config.labels[t]))}else i=l.config.labels[t];return Array.isArray(i)&&(i=i.join(" ")),x.isNumber(i)?i:i.split(r).join("")},m=function(t,e){if(h.length&&0===e&&c.push(h.join(r)),t.data){t.data=t.data.length&&t.data||u(Array(f)).map((function(){return""}));for(var a=0;a=10?l.config.chart.toolbar.export.csv.dateFormatter(s):x.isNumber(s)?s:s.split(r).join("")));for(var o=0;o0&&!s.globals.isBarHorizontal&&(this.xaxisLabels=s.globals.timescaleLabels.slice()),s.config.xaxis.overwriteCategories&&(this.xaxisLabels=s.config.xaxis.overwriteCategories),this.drawnLabels=[],this.drawnLabelsRects=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.isCategoryBarHorizontal="bar"===s.config.chart.type&&s.config.plotOptions.bar.horizontal,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.isCategoryBarHorizontal&&(this.xaxisBorderWidth=s.config.yaxis[0].axisBorder.width.toString()),this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth,10)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth,10),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0]}return r(t,[{key:"drawXaxis",value:function(){var t=this.w,e=new m(this.ctx),i=e.group({class:"apexcharts-xaxis",transform:"translate(".concat(t.config.xaxis.offsetX,", ").concat(t.config.xaxis.offsetY,")")}),a=e.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(t.globals.translateXAxisX,", ").concat(t.globals.translateXAxisY,")")});i.add(a);for(var s=[],r=0;r6&&void 0!==arguments[6]?arguments[6]:{},h=[],c=[],d=this.w,g=l.xaxisFontSize||this.xaxisFontSize,u=l.xaxisFontFamily||this.xaxisFontFamily,f=l.xaxisForeColors||this.xaxisForeColors,p=l.fontWeight||d.config.xaxis.labels.style.fontWeight,x=l.cssClass||d.config.xaxis.labels.style.cssClass,b=d.globals.padHorizontal,v=a.length,m="category"===d.config.xaxis.type?d.globals.dataPoints:v;if(0===m&&v>m&&(m=v),s){var y=m>1?m-1:m;o=d.globals.gridWidth/y,b=b+r(0,o)/2+d.config.xaxis.labels.offsetX}else o=d.globals.gridWidth/m,b=b+r(0,o)+d.config.xaxis.labels.offsetX;for(var w=function(s){var l=b-r(s,o)/2+d.config.xaxis.labels.offsetX;0===s&&1===v&&o/2===b&&1===m&&(l=d.globals.gridWidth/2);var y=n.axesUtils.getLabel(a,d.globals.timescaleLabels,l,s,h,g,t),w=28;d.globals.rotateXLabels&&t&&(w=22),d.config.xaxis.title.text&&"top"===d.config.xaxis.position&&(w+=parseFloat(d.config.xaxis.title.style.fontSize)+2),t||(w=w+parseFloat(g)+(d.globals.xAxisLabelsHeight-d.globals.xAxisGroupLabelsHeight)+(d.globals.rotateXLabels?10:0)),y=void 0!==d.config.xaxis.tickAmount&&"dataPoints"!==d.config.xaxis.tickAmount&&"datetime"!==d.config.xaxis.type?n.axesUtils.checkLabelBasedOnTickamount(s,y,v):n.axesUtils.checkForOverflowingLabels(s,y,v,h,c);if(t&&y.text&&d.globals.xaxisLabelsCount++,d.config.xaxis.labels.show){var k=e.drawText({x:y.x,y:n.offY+d.config.xaxis.labels.offsetY+w-("top"===d.config.xaxis.position?d.globals.xAxisHeight+d.config.xaxis.axisTicks.height-2:0),text:y.text,textAnchor:"middle",fontWeight:y.isBold?600:p,fontSize:g,fontFamily:u,foreColor:Array.isArray(f)?t&&d.config.xaxis.convertedCatToNumeric?f[d.globals.minX+s-1]:f[s]:f,isPlainText:!1,cssClass:(t?"apexcharts-xaxis-label ":"apexcharts-xaxis-group-label ")+x});if(i.add(k),k.on("click",(function(t){if("function"==typeof d.config.chart.events.xAxisLabelClick){var e=Object.assign({},d,{labelIndex:s});d.config.chart.events.xAxisLabelClick(t,n.ctx,e)}})),t){var A=document.createElementNS(d.globals.SVGNS,"title");A.textContent=Array.isArray(y.text)?y.text.join(" "):y.text,k.node.appendChild(A),""!==y.text&&(h.push(y.text),c.push(y))}}sa.globals.gridWidth)){var r=this.offY+a.config.xaxis.axisTicks.offsetY;if(e=e+r+a.config.xaxis.axisTicks.height,"top"===a.config.xaxis.position&&(e=r-a.config.xaxis.axisTicks.height),a.config.xaxis.axisTicks.show){var o=new m(this.ctx).drawLine(t+a.config.xaxis.axisTicks.offsetX,r+a.config.xaxis.offsetY,s+a.config.xaxis.axisTicks.offsetX,e+a.config.xaxis.offsetY,a.config.xaxis.axisTicks.color);i.add(o),o.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,a=t.globals.padHorizontal;if(t.globals.timescaleLabels.length>0)for(var s=0;s0){var h=s[s.length-1].getBBox(),c=s[0].getBBox();h.x<-20&&s[s.length-1].parentNode.removeChild(s[s.length-1]),c.x+c.width>t.globals.gridWidth&&!t.globals.isBarHorizontal&&s[0].parentNode.removeChild(s[0]);for(var d=0;d0&&(this.xaxisLabels=i.globals.timescaleLabels.slice())}return r(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new m(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var a=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),s=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(s),t.add(a),t}},{key:"drawGrid",value:function(){var t=null;return this.w.globals.axisCharts&&(t=this.renderGrid(),this.drawGridArea(t.el)),t}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new m(this.ctx),a=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var s=0;t.config.stroke.width.forEach((function(t){s=Math.max(s,t)})),a=s}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elForecastMask.setAttribute("id","forecastMask".concat(e.cuid)),e.dom.elNonForecastMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elNonForecastMask.setAttribute("id","nonForecastMask".concat(e.cuid));var r=t.config.chart.type,o=0,n=0;("bar"===r||"rangeBar"===r||"candlestick"===r||"boxPlot"===r||t.globals.comboBarCount>0)&&t.globals.isXNumeric&&!t.globals.isBarHorizontal&&(o=t.config.grid.padding.left,n=t.config.grid.padding.right,e.barPadForNumericAxis>o&&(o=e.barPadForNumericAxis,n=e.barPadForNumericAxis)),e.dom.elGridRect=i.drawRect(-a/2-o-2,-a/2,e.gridWidth+a+n+o+4,e.gridHeight+a,0,"#fff");var l=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(2*-l,2*-l,e.gridWidth+4*l,e.gridHeight+4*l,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var h=e.dom.baseEl.querySelector("defs");h.appendChild(e.dom.elGridRectMask),h.appendChild(e.dom.elForecastMask),h.appendChild(e.dom.elNonForecastMask),h.appendChild(e.dom.elGridRectMarkerMask)}},{key:"_drawGridLines",value:function(t){var e=t.i,i=t.x1,a=t.y1,s=t.x2,r=t.y2,o=t.xCount,n=t.parent,l=this.w;if(!(0===e&&l.globals.skipFirstTimelinelabel||e===o-1&&l.globals.skipLastTimelinelabel&&!l.config.xaxis.labels.formatter||"radar"===l.config.chart.type)){l.config.grid.xaxis.lines.show&&this._drawGridLine({i:e,x1:i,y1:a,x2:s,y2:r,xCount:o,parent:n});var h=0;if(l.globals.hasGroups&&"between"===l.config.xaxis.tickPlacement){var c=l.globals.groups;if(c){for(var d=0,g=0;d2));s++);return!t.globals.isBarHorizontal||this.isRangeBar?(i=this.xaxisLabels.length,this.isRangeBar&&(a=t.globals.labels.length,t.config.xaxis.tickAmount&&t.config.xaxis.labels.formatter&&(i=t.config.xaxis.tickAmount)),this._drawXYLines({xCount:i,tickAmount:a})):(i=a,a=t.globals.xTickAmount,this._drawInvertedXYLines({xCount:i,tickAmount:a})),this.drawGridBands(i,a),{el:this.elg,elGridBorders:this.elGridBorders,xAxisTickWidth:t.globals.gridWidth/i}}},{key:"drawGridBands",value:function(t,e){var i=this.w;if(void 0!==i.config.grid.row.colors&&i.config.grid.row.colors.length>0)for(var a=0,s=i.globals.gridHeight/e,r=i.globals.gridWidth,o=0,n=0;o=i.config.grid.row.colors.length&&(n=0),this._drawGridBandRect({c:n,x1:0,y1:a,x2:r,y2:s,type:"row"}),a+=i.globals.gridHeight/e;if(void 0!==i.config.grid.column.colors&&i.config.grid.column.colors.length>0)for(var l=i.globals.isBarHorizontal||"category"!==i.config.xaxis.type&&!i.config.xaxis.convertedCatToNumeric?t:t-1,h=i.globals.padHorizontal,c=i.globals.padHorizontal+i.globals.gridWidth/l,d=i.globals.gridHeight,g=0,u=0;g=i.config.grid.column.colors.length&&(u=0),this._drawGridBandRect({c:u,x1:h,y1:0,x2:c,y2:d,type:"column"}),h+=i.globals.gridWidth/l}}]),t}(),_=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"niceScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4?arguments[4]:void 0,r=this.w,o=Math.abs(e-t);if("dataPoints"===(i=this._adjustTicksForSmallRange(i,a,o))&&(i=r.globals.dataPoints-1),t===Number.MIN_VALUE&&0===e||!x.isNumber(t)&&!x.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE){t=0,e=i;var n=this.linearScale(t,e,i);return n}t>e?(console.warn("axis.min cannot be greater than axis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var l=[];o<1&&s&&("candlestick"===r.config.chart.type||"candlestick"===r.config.series[a].type||"boxPlot"===r.config.chart.type||"boxPlot"===r.config.series[a].type||r.globals.isRangeData)&&(e*=1.01);var h=i+1;h<2?h=2:h>2&&(h-=2);var c=o/h,d=Math.floor(x.log10(c)),g=Math.pow(10,d),u=Math.round(c/g);u<1&&(u=1);var f=u*g,p=f*Math.floor(t/f),b=f*Math.ceil(e/f),v=p;if(s&&o>2){for(;l.push(v),!((v+=f)>b););return{result:l,niceMin:l[0],niceMax:l[l.length-1]}}var m=t;(l=[]).push(m);for(var y=Math.abs(e-t)/i,w=0;w<=i;w++)m+=y,l.push(m);return l[l.length-2]>=e&&l.pop(),{result:l,niceMin:l[0],niceMax:l[l.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=arguments.length>3?arguments[3]:void 0,s=Math.abs(e-t);"dataPoints"===(i=this._adjustTicksForSmallRange(i,a,s))&&(i=this.w.globals.dataPoints-1);var r=s/i;i===Number.MAX_VALUE&&(i=10,r=1);for(var o=[],n=t;i>=0;)o.push(n),n+=r,i-=1;return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"logarithmicScaleNice",value:function(t,e,i){e<=0&&(e=Math.max(t,i)),t<=0&&(t=Math.min(e,i));for(var a=[],s=Math.ceil(Math.log(e)/Math.log(i)+1),r=Math.floor(Math.log(t)/Math.log(i));r5)a.allSeriesCollapsed=!1,a.yAxisScale[t]=this.logarithmicScale(e,i,r.logBase),a.yAxisScale[t]=r.forceNiceScale?this.logarithmicScaleNice(e,i,r.logBase):this.logarithmicScale(e,i,r.logBase);else if(i!==-Number.MAX_VALUE&&x.isNumber(i))if(a.allSeriesCollapsed=!1,void 0===r.min&&void 0===r.max||r.forceNiceScale){var n=void 0===s.yaxis[t].max&&void 0===s.yaxis[t].min||s.yaxis[t].forceNiceScale;a.yAxisScale[t]=this.niceScale(e,i,r.tickAmount?r.tickAmount:o<5&&o>1?o+1:5,t,n)}else a.yAxisScale[t]=this.linearScale(e,i,r.tickAmount,t);else a.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setXScale",value:function(t,e){var i=this.w,a=i.globals,s=i.config.xaxis,r=Math.abs(e-t);return e!==-Number.MAX_VALUE&&x.isNumber(e)?a.xAxisScale=this.linearScale(t,e,s.tickAmount?s.tickAmount:r<5&&r>1?r+1:5,0):a.xAxisScale=this.linearScale(0,5,5),a.xAxisScale}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,a=e.minYArr.concat([]),s=e.maxYArr.concat([]),r=[];i.yaxis.forEach((function(e,o){var n=o;i.series.forEach((function(t,i){t.name===e.seriesName&&(n=i,o!==i?r.push({index:i,similarIndex:o,alreadyExists:!0}):r.push({index:i}))}));var l=a[n],h=s[n];t.setYScaleForIndex(o,l,h)})),this.sameScaleInMultipleAxes(a,s,r)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var a=this,s=this.w.config,r=this.w.globals,o=[];i.forEach((function(t){t.alreadyExists&&(void 0===o[t.index]&&(o[t.index]=[]),o[t.index].push(t.index),o[t.index].push(t.similarIndex))})),r.yAxisSameScaleIndices=o,o.forEach((function(t,e){o.forEach((function(i,a){var s,r;e!==a&&(s=t,r=i,s.filter((function(t){return-1!==r.indexOf(t)}))).length>0&&(o[e]=o[e].concat(o[a]))}))}));var n=o.map((function(t){return t.filter((function(e,i){return t.indexOf(e)===i}))})).map((function(t){return t.sort()}));o=o.filter((function(t){return!!t}));var l=n.slice(),h=l.map((function(t){return JSON.stringify(t)}));l=l.filter((function(t,e){return h.indexOf(JSON.stringify(t))===e}));var c=[],d=[];t.forEach((function(t,i){l.forEach((function(a,s){a.indexOf(i)>-1&&(void 0===c[s]&&(c[s]=[],d[s]=[]),c[s].push({key:i,value:t}),d[s].push({key:i,value:e[i]}))}))}));var g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach((function(t,e){t.forEach((function(t,i){g[e]=Math.min(t.value,g[e])}))})),d.forEach((function(t,e){t.forEach((function(t,i){u[e]=Math.max(t.value,u[e])}))})),t.forEach((function(t,e){d.forEach((function(t,i){var o=g[i],n=u[i];s.chart.stacked&&(n=0,t.forEach((function(t,e){t.value!==-Number.MAX_VALUE&&(n+=t.value),o!==Number.MIN_VALUE&&(o+=c[i][e].value)}))),t.forEach((function(i,l){t[l].key===e&&(void 0!==s.yaxis[e].min&&(o="function"==typeof s.yaxis[e].min?s.yaxis[e].min(r.minY):s.yaxis[e].min),void 0!==s.yaxis[e].max&&(n="function"==typeof s.yaxis[e].max?s.yaxis[e].max(r.maxY):s.yaxis[e].max),a.setYScaleForIndex(e,o,n))}))}))}))}},{key:"autoScaleY",value:function(t,e,i){t||(t=this);var a=t.w;if(a.globals.isMultipleYAxis||a.globals.collapsedSeries.length)return console.warn("autoScaleYaxis is not supported in a multi-yaxis chart."),e;var s=a.globals.seriesX[0],r=a.config.chart.stacked;return e.forEach((function(t,o){for(var n=0,l=0;l=i.xaxis.min){n=l;break}var h,c,d=a.globals.minYArr[o],g=a.globals.maxYArr[o],u=a.globals.stackedSeriesTotals;a.globals.series.forEach((function(o,l){var f=o[n];r?(f=u[n],h=c=f,u.forEach((function(t,e){s[e]<=i.xaxis.max&&s[e]>=i.xaxis.min&&(t>c&&null!==t&&(c=t),o[e]=i.xaxis.min){var r=t,o=t;a.globals.series.forEach((function(i,a){null!==t&&(r=Math.min(i[e],r),o=Math.max(i[e],o))})),o>c&&null!==o&&(c=o),rd&&(h=d),e.length>1?(e[l].min=void 0===t.min?h:t.min,e[l].max=void 0===t.max?c:t.max):(e[0].min=void 0===t.min?h:t.min,e[0].max=void 0===t.max?c:t.max)}))})),e}}]),t}(),U=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.scales=new _(e)}return r(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w.config,r=this.w.globals,o=-Number.MAX_VALUE,n=Number.MIN_VALUE;null===a&&(a=t+1);var l=r.series,h=l,c=l;"candlestick"===s.chart.type?(h=r.seriesCandleL,c=r.seriesCandleH):"boxPlot"===s.chart.type?(h=r.seriesCandleO,c=r.seriesCandleC):r.isRangeData&&(h=r.seriesRangeStart,c=r.seriesRangeEnd);for(var d=t;dh[d][g]&&h[d][g]<0&&(n=h[d][g])):r.hasNullValues=!0}}return"rangeBar"===s.chart.type&&r.seriesRangeStart.length&&r.isBarHorizontal&&(n=e),"bar"===s.chart.type&&(n<0&&o<0&&(o=0),n===Number.MIN_VALUE&&(n=0)),{minY:n,maxY:o,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var a=0;a=0&&i<=10||void 0!==e.yaxis[0].min||void 0!==e.yaxis[0].max)&&(o=0),t.minY=i-5*o/100,i>0&&t.minY<0&&(t.minY=0),t.maxY=t.maxY+5*o/100}if(e.yaxis.forEach((function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.isMultipleYAxis?t.maxYArr[i]:t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.isMultipleYAxis?t.minYArr[i]===Number.MIN_VALUE?0:t.minYArr[i]:t.minY)),t.minY=t.minYArr[i])})),t.isBarHorizontal){["min","max"].forEach((function(i){void 0!==e.xaxis[i]&&"number"==typeof e.xaxis[i]&&("min"===i?t.minY=e.xaxis[i]:t.maxY=e.xaxis[i])}))}return t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach((function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax}))):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr,yAxisScale:t.yAxisScale}}},{key:"setXRange",value:function(){var t=this.w.globals,e=this.w.config,i="numeric"===e.xaxis.type||"datetime"===e.xaxis.type||"category"===e.xaxis.type&&!t.noLabelsProvided||t.noLabelsProvided||t.isXNumeric;if(t.isXNumeric&&function(){for(var e=0;et.dataPoints&&0!==t.dataPoints&&(a=t.dataPoints-1)):"dataPoints"===e.xaxis.tickAmount?(t.series.length>1&&(a=t.series[t.maxValsInArrayIndex].length-1),t.isXNumeric&&(a=t.maxX-t.minX-1)):a=e.xaxis.tickAmount,t.xTickAmount=a,void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxX=e.xaxis.max),void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minX=e.xaxis.min),void 0!==e.xaxis.range&&(t.minX=t.maxX-e.xaxis.range),t.minX!==Number.MAX_VALUE&&t.maxX!==-Number.MAX_VALUE)if(e.xaxis.convertedCatToNumeric&&!t.dataFormatXNumeric){for(var s=[],r=t.minX-1;r0&&(t.xAxisScale=this.scales.linearScale(1,t.labels.length,a-1),t.seriesX=t.labels.slice());i&&(t.labels=t.xAxisScale.result.slice())}return t.isBarHorizontal&&t.labels.length&&(t.xTickAmount=t.labels.length),this._handleSingleDataPoint(),this._getMinXDiff(),{minX:t.minX,maxX:t.maxX}}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e0){var s=e-a[i-1];s>0&&(t.minXDiff=Math.min(s,t.minXDiff))}})),1!==t.dataPoints&&t.minXDiff!==Number.MAX_VALUE||(t.minXDiff=.5)}))}},{key:"_setStackedMinMax",value:function(){var t=this.w.globals,e=[],i=[];if(t.series.length)for(var a=0;a0?s=s+parseFloat(t.series[o][a])+1e-4:r+=parseFloat(t.series[o][a])),o===t.series.length-1&&(e.push(s),i.push(r));for(var n=0;n=0;b--)x(b);if(void 0!==i.config.yaxis[t].title.text){var v=a.group({class:"apexcharts-yaxis-title"}),y=0;i.config.yaxis[t].opposite&&(y=i.globals.translateYAxisX[t]);var w=a.drawText({x:y,y:i.globals.gridHeight/2+i.globals.translateY+i.config.yaxis[t].title.offsetY,text:i.config.yaxis[t].title.text,textAnchor:"end",foreColor:i.config.yaxis[t].title.style.color,fontSize:i.config.yaxis[t].title.style.fontSize,fontWeight:i.config.yaxis[t].title.style.fontWeight,fontFamily:i.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+i.config.yaxis[t].title.style.cssClass});v.add(w),l.add(v)}var k=i.config.yaxis[t].axisBorder,A=31+k.offsetX;if(i.config.yaxis[t].opposite&&(A=-31-k.offsetX),k.show){var S=a.drawLine(A,i.globals.translateY+k.offsetY-2,A,i.globals.gridHeight+i.globals.translateY+k.offsetY+2,k.color,0,k.width);l.add(S)}return i.config.yaxis[t].axisTicks.show&&this.axesUtils.drawYAxisTicks(A,c,k,i.config.yaxis[t].axisTicks,t,d,l),l}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),s=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});a.add(s);var r=e.globals.yAxisScale[t].result.length-1,o=e.globals.gridWidth/r+.1,n=o+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.timescaleLabels;c.length>0&&(this.xaxisLabels=c.slice(),r=(h=c.slice()).length),h=this.axesUtils.checkForReversedLabels(t,h);var d=c.length;if(e.config.xaxis.labels.show)for(var g=d?0:r;d?g=0;d?g++:g--){var u=h[g];u=l(u,g,e);var f=e.globals.gridWidth+e.globals.padHorizontal-(n-o+e.config.xaxis.labels.offsetX);if(c.length){var p=this.axesUtils.getLabel(h,c,f,g,this.drawnLabels,this.xaxisFontSize);f=p.x,u=p.text,this.drawnLabels.push(p.text),0===g&&e.globals.skipFirstTimelinelabel&&(u=""),g===h.length-1&&e.globals.skipLastTimelinelabel&&(u="")}var x=i.drawText({x:f,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30-("top"===e.config.xaxis.position?e.globals.xAxisHeight+e.config.xaxis.axisTicks.height-2:0),text:u,textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,fontWeight:e.config.xaxis.labels.style.fontWeight,isPlainText:!1,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});s.add(x),x.tspan(u);var b=document.createElementNS(e.globals.SVGNS,"title");b.textContent=u,x.node.appendChild(b),n+=o}return this.inversedYAxisTitleText(a),this.inversedYAxisBorder(a),a}},{key:"inversedYAxisBorder",value:function(t){var e=this.w,i=new m(this.ctx),a=e.config.xaxis.axisBorder;if(a.show){var s=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(s-=15);var r=i.drawLine(e.globals.padHorizontal+s+a.offsetX,this.xAxisoffX,e.globals.gridWidth,this.xAxisoffX,a.color,0,a.height);this.elgrid&&this.elgrid.elGridBorders?this.elgrid.elGridBorders.add(r):t.add(r)}}},{key:"inversedYAxisTitleText",value:function(t){var e=this.w,i=new m(this.ctx);if(void 0!==e.config.xaxis.title.text){var a=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),s=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.xAxisoffX+parseFloat(this.xaxisFontSize)+parseFloat(e.config.xaxis.title.style.fontSize)+e.config.xaxis.title.offsetY+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,fontWeight:e.config.xaxis.title.style.fontWeight,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});a.add(s),t.add(a)}}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,a=new m(this.ctx),s={width:0,height:0},r={width:0,height:0},o=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==o&&(s=o.getBoundingClientRect());var n=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==n&&(r=n.getBoundingClientRect()),null!==n){var l=this.xPaddingForYAxisTitle(t,s,r,e);n.setAttribute("x",l.xPos-(e?10:0))}if(null!==n){var h=a.rotateAroundCenter(n);n.setAttribute("transform","rotate(".concat(e?-1*i.config.yaxis[t].title.rotate:i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,a){var s=this.w,r=0,o=0,n=10;return void 0===s.config.yaxis[t].title.text||t<0?{xPos:o,padd:0}:(a?(o=e.width+s.config.yaxis[t].title.offsetX+i.width/2+n/2,0===(r+=1)&&(o-=n/2)):(o=-1*e.width+s.config.yaxis[t].title.offsetX+n/2+i.width/2,s.globals.isBarHorizontal&&(n=25,o=-1*e.width-s.config.yaxis[t].title.offsetX-n)),{xPos:o,padd:n})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,a=0,s=0,r=18,o=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map((function(n,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!n.show||n.floating||0===t[l].width,c=t[l].width+e[l].width;n.opposite?i.globals.isBarHorizontal?(s=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=s-n.labels.offsetX):(s=i.globals.gridWidth+i.globals.translateX+o,h||(o=o+c+20),i.globals.translateYAxisX[l]=s-n.labels.offsetX+20):(a=i.globals.translateX-r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a+n.labels.offsetX)}))}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.getElementsByClassName("apexcharts-yaxis");(e=x.listToArray(e)).forEach((function(e,i){var a=t.config.yaxis[i];if(a&&void 0!==a.labels.align){var s=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));r=x.listToArray(r);var o=s.getBoundingClientRect();"left"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","start")})),a.opposite||s.setAttribute("transform","translate(-".concat(o.width,", 0)"))):"center"===a.labels.align?(r.forEach((function(t,e){t.setAttribute("text-anchor","middle")})),s.setAttribute("transform","translate(".concat(o.width/2*(a.opposite?1:-1),", 0)"))):"right"===a.labels.align&&(r.forEach((function(t,e){t.setAttribute("text-anchor","end")})),a.opposite&&s.setAttribute("transform","translate(".concat(o.width,", 0)")))}}))}}]),t}(),Z=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.documentEvent=x.bind(this.documentEvent,this)}return r(t,[{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var a=i.globals.events[t].indexOf(e);-1!==a&&i.globals.events[t].splice(a,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var a=i.globals.events[t],s=a.length,r=0;r0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter((function(e){return e.name===t}))[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var a=x.extend(C,i);this.w.globals.locale=a.options}}]),t}(),J=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawAxis",value:function(t,e){var i,a,s=this.w.globals,r=this.w.config,o=new V(this.ctx,e),n=new q(this.ctx,e);s.axisCharts&&"radar"!==t&&(s.isBarHorizontal?(a=n.drawYaxisInversed(0),i=o.drawXaxisInversed(0),s.dom.elGraphical.add(i),s.dom.elGraphical.add(a)):(i=o.drawXaxis(),s.dom.elGraphical.add(i),r.yaxis.map((function(t,e){-1===s.ignoreYAxisIndexes.indexOf(e)&&(a=n.drawYaxis(e),s.dom.Paper.add(a))}))))}}]),t}(),Q=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=new v(this.ctx),a=t.config.xaxis.crosshairs.fill.gradient,s=t.config.xaxis.crosshairs.dropShadow,r=t.config.xaxis.crosshairs.fill.type,o=a.colorFrom,n=a.colorTo,l=a.opacityFrom,h=a.opacityTo,c=a.stops,d=s.enabled,g=s.left,u=s.top,f=s.blur,p=s.color,b=s.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===r&&(y=e.drawGradient("vertical",o,n,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine());var k=t.globals.gridHeight;(!x.isNumber(k)||k<0)&&(k=0);var A=t.config.xaxis.crosshairs.width;(!x.isNumber(A)||A<0)&&(A=0),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:k,width:A,height:k,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),d&&(w=i.dropShadow(w,{left:g,top:u,blur:f,color:p,opacity:b})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new m(this.ctx),i=t.config.yaxis[0].crosshairs,a=t.globals.barPadForNumericAxis;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var r=e.drawLine(-a,0,t.globals.gridWidth+a,0,i.stroke.color,0,0);r.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(r)}}]),t}(),K=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,a=i.config;if(0!==a.responsive.length){var s=a.responsive.slice();s.sort((function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0})).reverse();var r=new X({}),o=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=s[0].breakpoint,o=window.innerWidth>0?window.innerWidth:screen.width;if(o>a){var n=y.extendArrayProps(r,i.globals.initialConfig,i);t=x.extend(n,t),t=x.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l0&&"function"==typeof e.config.colors[0]&&(e.globals.colors=e.config.series.map((function(i,a){var s=e.config.colors[a];return s||(s=e.config.colors[0]),"function"==typeof s?(t.isColorFn=!0,s({value:e.globals.axisCharts?e.globals.series[a][0]?e.globals.series[a][0]:0:e.globals.series[a],seriesIndex:a,dataPointIndex:a,w:e})):s})))),e.globals.seriesColors.map((function(t,i){t&&(e.globals.colors[i]=t)})),e.config.theme.monochrome.enabled){var a=[],s=e.globals.series.length;(this.isBarDistributed||this.isHeatmapDistributed)&&(s=e.globals.series[0].length*e.globals.series.length);for(var r=e.config.theme.monochrome.color,o=1/(s/e.config.theme.monochrome.shadeIntensity),n=e.config.theme.monochrome.shadeTo,l=0,h=0;h2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=e||a.globals.series.length;if(null===i&&(i=this.isBarDistributed||this.isHeatmapDistributed||"heatmap"===a.config.chart.type&&a.config.plotOptions.heatmap.colorScale.inverse),i&&a.globals.series.length&&(s=a.globals.series[a.globals.maxValsInArrayIndex].length*a.globals.series.length),t.lengtht.globals.svgWidth&&(this.dCtx.lgRect.width=t.globals.svgWidth/1.5),this.dCtx.lgRect}},{key:"getLargestStringFromMultiArr",value:function(t,e){var i=t;if(this.w.globals.isMultiLineX){var a=e.map((function(t,e){return Array.isArray(t)?t.length:1})),s=Math.max.apply(Math,u(a));i=e[a.indexOf(s)]}return i}}]),t}(),at=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.config.xaxis.convertedCatToNumeric&&0===i.length&&(i=e.globals.categoryLabels),e.globals.timescaleLabels.length>0){var a=this.getxAxisTimeScaleLabelsCoords();t={width:a.width,height:a.height},e.globals.rotateXLabels=!1}else{this.dCtx.lgWidthForSideLegends="left"!==e.config.legend.position&&"right"!==e.config.legend.position||e.config.legend.floating?0:this.dCtx.lgRect.width;var s=e.globals.xLabelFormatter,r=x.getLargestStringFromArr(i),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,i);e.globals.isBarHorizontal&&(o=r=e.globals.yAxisScale[0].result.reduce((function(t,e){return t.length>e.length?t:e}),0));var n=new W(this.dCtx.ctx),l=r;r=n.xLabelFormat(s,r,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),o=n.xLabelFormat(s,o,l,{i:void 0,dateFormatter:new T(this.dCtx.ctx).formatDate,w:e}),(e.config.xaxis.convertedCatToNumeric&&void 0===r||""===String(r).trim())&&(o=r="1");var h=new m(this.dCtx.ctx),c=h.getTextRects(r,e.config.xaxis.labels.style.fontSize),d=c;if(r!==o&&(d=h.getTextRects(o,e.config.xaxis.labels.style.fontSize)),(t={width:c.width>=d.width?c.width:d.width,height:c.height>=d.height?c.height:d.height}).width*i.length>e.globals.svgWidth-this.dCtx.lgWidthForSideLegends-this.dCtx.yAxisWidth-this.dCtx.gridPad.left-this.dCtx.gridPad.right&&0!==e.config.xaxis.labels.rotate||e.config.xaxis.labels.rotateAlways){if(!e.globals.isBarHorizontal){e.globals.rotateXLabels=!0;var g=function(t){return h.getTextRects(t,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1)};c=g(r),r!==o&&(d=g(o)),t.height=(c.height>d.height?c.height:d.height)/1.5,t.width=c.width>d.width?c.width:d.width}}else e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getxAxisGroupLabelsCoords",value:function(){var t,e=this.w;if(!e.globals.hasGroups)return{width:0,height:0};var i,a=(null===(t=e.config.xaxis.group.style)||void 0===t?void 0:t.fontSize)||e.config.xaxis.labels.style.fontSize,s=e.globals.groups.map((function(t){return t.title})),r=x.getLargestStringFromArr(s),o=this.dCtx.dimHelpers.getLargestStringFromMultiArr(r,s),n=new m(this.dCtx.ctx),l=n.getTextRects(r,a),h=l;return r!==o&&(h=n.getTextRects(o,a)),i={width:l.width>=h.width?l.width:h.width,height:l.height>=h.height?l.height:h.height},e.config.xaxis.labels.show||(i={width:0,height:0}),{width:i.width,height:i.height}}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var a=new m(this.dCtx.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=a.width,i=a.height}return{width:e,height:i}}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.dCtx.timescaleLabels=e.globals.timescaleLabels.slice();var i=this.dCtx.timescaleLabels.map((function(t){return t.value})),a=i.reduce((function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e}),0);return 1.05*(t=new m(this.dCtx.ctx).getTextRects(a,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w,a=i.globals,s=i.config,r=s.xaxis.type,o=t.width;a.skipLastTimelinelabel=!1,a.skipFirstTimelinelabel=!1;var n=i.config.yaxis[0].opposite&&i.globals.isBarHorizontal,l=function(t,n){(function(t){return-1!==a.collapsedSeriesIndices.indexOf(t)})(n)||function(t){if(e.dCtx.timescaleLabels&&e.dCtx.timescaleLabels.length){var n=e.dCtx.timescaleLabels[0],l=e.dCtx.timescaleLabels[e.dCtx.timescaleLabels.length-1].position+o/1.75-e.dCtx.yAxisWidthRight,h=n.position-o/1.75+e.dCtx.yAxisWidthLeft,c="right"===i.config.legend.position&&e.dCtx.lgRect.width>0?e.dCtx.lgRect.width:0;l>a.svgWidth-a.translateX-c&&(a.skipLastTimelinelabel=!0),h<-(t.show&&!t.floating||"bar"!==s.chart.type&&"candlestick"!==s.chart.type&&"rangeBar"!==s.chart.type&&"boxPlot"!==s.chart.type?10:o/1.75)&&(a.skipFirstTimelinelabel=!0)}else"datetime"===r?e.dCtx.gridPad.rightString(n.niceMax).length?c:n.niceMax,g=h(d,{seriesIndex:o,dataPointIndex:-1,w:e}),u=g;if(void 0!==g&&0!==g.length||(g=d),e.globals.isBarHorizontal){a=0;var f=e.globals.labels.slice();g=h(g=x.getLargestStringFromArr(f),{seriesIndex:o,dataPointIndex:-1,w:e}),u=t.dCtx.dimHelpers.getLargestStringFromMultiArr(g,f)}var p=new m(t.dCtx.ctx),b="rotate(".concat(r.labels.rotate," 0 0)"),v=p.getTextRects(g,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1),y=v;g!==u&&(y=p.getTextRects(u,r.labels.style.fontSize,r.labels.style.fontFamily,b,!1)),i.push({width:(l>y.width||l>v.width?l:y.width>v.width?y.width:v.width)+a,height:y.height>v.height?y.height:v.height})}else i.push({width:0,height:0})})),i}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map((function(e,a){if(e.show&&void 0!==e.title.text){var s=new m(t.dCtx.ctx),r="rotate(".concat(e.title.rotate," 0 0)"),o=s.getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,r,!1);i.push({width:o.width,height:o.height})}else i.push({width:0,height:0})})),i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=0,a=0,s=t.globals.yAxisScale.length>1?10:0,r=new B(this.dCtx.ctx),o=function(o,n){var l=t.config.yaxis[n].floating,h=0;o.width>0&&!l?(h=o.width+s,function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1}(n)&&(h=h-o.width-s)):h=l||r.isYAxisHidden(n)?0:5,t.config.yaxis[n].opposite?a+=h:i+=h,e+=h};return t.globals.yLabelsCoords.map((function(t,e){o(t,e)})),t.globals.yTitleCoords.map((function(t,e){o(t,e)})),t.globals.isBarHorizontal&&!t.config.yaxis[0].floating&&(e=t.globals.yLabelsCoords[0].width+t.globals.yTitleCoords[0].width+15),this.dCtx.yAxisWidthLeft=i,this.dCtx.yAxisWidthRight=a,e}}]),t}(),rt=function(){function t(e){a(this,t),this.w=e.w,this.dCtx=e}return r(t,[{key:"gridPadForColumnsInNumericAxis",value:function(t){var e=this.w;if(e.globals.noData||e.globals.allSeriesCollapsed)return 0;var i=function(t){return"bar"===t||"rangeBar"===t||"candlestick"===t||"boxPlot"===t},a=e.config.chart.type,s=0,r=i(a)?e.config.series.length:1;if(e.globals.comboBarCount>0&&(r=e.globals.comboBarCount),e.globals.collapsedSeries.forEach((function(t){i(t.type)&&(r-=1)})),e.config.chart.stacked&&(r=1),(i(a)||e.globals.comboBarCount>0)&&e.globals.isXNumeric&&!e.globals.isBarHorizontal&&r>0){var o,n,l=Math.abs(e.globals.initialMaxX-e.globals.initialMinX);l<=3&&(l=e.globals.dataPoints),o=l/t,e.globals.minXDiff&&e.globals.minXDiff/o>0&&(n=e.globals.minXDiff/o),n>t/2&&(n/=2),(s=n/r*parseInt(e.config.plotOptions.bar.columnWidth,10)/100)<1&&(s=1),s=s/(r>1?1:1.5)+5,e.globals.barPadForNumericAxis=s}return s}},{key:"gridPadFortitleSubtitle",value:function(){var t=this,e=this.w,i=e.globals,a=this.dCtx.isSparkline||!e.globals.axisCharts?0:10;["title","subtitle"].forEach((function(i){void 0!==e.config[i].text?a+=e.config[i].margin:a+=t.dCtx.isSparkline||!e.globals.axisCharts?0:5})),!e.config.legend.show||"bottom"!==e.config.legend.position||e.config.legend.floating||e.globals.axisCharts||(a+=10);var s=this.dCtx.dimHelpers.getTitleSubtitleCoords("title"),r=this.dCtx.dimHelpers.getTitleSubtitleCoords("subtitle");i.gridHeight=i.gridHeight-s.height-r.height-a,i.translateY=i.translateY+s.height+r.height+a}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w,a=new B(this.dCtx.ctx);i.config.yaxis.map((function(s,r){-1!==i.globals.ignoreYAxisIndexes.indexOf(r)||s.floating||a.isYAxisHidden(r)||(s.opposite&&(i.globals.translateX=i.globals.translateX-(e[r].width+t[r].width)-parseInt(i.config.yaxis[r].labels.style.fontSize,10)/1.2-12),i.globals.translateX<2&&(i.globals.translateX=2))}))}}]),t}(),ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.lgRect={},this.yAxisWidth=0,this.yAxisWidthLeft=0,this.yAxisWidthRight=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.dimHelpers=new it(this),this.dimYAxis=new st(this),this.dimXAxis=new at(this),this.dimGrid=new rt(this),this.lgWidthForSideLegends=0,this.gridPad=this.w.config.grid.padding,this.xPadRight=0,this.xPadLeft=0}return r(t,[{key:"plotCoords",value:function(){var t=this,e=this.w,i=e.globals;this.lgRect=this.dimHelpers.getLegendsRect(),this.isSparkline&&(e.config.markers.discrete.length>0||e.config.markers.size>0)&&Object.entries(this.gridPad).forEach((function(e){var i=g(e,2),a=i[0],s=i[1];t.gridPad[a]=Math.max(s,t.w.globals.markers.largestSize/1.5)})),i.axisCharts?this.setDimensionsForAxisCharts():this.setDimensionsForNonAxisCharts(),this.dimGrid.gridPadFortitleSubtitle(),i.gridHeight=i.gridHeight-this.gridPad.top-this.gridPad.bottom,i.gridWidth=i.gridWidth-this.gridPad.left-this.gridPad.right-this.xPadRight-this.xPadLeft;var a=this.dimGrid.gridPadForColumnsInNumericAxis(i.gridWidth);i.gridWidth=i.gridWidth-2*a,i.translateX=i.translateX+this.gridPad.left+this.xPadLeft+(a>0?a+4:0),i.translateY=i.translateY+this.gridPad.top}},{key:"setDimensionsForAxisCharts",value:function(){var t=this,e=this.w,i=e.globals,a=this.dimYAxis.getyAxisLabelsCoords(),s=this.dimYAxis.getyAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map((function(t,i){e.globals.yLabelsCoords.push({width:a[i].width,index:i}),e.globals.yTitleCoords.push({width:s[i].width,index:i})})),this.yAxisWidth=this.dimYAxis.getTotalYAxisWidth();var r=this.dimXAxis.getxAxisLabelsCoords(),o=this.dimXAxis.getxAxisGroupLabelsCoords(),n=this.dimXAxis.getxAxisTitleCoords();this.conditionalChecksForAxisCoords(r,n,o),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize,10)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var l=this.yAxisWidth,h=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight-n.height,i.xAxisGroupLabelsHeight=i.xAxisLabelsHeight-r.height,i.xAxisLabelsWidth=this.xAxisWidth,i.xAxisHeight=this.xAxisHeight;var c=10;("radar"===e.config.chart.type||this.isSparkline)&&(l=0,h=i.goldenPadding),this.isSparkline&&(this.lgRect={height:0,width:0}),(this.isSparkline||"treemap"===e.config.chart.type)&&(l=0,h=0,c=0),this.isSparkline||this.dimXAxis.additionalPaddingXLabels(r);var d=function(){i.translateX=l,i.gridHeight=i.svgHeight-t.lgRect.height-h-(t.isSparkline||"treemap"===e.config.chart.type?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-l};switch("top"===e.config.xaxis.position&&(c=i.xAxisHeight-e.config.xaxis.axisTicks.height-5),e.config.legend.position){case"bottom":i.translateY=c,d();break;case"top":i.translateY=this.lgRect.height+c,d();break;case"left":i.translateY=c,i.translateX=this.lgRect.width+l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l;break;case"right":i.translateY=c,i.translateX=l,i.gridHeight=i.svgHeight-h-12,i.gridWidth=i.svgWidth-this.lgRect.width-l-5;break;default:throw new Error("Legend position not supported")}this.dimGrid.setGridXPosForDualYAxis(s,a),new q(this.ctx).setYAxisXPosition(a,s)}},{key:"setDimensionsForNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=t.config,a=0;t.config.legend.show&&!t.config.legend.floating&&(a=20);var s="pie"===i.chart.type||"polarArea"===i.chart.type||"donut"===i.chart.type?"pie":"radialBar",r=i.plotOptions[s].offsetY,o=i.plotOptions[s].offsetX;if(!i.legend.show||i.legend.floating)return e.gridHeight=e.svgHeight-i.grid.padding.left+i.grid.padding.right,e.gridWidth=e.gridHeight,e.translateY=r,void(e.translateX=o+(e.svgWidth-e.gridWidth)/2);switch(i.legend.position){case"bottom":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=r-10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"top":e.gridHeight=e.svgHeight-this.lgRect.height-e.goldenPadding,e.gridWidth=e.svgWidth,e.translateY=this.lgRect.height+r+10,e.translateX=o+(e.svgWidth-e.gridWidth)/2;break;case"left":e.gridWidth=e.svgWidth-this.lgRect.width-a,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+this.lgRect.width+a;break;case"right":e.gridWidth=e.svgWidth-this.lgRect.width-a-5,e.gridHeight="auto"!==i.chart.height?e.svgHeight:e.gridWidth,e.translateY=r,e.translateX=o+10;break;default:throw new Error("Legend position not supported")}}},{key:"conditionalChecksForAxisCoords",value:function(t,e,i){var a=this.w,s=a.globals.hasGroups?2:1,r=i.height+t.height+e.height,o=a.globals.isMultiLineX?1.2:a.globals.LINE_HEIGHT_RATIO,n=a.globals.rotateXLabels?22:10,l=a.globals.rotateXLabels&&"bottom"===a.config.legend.position?10:0;this.xAxisHeight=r*o+s*n+l,this.xAxisWidth=t.width,this.xAxisHeight-e.height>a.config.xaxis.labels.maxHeight&&(this.xAxisHeight=a.config.xaxis.labels.maxHeight),a.config.xaxis.labels.minHeight&&this.xAxisHeightc&&(this.yAxisWidth=c)}}]),t}(),nt=function(){function t(e){a(this,t),this.w=e.w,this.lgCtx=e}return r(t,[{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\t\n \t\n .apexcharts-legend {\t\n display: flex;\t\n overflow: auto;\t\n padding: 0 10px;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top {\t\n flex-wrap: wrap\t\n }\t\n .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n flex-direction: column;\t\n bottom: 0;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left {\t\n justify-content: flex-start;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center {\t\n justify-content: center; \t\n }\t\n .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right {\t\n justify-content: flex-end;\t\n }\t\n .apexcharts-legend-series {\t\n cursor: pointer;\t\n line-height: normal;\t\n }\t\n .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{\t\n display: flex;\t\n align-items: center;\t\n }\t\n .apexcharts-legend-text {\t\n position: relative;\t\n font-size: 14px;\t\n }\t\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\t\n pointer-events: none;\t\n }\t\n .apexcharts-legend-marker {\t\n position: relative;\t\n display: inline-block;\t\n cursor: pointer;\t\n margin-right: 3px;\t\n border-style: solid;\n }\t\n \t\n .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{\t\n display: inline-block;\t\n }\t\n .apexcharts-legend-series.apexcharts-no-click {\t\n cursor: auto;\t\n }\t\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\t\n display: none !important;\t\n }\t\n .apexcharts-inactive-legend {\t\n opacity: 0.45;\t\n }");return t.appendChild(e),t}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals;t.dom.elLegendForeign=document.createElementNS(t.SVGNS,"foreignObject");var e=t.dom.elLegendForeign;e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"toggleDataSeries",value:function(t,e){var i=this,a=this.w;if(a.globals.axisCharts||"radialBar"===a.config.chart.type){a.globals.resized=!0;var s=null,r=null;if(a.globals.risingSeries=[],a.globals.axisCharts?(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),r=parseInt(s.getAttribute("data:realIndex"),10)):(s=a.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),r=parseInt(s.getAttribute("rel"),10)-1),e)[{cs:a.globals.collapsedSeries,csi:a.globals.collapsedSeriesIndices},{cs:a.globals.ancillaryCollapsedSeries,csi:a.globals.ancillaryCollapsedSeriesIndices}].forEach((function(t){i.riseCollapsedSeries(t.cs,t.csi,r)}));else this.hideSeries({seriesEl:s,realIndex:r})}else{var o=a.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),n=a.config.chart.type;if("pie"===n||"polarArea"===n||"donut"===n){var l=a.config.plotOptions.pie.donut.labels;new m(this.lgCtx.ctx).pathMouseDown(o.members[0],null),this.lgCtx.ctx.pie.printDataLabelsInner(o.members[0].node,l)}o.fire("click")}}},{key:"hideSeries",value:function(t){var e=t.seriesEl,i=t.realIndex,a=this.w,s=x.clone(a.config.series);if(a.globals.axisCharts){var r=!1;if(a.config.yaxis[i]&&a.config.yaxis[i].show&&a.config.yaxis[i].showAlways&&(r=!0,a.globals.ancillaryCollapsedSeriesIndices.indexOf(i)<0&&(a.globals.ancillaryCollapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.ancillaryCollapsedSeriesIndices.push(i))),!r){a.globals.collapsedSeries.push({index:i,data:s[i].data.slice(),type:e.parentNode.className.baseVal.split("-")[1]}),a.globals.collapsedSeriesIndices.push(i);var o=a.globals.risingSeries.indexOf(i);a.globals.risingSeries.splice(o,1)}}else a.globals.collapsedSeries.push({index:i,data:s[i]}),a.globals.collapsedSeriesIndices.push(i);for(var n=e.childNodes,l=0;l0){for(var r=0;r-1&&(t[a].data=[])})):t.forEach((function(i,a){e.globals.collapsedSeriesIndices.indexOf(a)>-1&&(t[a]=0)})),t}}]),t}(),lt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this),this.isBarsDistributed="bar"===this.w.config.chart.type&&this.w.config.plotOptions.bar.distributed&&1===this.w.config.series.length,this.legendHelpers=new nt(this)}return r(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||this.isBarsDistributed||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),x.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.legendHelpers.getLegendStyles()):this.legendHelpers.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"drawLegends",value:function(){var t=this,e=this.w,i=e.config.legend.fontFamily,a=e.globals.seriesNames,s=e.globals.colors.slice();if("heatmap"===e.config.chart.type){var r=e.config.plotOptions.heatmap.colorScale.ranges;a=r.map((function(t){return t.name?t.name:t.from+" - "+t.to})),s=r.map((function(t){return t.color}))}else this.isBarsDistributed&&(a=e.globals.labels.slice());e.config.legend.customLegendItems.length&&(a=e.config.legend.customLegendItems);for(var o=e.globals.legendFormatter,n=e.config.legend.inverseOrder,l=n?a.length-1:0;n?l>=0:l<=a.length-1;n?l--:l++){var h=o(a[l],{seriesIndex:l,w:e}),c=!1,d=!1;if(e.globals.collapsedSeries.length>0)for(var g=0;g0)for(var u=0;u0?l-10:0)+(h>0?h-10:0)}a.style.position="absolute",r=r+t+i.config.legend.offsetX,o=o+e+i.config.legend.offsetY,a.style.left=r+"px",a.style.top=o+"px","bottom"===i.config.legend.position?(a.style.top="auto",a.style.bottom=5-i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(a.style.left="auto",a.style.right=25+i.config.legend.offsetX+"px");["width","height"].forEach((function(t){a.style[t]&&(a.style[t]=parseInt(i.config.legend[t],10)+"px")}))}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.legendHelpers.getLegendBBox(),i=new ot(this.ctx),a=i.dimHelpers.getTitleSubtitleCoords("title"),s=i.dimHelpers.getTitleSubtitleCoords("subtitle"),r=0;"bottom"===t.config.legend.position?r=-e.clwh/1.8:"top"===t.config.legend.position&&(r=a.height+s.height+t.config.title.margin+t.config.subtitle.margin-10),this.setLegendWrapXY(20,r)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.legendHelpers.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"===e.config.chart.type||this.isBarsDistributed){if(i){var a=parseInt(t.target.getAttribute("rel"),10)-1;this.ctx.events.fireEvent("legendHover",[this.ctx,a,this.w]),new O(this.ctx).highlightRangeInSeries(t,t.target)}}else!t.target.classList.contains("apexcharts-inactive-legend")&&i&&new O(this.ctx).toggleSeriesOnHover(t,t.target)}},{key:"onLegendClick",value:function(t){var e=this.w;if(!e.config.legend.customLegendItems.length&&(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker"))){var i=parseInt(t.target.getAttribute("rel"),10)-1,a="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,i,this.w),this.ctx.events.fireEvent("legendClick",[this.ctx,i,this.w]);var r=this.w.config.legend.markers.onClick;"function"==typeof r&&t.target.classList.contains("apexcharts-legend-marker")&&(r(this.ctx,i,this.w),this.ctx.events.fireEvent("legendMarkerClick",[this.ctx,i,this.w])),"treemap"!==e.config.chart.type&&"heatmap"!==e.config.chart.type&&!this.isBarsDistributed&&e.config.legend.onItemClick.toggleDataSeries&&this.legendHelpers.toggleDataSeries(i,a)}}}]),t}(),ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.ev=this.w.config.chart.events,this.selectedClass="apexcharts-selected",this.localeValues=this.w.globals.locale.toolbar,this.minX=i.globals.minX,this.maxX=i.globals.maxX}return r(t,[{key:"createToolbar",value:function(){var t=this,e=this.w,i=function(){return document.createElement("div")},a=i();if(a.setAttribute("class","apexcharts-toolbar"),a.style.top=e.config.chart.toolbar.offsetY+"px",a.style.right=3-e.config.chart.toolbar.offsetX+"px",e.globals.dom.elWrap.appendChild(a),this.elZoom=i(),this.elZoomIn=i(),this.elZoomOut=i(),this.elPan=i(),this.elSelection=i(),this.elZoomReset=i(),this.elMenuIcon=i(),this.elMenu=i(),this.elCustomIcons=[],this.t=e.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var s=0;s\n \n \n\n'),o("zoomOut",this.elZoomOut,'\n \n \n\n');var n=function(i){t.t[i]&&e.config.chart[i].enabled&&r.push({el:"zoom"===i?t.elZoom:t.elSelection,icon:"string"==typeof t.t[i]?t.t[i]:"zoom"===i?'\n \n \n \n':'\n \n \n',title:t.localeValues["zoom"===i?"selectionZoom":"selection"],class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-".concat(i,"-icon")})};n("zoom"),n("selection"),this.t.pan&&e.config.chart.zoom.enabled&&r.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'\n \n \n \n \n \n \n \n',title:this.localeValues.pan,class:e.globals.isTouchDevice?"apexcharts-element-hidden":"apexcharts-pan-icon"}),o("reset",this.elZoomReset,'\n \n \n'),this.t.download&&r.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var l=0;l0&&e.height>0&&this.slDraggableRect.selectize({points:"l, r",pointSize:8,pointType:"rect"}).resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,a={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(a),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,a=t.width,s=t.height,r=t.translateX,o=void 0===r?0:r,n=t.translateY,l=void 0===n?0:n,h=this.w,c=this.zoomRect,d=this.selectionRect;if(this.dragged||null!==h.globals.selection){var g={transform:"translate("+o+", "+l+")"};h.globals.zoomEnabled&&this.dragged&&(a<0&&(a=1),c.attr({x:e,y:i,width:a,height:s,fill:h.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":h.config.chart.zoom.zoomedArea.fill.opacity,stroke:h.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":h.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":h.config.chart.zoom.zoomedArea.stroke.opacity}),m.setAttrs(c.node,g)),h.globals.selectionEnabled&&(d.attr({x:e,y:i,width:a>0?a:0,height:s>0?s:0,fill:h.config.chart.selection.fill.color,"fill-opacity":h.config.chart.selection.fill.opacity,stroke:h.config.chart.selection.stroke.color,"stroke-width":h.config.chart.selection.stroke.width,"stroke-dasharray":h.config.chart.selection.stroke.dashArray,"stroke-opacity":h.config.chart.selection.stroke.opacity}),m.setAttrs(d.node,g))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.gridRect.getBoundingClientRect(),o=s.startX-1,n=s.startY,l=!1,h=!1,c=s.clientX-r.left-o,d=s.clientY-r.top-n,g={};return Math.abs(c+o)>a.globals.gridWidth?c=a.globals.gridWidth-o:s.clientX-r.left<0&&(c=o),o>s.clientX-r.left&&(l=!0,c=Math.abs(c)),n>s.clientY-r.top&&(h=!0,d=Math.abs(d)),g="x"===i?{x:l?o-c:o,y:0,width:c,height:a.globals.gridHeight}:"y"===i?{x:0,y:h?n-d:n,width:a.globals.gridWidth,height:d}:{x:l?o-c:o,y:h?n-d:n,width:c,height:d},s.drawSelectionRect(g),s.selectionDragging("resizing"),g}},{key:"selectionDragging",value:function(t,e){var i=this,a=this.w,s=this.xyRatios,r=this.selectionRect,o=0;"resizing"===t&&(o=30);var n=function(t){return parseFloat(r.node.getAttribute(t))},l={x:n("x"),y:n("y"),width:n("width"),height:n("height")};a.globals.selection=l,"function"==typeof a.config.chart.events.selection&&a.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout((function(){var t=i.gridRect.getBoundingClientRect(),e=r.node.getBoundingClientRect(),o={xaxis:{min:a.globals.xAxisScale.niceMin+(e.left-t.left)*s.xRatio,max:a.globals.xAxisScale.niceMin+(e.right-t.left)*s.xRatio},yaxis:{min:a.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*s.yRatio[0],max:a.globals.yAxisScale[0].niceMax-(e.top-t.top)*s.yRatio[0]}};a.config.chart.events.selection(i.ctx,o),a.config.chart.brush.enabled&&void 0!==a.config.chart.events.brushScrolled&&a.config.chart.events.brushScrolled(i.ctx,o)}),o))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,a=this.w,s=e,r=this.xyRatios,o=this.ctx.toolbar;if(s.startX>s.endX){var n=s.startX;s.startX=s.endX,s.endX=n}if(s.startY>s.endY){var l=s.startY;s.startY=s.endY,s.endY=l}var h=void 0,c=void 0;a.globals.isRangeBar?(h=a.globals.yAxisScale[0].niceMin+s.startX*r.invertedYRatio,c=a.globals.yAxisScale[0].niceMin+s.endX*r.invertedYRatio):(h=a.globals.xAxisScale.niceMin+s.startX*r.xRatio,c=a.globals.xAxisScale.niceMin+s.endX*r.xRatio);var d=[],g=[];if(a.config.yaxis.forEach((function(t,e){d.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.startY),g.push(a.globals.yAxisScale[e].niceMax-r.yRatio[e]*s.endY)})),s.dragged&&(s.dragX>10||s.dragY>10)&&h!==c)if(a.globals.zoomEnabled){var u=x.clone(a.globals.initialConfig.yaxis),f=x.clone(a.globals.initialConfig.xaxis);if(a.globals.zoomed=!0,a.config.xaxis.convertedCatToNumeric&&(h=Math.floor(h),c=Math.floor(c),h<1&&(h=1,c=a.globals.dataPoints),c-h<2&&(c=h+1)),"xy"!==i&&"x"!==i||(f={min:h,max:c}),"xy"!==i&&"y"!==i||u.forEach((function(t,e){u[e].min=g[e],u[e].max=d[e]})),a.config.chart.zoom.autoScaleYaxis){var p=new _(s.ctx);u=p.autoScaleY(s.ctx,u,{xaxis:f})}if(o){var b=o.getBeforeZoomRange(f,u);b&&(f=b.xaxis?b.xaxis:f,u=b.yaxis?b.yaxis:u)}var v={xaxis:f};a.config.chart.group||(v.yaxis=u),s.ctx.updateHelpers._updateOptions(v,!1,s.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof a.config.chart.events.zoomed&&o.zoomCallback(f,u)}else if(a.globals.selectionEnabled){var m,y=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(y=x.clone(a.config.yaxis)).forEach((function(t,e){y[e].min=g[e],y[e].max=d[e]})),a.globals.selection=s.selection,"function"==typeof a.config.chart.events.selection&&a.config.chart.events.selection(s.ctx,{xaxis:m,yaxis:y})}}},{key:"panDragging",value:function(t){var e=t.context,i=this.w,a=e;if(void 0!==i.globals.lastClientPosition.x){var s=i.globals.lastClientPosition.x-a.clientX,r=i.globals.lastClientPosition.y-a.clientY;Math.abs(s)>Math.abs(r)&&s>0?this.moveDirection="left":Math.abs(s)>Math.abs(r)&&s<0?this.moveDirection="right":Math.abs(r)>Math.abs(s)&&r>0?this.moveDirection="up":Math.abs(r)>Math.abs(s)&&r<0&&(this.moveDirection="down")}i.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=i.globals.isRangeBar?i.globals.minY:i.globals.minX,n=i.globals.isRangeBar?i.globals.maxY:i.globals.maxX;i.config.xaxis.convertedCatToNumeric||a.panScrolled(o,n)}},{key:"delayedPanScrolled",value:function(){var t=this.w,e=t.globals.minX,i=t.globals.maxX,a=(t.globals.maxX-t.globals.minX)/2;"left"===this.moveDirection?(e=t.globals.minX+a,i=t.globals.maxX+a):"right"===this.moveDirection&&(e=t.globals.minX-a,i=t.globals.maxX-a),e=Math.floor(e),i=Math.floor(i),this.updateScrolledChart({xaxis:{min:e,max:i}},e,i)}},{key:"panScrolled",value:function(t,e){var i=this.w,a=this.xyRatios,s=x.clone(i.globals.initialConfig.yaxis),r=a.xRatio,o=i.globals.minX,n=i.globals.maxX;i.globals.isRangeBar&&(r=a.invertedYRatio,o=i.globals.minY,n=i.globals.maxY),"left"===this.moveDirection?(t=o+i.globals.gridWidth/15*r,e=n+i.globals.gridWidth/15*r):"right"===this.moveDirection&&(t=o-i.globals.gridWidth/15*r,e=n-i.globals.gridWidth/15*r),i.globals.isRangeBar||(ti.globals.initialMaxX)&&(t=o,e=n);var l={min:t,max:e};i.config.chart.zoom.autoScaleYaxis&&(s=new _(this.ctx).autoScaleY(this.ctx,s,{xaxis:l}));var h={xaxis:{min:t,max:e}};i.config.chart.group||(h.yaxis=s),this.updateScrolledChart(h,t,e)}},{key:"updateScrolledChart",value:function(t,e,i){var a=this.w;this.ctx.updateHelpers._updateOptions(t,!1,!1),"function"==typeof a.config.chart.events.scrolled&&a.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(ht),dt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx}return r(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,a=t.clientX,s=t.clientY,r=this.w,o=i.getBoundingClientRect(),n=o.width,l=o.height,h=n/(r.globals.dataPoints-1),c=l/r.globals.dataPoints,d=this.hasBars();!r.globals.comboCharts&&!d||r.config.xaxis.convertedCatToNumeric||(h=n/r.globals.dataPoints);var g=a-o.left-r.globals.barPadForNumericAxis,u=s-o.top;g<0||u<0||g>n||u>l?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var f=Math.round(g/h),p=Math.floor(u/c);d&&!r.config.xaxis.convertedCatToNumeric&&(f=Math.ceil(g/h),f-=1);var b=null,v=null,m=[],y=[];if(r.globals.seriesXvalues.forEach((function(t){m.push([t[0]+1e-6].concat(t))})),r.globals.seriesYvalues.forEach((function(t){y.push([t[0]+1e-6].concat(t))})),m=m.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),y=y.map((function(t){return t.filter((function(t){return x.isNumber(t)}))})),r.globals.isXNumeric){var w=this.ttCtx.getElGrid().getBoundingClientRect(),k=g*(w.width/n),A=u*(w.height/l);b=(v=this.closestInMultiArray(k,A,m,y)).index,f=v.j,null!==b&&(m=r.globals.seriesXvalues[b],f=(v=this.closestInArray(k,m)).index)}return r.globals.capturedSeriesIndex=null===b?-1:b,(!f||f<1)&&(f=0),r.globals.isBarHorizontal?r.globals.capturedDataPointIndex=p:r.globals.capturedDataPointIndex=f,{capturedSeries:b,j:r.globals.isBarHorizontal?p:f,hoverX:g,hoverY:u}}},{key:"closestInMultiArray",value:function(t,e,i,a){var s=this.w,r=0,o=null,n=-1;s.globals.series.length>1?r=this.getFirstActiveXArray(i):o=0;var l=i[r][0],h=Math.abs(t-l);if(i.forEach((function(e){e.forEach((function(e,i){var a=Math.abs(t-e);a0?e:-1})),s=0;s0)for(var a=0;ai?-1:0}));var e=[];return t.forEach((function(t){e.push(t.querySelector(".apexcharts-marker"))})),e}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"getHoverMarkerSize",value:function(t){var e=this.w,i=e.config.markers.hover.size;return void 0===i&&(i=e.globals.markers.size[t]+e.config.markers.hover.sizeOffset),i}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var a=i.allTooltipSeriesGroups,s=0;s ').concat(i.attrs.name,""),e+="
    ".concat(i.val,"
    ")})),v.innerHTML=t+"",m.innerHTML=e+""};o?l.globals.seriesGoals[e][i]&&Array.isArray(l.globals.seriesGoals[e][i])?y():(v.innerHTML="",m.innerHTML=""):y()}else v.innerHTML="",m.innerHTML="";null!==f&&(a[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=l.config.tooltip.z.title,a[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=void 0!==f?f:"");o&&p[0]&&(null==c||l.globals.ancillaryCollapsedSeriesIndices.indexOf(e)>-1||l.globals.collapsedSeriesIndices.indexOf(e)>-1?p[0].parentNode.style.display="none":p[0].parentNode.style.display=l.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("apexcharts-active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,a=this.w,s=this.ctx.series.filteredSeriesX(),r="",o="",n=null,l=null,h={series:a.globals.series,seriesIndex:e,dataPointIndex:i,w:a},c=a.globals.ttZFormatter;null===i?l=a.globals.series[e]:a.globals.isXNumeric&&"treemap"!==a.config.chart.type?(r=s[e][i],0===s[e].length&&(r=s[this.tooltipUtil.getFirstActiveXArray(s)][i])):r=void 0!==a.globals.labels[i]?a.globals.labels[i]:"";var d=r;a.globals.isXNumeric&&"datetime"===a.config.xaxis.type?r=new W(this.ctx).xLabelFormat(a.globals.ttKeyFormatter,d,d,{i:void 0,dateFormatter:new T(this.ctx).formatDate,w:this.w}):r=a.globals.isBarHorizontal?a.globals.yLabelFormatters[0](d,h):a.globals.xLabelFormatter(d,h);return void 0!==a.config.tooltip.x.formatter&&(r=a.globals.ttKeyFormatter(d,h)),a.globals.seriesZ.length>0&&a.globals.seriesZ[e].length>0&&(n=c(a.globals.seriesZ[e][i],a)),o="function"==typeof a.config.xaxis.tooltip.formatter?a.globals.xaxisTooltipFormatter(d,h):r,{val:Array.isArray(l)?l.join(" "):l,xVal:Array.isArray(r)?r.join(" "):r,xAxisTTVal:Array.isArray(o)?o.join(" "):o,zVal:n}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,a=t.y1,s=t.y2,r=t.w,o=this.ttCtx.getElTooltip(),n=r.config.tooltip.custom;Array.isArray(n)&&n[e]&&(n=n[e]),o.innerHTML=n({ctx:this.ctx,series:r.globals.series,seriesIndex:e,dataPointIndex:i,y1:a,y2:s,w:r})}}]),t}(),ut=function(){function t(e){a(this,t),this.ttCtx=e,this.ctx=e.ctx,this.w=e.w}return r(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,a=this.w,s=i.getElXCrosshairs(),r=t-i.xcrosshairsWidth/2,o=a.globals.labels.slice().length;if(null!==e&&(r=a.globals.gridWidth/o*e),null===s||a.globals.isBarHorizontal||(s.setAttribute("x",r),s.setAttribute("x1",r),s.setAttribute("x2",r),s.setAttribute("y2",a.globals.gridHeight),s.classList.add("apexcharts-active")),r<0&&(r=0),r>a.globals.gridWidth&&(r=a.globals.gridWidth),i.isXAxisTooltipEnabled){var n=r;"tickWidth"!==a.config.xaxis.crosshairs.width&&"barWidth"!==a.config.xaxis.crosshairs.width||(n=r+i.xcrosshairsWidth/2),this.moveXAxisTooltip(n)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&m.setAttrs(e.ycrosshairs,{y1:t,y2:t}),null!==e.ycrosshairsHidden&&m.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t})}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip&&0!==i.xcrosshairsWidth){i.xaxisTooltip.classList.add("apexcharts-active");var a=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var s;s=new m(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=s.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=a+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var a=parseInt(i.ycrosshairsHidden.getAttribute("y1"),10),s=e.globals.translateY+a,r=i.yaxisTTEls[t].getBoundingClientRect().height,o=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(o-=26),s-=r/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("apexcharts-active"),i.yaxisTTEls[t].style.top=s+"px",i.yaxisTTEls[t].style.left=o+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("apexcharts-active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,a=this.w,s=this.ttCtx,r=s.getElTooltip(),o=s.tooltipRect,n=null!==i?parseFloat(i):1,l=parseFloat(t)+n+5,h=parseFloat(e)+n/2;if(l>a.globals.gridWidth/2&&(l=l-o.ttWidth-n-10),l>a.globals.gridWidth-o.ttWidth-10&&(l=a.globals.gridWidth-o.ttWidth),l<-20&&(l=-20),a.config.tooltip.followCursor){var c=s.getElGrid(),d=c.getBoundingClientRect();h=s.e.clientY+a.globals.translateY-d.top-o.ttHeight/2}else a.globals.isBarHorizontal||(o.ttHeight/2+h>a.globals.gridHeight&&(h=a.globals.gridHeight-o.ttHeight+a.globals.translateY),h<0&&(h=0));isNaN(l)||(l+=a.globals.translateX,r.style.left=l+"px",r.style.top=h+"px")}},{key:"moveMarkers",value:function(t,e){var i=this.w,a=this.ttCtx;if(i.globals.markers.size[t]>0)for(var s=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),r=0;r0&&(h.setAttribute("r",n),h.setAttribute("cx",i),h.setAttribute("cy",a)),this.moveXCrosshairs(i),r.fixedTooltip||this.moveTooltip(i,a,n)}}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,a=i.w,s=0,r=0,o=a.globals.pointsArray;e=new O(this.ctx).getActiveConfigSeriesIndex("asc",["line","area","scatter","bubble"]);var n=i.tooltipUtil.getHoverMarkerSize(e);o[e]&&(s=o[e][t][0],r=o[e][t][1]);var l=i.tooltipUtil.getAllMarkers();if(null!==l)for(var h=0;h0?(l[h]&&l[h].setAttribute("r",n),l[h]&&l[h].setAttribute("cy",d)):l[h]&&l[h].setAttribute("r",0)}}if(this.moveXCrosshairs(s),!i.fixedTooltip){var f=r||a.globals.gridHeight;this.moveTooltip(s,f,n)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e=this.w,i=this.ttCtx,a=e.globals.columnSeries?e.globals.columnSeries.length:e.globals.series.length,s=a>=2&&a%2==0?Math.floor(a/2):Math.floor(a/2)+1;e.globals.isBarHorizontal&&(s=new O(this.ctx).getActiveConfigSeriesIndex("desc")+1);var r=e.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='".concat(s,"'] path[j='").concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-boxPlot-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='").concat(s,"'] path[j='").concat(t,"']")),o=r?parseFloat(r.getAttribute("cx")):0,n=r?parseFloat(r.getAttribute("cy")):0,l=r?parseFloat(r.getAttribute("barWidth")):0,h=r?parseFloat(r.getAttribute("barHeight")):0,c=i.getElGrid().getBoundingClientRect(),d=r.classList.contains("apexcharts-candlestick-area")||r.classList.contains("apexcharts-boxPlot-area");if(e.globals.isXNumeric?(r&&!d&&(o-=a%2!=0?l/2:0),r&&d&&e.globals.comboCharts&&(o-=l/2)):e.globals.isBarHorizontal||(o=i.xAxisTicksPositions[t-1]+i.dataPointsDividedWidth/2,isNaN(o)&&(o=i.xAxisTicksPositions[t]-i.dataPointsDividedWidth/2)),e.globals.isBarHorizontal?(n>e.globals.gridHeight/2&&(n-=i.tooltipRect.ttHeight),(n=n+e.config.grid.padding.top+h/3)+h>e.globals.gridHeight&&(n=e.globals.gridHeight-h)):e.config.tooltip.followCursor?n=i.e.clientY-c.top-i.tooltipRect.ttHeight/2:n+i.tooltipRect.ttHeight+15>e.globals.gridHeight&&(n=e.globals.gridHeight),n<-10&&(n=-10),e.globals.isBarHorizontal||this.moveXCrosshairs(o),!i.fixedTooltip){var g=n||e.globals.gridHeight;this.moveTooltip(o,g)}}}]),t}(),ft=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e,this.ctx=e.ctx,this.tooltipPosition=new ut(e)}return r(t,[{key:"drawDynamicPoints",value:function(){var t=this.w,e=new m(this.ctx),i=new R(this.ctx),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");a=u(a),t.config.chart.stacked&&a.sort((function(t,e){return parseFloat(t.getAttribute("data:realIndex"))-parseFloat(e.getAttribute("data:realIndex"))}));for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:null,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=this.w;"bubble"!==s.config.chart.type&&this.newPointSize(t,e);var r=e.getAttribute("cx"),o=e.getAttribute("cy");if(null!==i&&null!==a&&(r=i,o=a),this.tooltipPosition.moveXCrosshairs(r),!this.fixedTooltip){if("radar"===s.config.chart.type){var n=this.ttCtx.getElGrid(),l=n.getBoundingClientRect();r=this.ttCtx.e.clientX-l.left}this.tooltipPosition.moveTooltip(r,o,s.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this,a=this.ttCtx,s=t,r=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),o=e.config.markers.hover.size,n=0;n=0?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),pt=function(){function t(e){a(this,t),this.w=e.w,this.ttCtx=e}return r(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTreeTooltip",value:function(t){var e=t.e,i=t.opt,a=t.x,s=t.y,r=t.type,o=this.ttCtx,n=this.w;if(e.target.classList.contains("apexcharts-".concat(r,"-rect"))){var l=this.getAttr(e,"i"),h=this.getAttr(e,"j"),c=this.getAttr(e,"cx"),d=this.getAttr(e,"cy"),g=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(o.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:l,j:h,shared:!1,e:e}),n.globals.capturedSeriesIndex=l,n.globals.capturedDataPointIndex=h,a=c+o.tooltipRect.ttWidth/2+g,s=d+o.tooltipRect.ttHeight/2-u/2,o.tooltipPosition.moveXCrosshairs(c+g/2),a>n.globals.gridWidth/2&&(a=c-o.tooltipRect.ttWidth/2+g),o.w.config.tooltip.followCursor){var f=n.globals.dom.elWrap.getBoundingClientRect();a=n.globals.clientX-f.left-(a>n.globals.gridWidth/2?o.tooltipRect.ttWidth:0),s=n.globals.clientY-f.top-(s>n.globals.gridHeight/2?o.tooltipRect.ttHeight:0)}}return{x:a,y:s}}},{key:"handleMarkerTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=t.x,o=t.y,n=this.w,l=this.ttCtx;if(a.target.classList.contains("apexcharts-marker")){var h=parseInt(s.paths.getAttribute("cx"),10),c=parseInt(s.paths.getAttribute("cy"),10),d=parseFloat(s.paths.getAttribute("val"));if(i=parseInt(s.paths.getAttribute("rel"),10),e=parseInt(s.paths.parentNode.parentNode.parentNode.getAttribute("rel"),10)-1,l.intersect){var g=x.findAncestor(s.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex"),10))}if(l.tooltipLabels.drawSeriesTexts({ttItems:s.ttItems,i:e,j:i,shared:!l.showOnIntersect&&n.config.tooltip.shared,e:a}),"mouseup"===a.type&&l.markerClick(a,e,i),n.globals.capturedSeriesIndex=e,n.globals.capturedDataPointIndex=i,r=h,o=c+n.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var u=l.getElGrid().getBoundingClientRect();o=l.e.clientY+n.globals.translateY-u.top}d<0&&(o=c),l.marker.enlargeCurrentPoint(i,s.paths,r,o)}return{x:r,y:o}}},{key:"handleBarTooltip",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=this.ttCtx,n=o.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:a,opt:s});e=d.i;var g=d.barHeight,u=d.j;r.globals.capturedSeriesIndex=e,r.globals.capturedDataPointIndex=u,r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||!r.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(r.config.stroke.width)?r.config.stroke.width[e]:r.config.stroke.width,l=h):r.globals.comboCharts||r.config.tooltip.shared||(l/=2),isNaN(c)?c=r.globals.svgHeight-o.tooltipRect.ttHeight:c<0&&(c=0);var f=parseInt(s.paths.parentNode.getAttribute("data:realIndex"),10),p=r.globals.isMultipleYAxis?r.config.yaxis[f]&&r.config.yaxis[f].reversed:r.config.yaxis[0].reversed;if(h+o.tooltipRect.ttWidth>r.globals.gridWidth&&!p?h-=o.tooltipRect.ttWidth:h<0&&(h=0),o.w.config.tooltip.followCursor){var x=o.getElGrid().getBoundingClientRect();c=o.e.clientY-x.top}null===o.tooltip&&(o.tooltip=r.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),r.config.tooltip.shared||(r.globals.comboBarCount>0?o.tooltipPosition.moveXCrosshairs(l+i/2):o.tooltipPosition.moveXCrosshairs(l)),!o.fixedTooltip&&(!r.config.tooltip.shared||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars())&&(p&&(h-=o.tooltipRect.ttWidth)<0&&(h=0),!p||r.globals.isBarHorizontal&&o.tooltipUtil.hasBars()||(c=c+g-2*(r.globals.series[e][u]<0?g:0)),o.tooltipRect.ttHeight+c>r.globals.gridHeight?c=r.globals.gridHeight-o.tooltipRect.ttHeight+r.globals.translateY:(c=c+r.globals.translateY-o.tooltipRect.ttHeight/2)<0&&(c=0),n.style.left=h+r.globals.translateX+"px",n.style.top=c+"px")}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,a=this.w,s=null,r=this.ttCtx,o=0,n=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-boxPlot-area")||d.contains("apexcharts-rangebar-area")){var g=e.target,u=g.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=u.height;c=u.height;var x=u.width,b=parseInt(g.getAttribute("cx"),10),v=parseInt(g.getAttribute("cy"),10);h=parseFloat(g.getAttribute("barWidth"));var m="touchmove"===e.type?e.touches[0].clientX:e.clientX;s=parseInt(g.getAttribute("j"),10),o=parseInt(g.parentNode.getAttribute("rel"),10)-1;var y=g.getAttribute("data-range-y1"),w=g.getAttribute("data-range-y2");a.globals.comboCharts&&(o=parseInt(g.parentNode.getAttribute("data:realIndex"),10)),r.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:s,y1:y?parseInt(y,10):null,y2:w?parseInt(w,10):null,shared:!r.showOnIntersect&&a.config.tooltip.shared,e:e}),a.config.tooltip.followCursor?a.globals.isBarHorizontal?(n=m-f.left+15,l=v-r.dataPointsDividedHeight+p/2-r.tooltipRect.ttHeight/2):(n=a.globals.isXNumeric?b-x/2:b-r.dataPointsDividedWidth+x/2,l=e.clientY-f.top-r.tooltipRect.ttHeight/2-15):a.globals.isBarHorizontal?((n=b)0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var a=this.ttCtx,s=this.w,r=s.globals.yLabelFormatters[t];if(a.yaxisTooltips[t]){var o=a.getElGrid().getBoundingClientRect(),n=(e-o.top)*i.yRatio[t],l=s.globals.maxYArr[t]-s.globals.minYArr[t],h=s.globals.minYArr[t]+(l-n);a.tooltipPosition.moveYCrosshairs(e-o.top),a.yaxisTooltipText[t].innerHTML=r(h),a.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),bt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w;var i=this.w;this.tConfig=i.config.tooltip,this.tooltipUtil=new dt(this),this.tooltipLabels=new gt(this),this.tooltipPosition=new ut(this),this.marker=new ft(this),this.intersect=new pt(this),this.axesTooltip=new xt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!i.globals.isBarHorizontal&&this.tConfig.shared,this.lastHoverTime=Date.now()}return r(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl?t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip"):null}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.isXAxisTooltipEnabled=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.yaxisTooltips=e.config.yaxis.map((function(t,i){return!!(t.show&&t.tooltip.enabled&&e.globals.axisCharts)})),this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),e.config.tooltip.cssClass&&i.classList.add(e.config.tooltip.cssClass),i.classList.add("apexcharts-theme-".concat(this.tConfig.theme)),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var a=new V(this.ctx);this.xAxisTicksPositions=a.getXAxisTicksPositions()}if(!e.globals.comboCharts&&!this.tConfig.intersect&&"rangeBar"!==e.config.chart.type||this.tConfig.shared||(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var s=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(s=this.showOnIntersect?1:e.globals.series.length),this.legendLabels=e.globals.dom.baseEl.querySelectorAll(".apexcharts-legend-text"),this.ttItems=this.createTTElements(s),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this,i=this.w,a=[],s=this.getElTooltip(),r=function(r){var o=document.createElement("div");o.classList.add("apexcharts-tooltip-series-group"),o.style.order=i.config.tooltip.inverseOrder?t-r:r+1,e.tConfig.shared&&e.tConfig.enabledOnSeries&&Array.isArray(e.tConfig.enabledOnSeries)&&e.tConfig.enabledOnSeries.indexOf(r)<0&&o.classList.add("apexcharts-tooltip-series-group-hidden");var n=document.createElement("span");n.classList.add("apexcharts-tooltip-marker"),n.style.backgroundColor=i.globals.colors[r],o.appendChild(n);var l=document.createElement("div");l.classList.add("apexcharts-tooltip-text"),l.style.fontFamily=e.tConfig.style.fontFamily||i.config.chart.fontFamily,l.style.fontSize=e.tConfig.style.fontSize,["y","goals","z"].forEach((function(t){var e=document.createElement("div");e.classList.add("apexcharts-tooltip-".concat(t,"-group"));var i=document.createElement("span");i.classList.add("apexcharts-tooltip-text-".concat(t,"-label")),e.appendChild(i);var a=document.createElement("span");a.classList.add("apexcharts-tooltip-text-".concat(t,"-value")),e.appendChild(a),l.appendChild(e)})),o.appendChild(l),s.appendChild(o),a.push(o)},o=0;o0&&this.addPathsEventListeners(u,c),this.tooltipUtil.hasBars()&&!this.tConfig.shared&&this.addDatapointEventsListeners(c)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),a=i.width+10,s=i.height+10,r=this.tConfig.fixed.offsetX,o=this.tConfig.fixed.offsetY,n=this.tConfig.fixed.position.toLowerCase();return n.indexOf("right")>-1&&(r=r+t.globals.svgWidth-a+10),n.indexOf("bottom")>-1&&(o=o+t.globals.svgHeight-s-10),e.style.left=r+"px",e.style.top=o+"px",{x:r,y:o,ttWidth:a,ttHeight:s}}},{key:"addDatapointEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,a=function(a){var s={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};["mousemove","mouseup","touchmove","mouseout","touchend"].map((function(e){return t[a].addEventListener(e,i.onSeriesHover.bind(i,s),{capture:!1,passive:!0})}))},s=0;s=100?this.seriesHover(t,e):(clearTimeout(this.seriesHoverTimeout),this.seriesHoverTimeout=setTimeout((function(){i.seriesHover(t,e)}),100-a))}},{key:"seriesHover",value:function(t,e){var i=this;this.lastHoverTime=Date.now();var a=[],s=this.w;s.config.chart.group&&(a=this.ctx.getGroupedCharts()),s.globals.axisCharts&&(s.globals.minX===-1/0&&s.globals.maxX===1/0||0===s.globals.dataPoints)||(a.length?a.forEach((function(a){var s=i.getElTooltip(a),r={paths:t.paths,tooltipEl:s,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:a.w.globals.tooltip.ttItems};a.w.globals.minX===i.w.globals.minX&&a.w.globals.maxX===i.w.globals.maxX&&a.w.globals.tooltip.seriesHoverByContext({chartCtx:a,ttCtx:a.w.globals.tooltip,opt:r,e:e})})):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,a=t.opt,s=t.e,r=e.w,o=this.getElTooltip();if(o){if(i.tooltipRect={x:0,y:0,ttWidth:o.getBoundingClientRect().width,ttHeight:o.getBoundingClientRect().height},i.e=s,i.tooltipUtil.hasBars()&&!r.globals.comboCharts&&!i.isBarShared)if(this.tConfig.onDatasetHover.highlightDataSeries)new O(e).toggleSeriesOnHover(s,s.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),r.globals.axisCharts?i.axisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:s,opt:a,tooltipRect:i.tooltipRect})}}},{key:"axisChartsTooltips",value:function(t){var e,i,a=t.e,s=t.opt,r=this.w,o=s.elGrid.getBoundingClientRect(),n="touchmove"===a.type?a.touches[0].clientX:a.clientX,l="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=l,this.clientX=n,r.globals.capturedSeriesIndex=-1,r.globals.capturedDataPointIndex=-1,lo.top+o.height)this.handleMouseOut(s);else{if(Array.isArray(this.tConfig.enabledOnSeries)&&!r.config.tooltip.shared){var h=parseInt(s.paths.getAttribute("index"),10);if(this.tConfig.enabledOnSeries.indexOf(h)<0)return void this.handleMouseOut(s)}var c=this.getElTooltip(),d=this.getElXCrosshairs(),g=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.tooltipUtil.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.tooltipUtil.hasBars();if("mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(r.globals.collapsedSeries.length+r.globals.ancillaryCollapsedSeries.length===r.globals.series.length)return;null!==d&&d.classList.add("apexcharts-active");var u=this.yaxisTooltips.filter((function(t){return!0===t}));if(null!==this.ycrosshairs&&u.length&&this.ycrosshairs.classList.add("apexcharts-active"),g&&!this.showOnIntersect)this.handleStickyTooltip(a,n,l,s);else if("heatmap"===r.config.chart.type||"treemap"===r.config.chart.type){var f=this.intersect.handleHeatTreeTooltip({e:a,opt:s,x:e,y:i,type:r.config.chart.type});e=f.x,i=f.y,c.style.left=e+"px",c.style.top=i+"px"}else this.tooltipUtil.hasBars()&&this.intersect.handleBarTooltip({e:a,opt:s}),this.tooltipUtil.hasMarkers()&&this.intersect.handleMarkerTooltip({e:a,opt:s,x:e,y:i});if(this.yaxisTooltips.length)for(var p=0;pl.width?this.handleMouseOut(a):null!==n?this.handleStickyCapturedSeries(t,n,a,o):(this.tooltipUtil.isXoverlap(o)||s.globals.isBarHorizontal)&&this.create(t,this,0,o,a.ttItems)}},{key:"handleStickyCapturedSeries",value:function(t,e,i,a){var s=this.w;if(!this.tConfig.shared&&null===s.globals.series[e][a])return void this.handleMouseOut(i);void 0!==s.globals.series[e][a]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(a)&&this.tooltipUtil.isInitialSeriesSameLen()?this.create(t,this,e,a,i.ttItems):this.create(t,this,e,a,i.ttItems,!1):this.tooltipUtil.isXoverlap(a)&&this.create(t,this,0,a,i.ttItems)}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new m(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),a=0;a5&&void 0!==arguments[5]?arguments[5]:null,o=this.w,n=e;"mouseup"===t.type&&this.markerClick(t,i,a),null===r&&(r=this.tConfig.shared);var l=this.tooltipUtil.hasMarkers(),h=this.tooltipUtil.getElBars();if(o.config.legend.tooltipHoverFormatter){var c=o.config.legend.tooltipHoverFormatter,d=Array.from(this.legendLabels);d.forEach((function(t){var e=t.getAttribute("data:default-text");t.innerHTML=decodeURIComponent(e)}));for(var g=0;g0?n.marker.enlargePoints(a):n.tooltipPosition.moveDynamicPointsOnHover(a)),this.tooltipUtil.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var b=new m(this.ctx),v=o.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(a,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(a);for(var y=0;ys.globals.gridHeight&&(u=s.globals.gridHeight-b)),{bcx:h,bcy:l,dataLabelsX:e,dataLabelsY:u,totalDataLabelsX:a,totalDataLabelsY:i,totalDataLabelsAnchor:"middle"}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,a=t.i,s=t.j,r=t.realIndex,o=t.bcy,n=t.barHeight,l=t.barWidth,h=t.textRects,c=t.dataLabelsX,d=t.strokeWidth,g=t.dataLabelsConfig,u=t.barDataLabelsConfig,f=t.barTotalDataLabelsConfig,p=t.offX,x=t.offY,b=e.globals.gridHeight/e.globals.dataPoints;l=Math.abs(l);var v,y,w=o-(this.barCtx.isRangeBar?0:b)+n/2+h.height/2+x-3,k="start",A=this.barCtx.series[a][s]<0,S=i;switch(this.barCtx.isReversed&&(S=i+l-(A?2*l:0),i=e.globals.gridWidth-l),u.position){case"center":c=A?S+l/2-p:Math.max(h.width/2,S-l/2)+p;break;case"bottom":c=A?S+l-d-Math.round(h.width/2)-p:S-l+d+Math.round(h.width/2)+p;break;case"top":c=A?S-d+Math.round(h.width/2)-p:S-d-Math.round(h.width/2)+p}if(this.barCtx.lastActiveBarSerieIndex===r&&f.enabled){var C=new m(this.barCtx.ctx).getTextRects(this.getStackedTotalDataLabel({realIndex:r,j:s}),g.fontSize);A?(v=S-d+Math.round(C.width/2)-p-f.offsetX-15,k="end"):v=S-d-Math.round(C.width/2)+p+f.offsetX+15,y=w+f.offsetY}return e.config.chart.stacked||(c<0?c=c+h.width+d:c+h.width/2>e.globals.gridWidth&&(c=e.globals.gridWidth-h.width-d)),{bcx:i,bcy:o,dataLabelsX:c,dataLabelsY:w,totalDataLabelsX:v,totalDataLabelsY:y,totalDataLabelsAnchor:k}}},{key:"drawCalculatedDataLabels",value:function(t){var i=t.x,a=t.y,s=t.val,r=t.i,o=t.j,n=t.textRects,l=t.barHeight,h=t.barWidth,c=t.dataLabelsConfig,d=this.w,g="rotate(0)";"vertical"===d.config.plotOptions.bar.dataLabels.orientation&&(g="rotate(-90, ".concat(i,", ").concat(a,")"));var u=new H(this.barCtx.ctx),f=new m(this.barCtx.ctx),p=c.formatter,x=null,b=d.globals.collapsedSeriesIndices.indexOf(r)>-1;if(c.enabled&&!b){x=f.group({class:"apexcharts-data-labels",transform:g});var v="";void 0!==s&&(v=p(s,e(e({},d),{},{seriesIndex:r,dataPointIndex:o,w:d})));var y=d.globals.series[r][o]<0,w=d.config.plotOptions.bar.dataLabels.position;if("vertical"===d.config.plotOptions.bar.dataLabels.orientation&&("top"===w&&(c.textAnchor=y?"end":"start"),"center"===w&&(c.textAnchor="middle"),"bottom"===w&&(c.textAnchor=y?"end":"start")),this.barCtx.isRangeBar&&this.barCtx.barOptions.dataLabels.hideOverflowingLabels)hMath.abs(h)&&(v=""):n.height/1.6>Math.abs(l)&&(v=""));var k=e({},c);this.barCtx.isHorizontal&&s<0&&("start"===c.textAnchor?k.textAnchor="end":"end"===c.textAnchor&&(k.textAnchor="start")),u.plotDataLabelsText({x:i,y:a,text:v,i:r,j:o,parent:x,dataLabelsConfig:k,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return x}},{key:"drawTotalDataLabels",value:function(t){var e,i=t.x,a=t.y,s=t.val,r=t.realIndex,o=t.textAnchor,n=t.barTotalDataLabelsConfig,l=new m(this.barCtx.ctx);return n.enabled&&void 0!==i&&void 0!==a&&this.barCtx.lastActiveBarSerieIndex===r&&(e=l.drawText({x:i,y:a,foreColor:n.style.color,text:s,textAnchor:o,fontFamily:n.style.fontFamily,fontSize:n.style.fontSize,fontWeight:n.style.fontWeight})),e}}]),t}(),mt=function(){function t(e){a(this,t),this.w=e.w,this.barCtx=e}return r(t,[{key:"initVariables",value:function(t){var e=this.w;this.barCtx.series=t,this.barCtx.totalItems=0,this.barCtx.seriesLen=0,this.barCtx.visibleI=-1,this.barCtx.visibleItems=1;for(var i=0;i0&&(this.barCtx.seriesLen=this.barCtx.seriesLen+1,this.barCtx.totalItems+=t[i].length),e.globals.isXNumeric)for(var a=0;ae.globals.minX&&e.globals.seriesX[i][a]0&&(a=l.globals.minXDiff/d),(r=a/this.barCtx.seriesLen*parseInt(this.barCtx.barOptions.columnWidth,10)/100)<1&&(r=1)}o=l.globals.gridHeight-this.barCtx.baseLineY[this.barCtx.yaxisIndex]-(this.barCtx.isReversed?l.globals.gridHeight:0)+(this.barCtx.isReversed?2*this.barCtx.baseLineY[this.barCtx.yaxisIndex]:0),t=l.globals.padHorizontal+(a-r*this.barCtx.seriesLen)/2}return{x:t,y:e,yDivision:i,xDivision:a,barHeight:s,barWidth:r,zeroH:o,zeroW:n}}},{key:"getPathFillColor",value:function(t,e,i,a){var s,r,o,n,l=this.w,h=new F(this.barCtx.ctx),c=null,d=this.barCtx.barOptions.distributed?i:e;this.barCtx.barOptions.colors.ranges.length>0&&this.barCtx.barOptions.colors.ranges.map((function(a){t[e][i]>=a.from&&t[e][i]<=a.to&&(c=a.color)}));return l.config.series[e].data[i]&&l.config.series[e].data[i].fillColor&&(c=l.config.series[e].data[i].fillColor),h.fillPath({seriesNumber:this.barCtx.barOptions.distributed?d:a,dataPointIndex:i,color:c,value:t[e][i],fillConfig:null===(s=l.config.series[e].data[i])||void 0===s?void 0:s.fill,fillType:null!==(r=l.config.series[e].data[i])&&void 0!==r&&null!==(o=r.fill)&&void 0!==o&&o.type?null===(n=l.config.series[e].data[i])||void 0===n?void 0:n.fill.type:l.config.fill.type})}},{key:"getStrokeWidth",value:function(t,e,i){var a=0,s=this.w;return void 0===this.barCtx.series[t][e]||null===this.barCtx.series[t][e]?this.barCtx.isNullValue=!0:this.barCtx.isNullValue=!1,s.config.stroke.show&&(this.barCtx.isNullValue||(a=Array.isArray(this.barCtx.strokeWidth)?this.barCtx.strokeWidth[i]:this.barCtx.strokeWidth)),a}},{key:"shouldApplyRadius",value:function(t){var e=this.w,i=!1;return e.config.plotOptions.bar.borderRadius>0&&(e.config.chart.stacked&&"last"===e.config.plotOptions.bar.borderRadiusWhenStacked?this.barCtx.lastActiveBarSerieIndex===t&&(i=!0):i=!0),i}},{key:"barBackground",value:function(t){var e=t.j,i=t.i,a=t.x1,s=t.x2,r=t.y1,o=t.y2,n=t.elSeries,l=this.w,h=new m(this.barCtx.ctx),c=new O(this.barCtx.ctx).getActiveConfigSeriesIndex();if(this.barCtx.barOptions.colors.backgroundBarColors.length>0&&c===i){e>=this.barCtx.barOptions.colors.backgroundBarColors.length&&(e%=this.barCtx.barOptions.colors.backgroundBarColors.length);var d=this.barCtx.barOptions.colors.backgroundBarColors[e],g=h.drawRect(void 0!==a?a:0,void 0!==r?r:0,void 0!==s?s:l.globals.gridWidth,void 0!==o?o:l.globals.gridHeight,this.barCtx.barOptions.colors.backgroundBarRadius,d,this.barCtx.barOptions.colors.backgroundBarOpacity);n.add(g),g.node.classList.add("apexcharts-backgroundBar")}}},{key:"getColumnPaths",value:function(t){var e,i=t.barWidth,a=t.barXPosition,s=t.y1,r=t.y2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.columnWidthOffset&&(u=a-c.config.series[n].data[h].columnWidthOffset/2,g=i+c.config.series[n].data[h].columnWidthOffset);var f=u,p=u+g;s+=.001,r+=.001;var x=d.move(f,s),b=d.move(f,s),v=d.line(p-o,s);return c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1)),x=x+d.line(f,r)+d.line(p-o,r)+d.line(p-o,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(f,s)+v+v+v+v+v+d.line(f,s)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.yArrj.push(r),this.barCtx.yArrjF.push(Math.abs(s-r)),this.barCtx.yArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"getBarpaths",value:function(t){var e,i=t.barYPosition,a=t.barHeight,s=t.x1,r=t.x2,o=t.strokeWidth,n=t.realIndex,l=t.i,h=t.j,c=t.w,d=new m(this.barCtx.ctx);(o=Array.isArray(o)?o[n]:o)||(o=0);var g=i,u=a;null!==(e=c.config.series[n].data[h])&&void 0!==e&&e.barHeightOffset&&(g=i-c.config.series[n].data[h].barHeightOffset/2,u=a+c.config.series[n].data[h].barHeightOffset);var f=g,p=g+u;s+=.001,r+=.001;var x=d.move(s,f),b=d.move(s,f);c.globals.previousPaths.length>0&&(b=this.barCtx.getPreviousPath(n,h,!1));var v=d.line(s,p-o);return x=x+d.line(r,f)+d.line(r,p-o)+v+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),b=b+d.line(s,f)+v+v+v+v+v+d.line(s,f)+("around"===c.config.plotOptions.bar.borderRadiusApplication?" Z":" z"),this.shouldApplyRadius(n)&&(x=d.roundPathCorners(x,c.config.plotOptions.bar.borderRadius)),c.config.chart.stacked&&(this.barCtx.xArrj.push(r),this.barCtx.xArrjF.push(Math.abs(s-r)),this.barCtx.xArrjVal.push(this.barCtx.series[l][h])),{pathTo:x,pathFrom:b}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,a=0;a=0;o--)this.barCtx.zeroSerieses.indexOf(o)>-1&&o===this.radiusOnSeriesNumber&&(this.barCtx.radiusOnSeriesNumber-=1);for(var n=e.length-1;n>=0;n--)i.globals.collapsedSeriesIndices.indexOf(this.barCtx.radiusOnSeriesNumber)>-1&&(this.barCtx.radiusOnSeriesNumber-=1)}},{key:"getXForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e+t/this.barCtx.invertedYRatio-2*(this.barCtx.isReversed?t/this.barCtx.invertedYRatio:0)),a}},{key:"getYForValue",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=i?e:null;return null!=t&&(a=e-t/this.barCtx.yRatio[this.barCtx.yaxisIndex]+2*(this.barCtx.isReversed?t/this.barCtx.yRatio[this.barCtx.yaxisIndex]:0)),a}},{key:"getGoalValues",value:function(t,e,i,a,s){var r=this,n=this.w,l=[];return n.globals.seriesGoals[a]&&n.globals.seriesGoals[a][s]&&Array.isArray(n.globals.seriesGoals[a][s])&&n.globals.seriesGoals[a][s].forEach((function(a){var s;l.push((o(s={},t,"x"===t?r.getXForValue(a.value,e,!1):r.getYForValue(a.value,i,!1)),o(s,"attrs",a),s))})),l}},{key:"drawGoalLine",value:function(t){var e=t.barXPosition,i=t.barYPosition,a=t.goalX,s=t.goalY,r=t.barWidth,o=t.barHeight,n=new m(this.barCtx.ctx),l=n.group({className:"apexcharts-bar-goals-groups"}),h=null;return this.barCtx.isHorizontal?Array.isArray(a)&&a.forEach((function(t){var e=void 0!==t.attrs.strokeHeight?t.attrs.strokeHeight:o/2,a=i+e+o/2;h=n.drawLine(t.x,a-2*e,t.x,a,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeWidth?t.attrs.strokeWidth:2,t.attrs.strokeLineCap),l.add(h)})):Array.isArray(s)&&s.forEach((function(t){var i=void 0!==t.attrs.strokeWidth?t.attrs.strokeWidth:r/2,a=e+i+r/2;h=n.drawLine(a-2*i,t.y,a,t.y,t.attrs.strokeColor?t.attrs.strokeColor:void 0,t.attrs.strokeDashArray,t.attrs.strokeHeight?t.attrs.strokeHeight:2,t.attrs.strokeLineCap),l.add(h)})),l}}]),t}(),yt=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w;var s=this.w;this.barOptions=s.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=s.config.stroke.width,this.isNullValue=!1,this.isRangeBar=s.globals.seriesRange.length&&this.isHorizontal,this.xyRatios=i,null!==this.xyRatios&&(this.xRatio=i.xRatio,this.initialXRatio=i.initialXRatio,this.yRatio=i.yRatio,this.invertedXRatio=i.invertedXRatio,this.invertedYRatio=i.invertedYRatio,this.baseLineY=i.baseLineY,this.baseLineInvertedY=i.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0;var r=new O(this.ctx);this.lastActiveBarSerieIndex=r.getActiveConfigSeriesIndex("desc",["bar","column"]);var o=r.getBarSeriesIndices(),n=new y(this.ctx);this.stackedSeriesTotals=n.getStackedSeriesTotals(this.w.config.series.map((function(t,e){return-1===o.indexOf(e)?e:-1})).filter((function(t){return-1!==t}))),this.barHelpers=new mt(this)}return r(t,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx),r=new y(this.ctx,a);t=r.getLogSeries(t),this.series=t,this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);var o=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});a.config.dataLabels.enabled&&this.totalItems>this.barOptions.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var n=0,l=0;n0&&(this.visibleI=this.visibleI+1);var k=0,A=0;this.yRatio.length>1&&(this.yaxisIndex=v),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed;var S=this.barHelpers.initialPositions();f=S.y,k=S.barHeight,c=S.yDivision,g=S.zeroW,u=S.x,A=S.barWidth,h=S.xDivision,d=S.zeroH,this.horizontal||b.push(u+A/2);for(var C=s.group({class:"apexcharts-datalabels","data:realIndex":v}),L=s.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),P=0;P0&&b.push(u+A/2),p.push(f);var X=this.barHelpers.getPathFillColor(t,n,P,v);this.renderSeries({realIndex:v,pathFill:X,j:P,i:n,pathFrom:M.pathFrom,pathTo:M.pathTo,strokeWidth:T,elSeries:w,x:u,y:f,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:C,elGoalsMarkers:L,visibleSeries:this.visibleI,type:"bar"})}a.globals.seriesXvalues[v]=b,a.globals.seriesYvalues[v]=p,o.add(w)}return o}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,a=t.lineFill,s=t.j,r=t.i,o=t.pathFrom,n=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.y1,u=t.y2,f=t.series,p=t.barHeight,x=t.barWidth,b=t.barYPosition,y=t.elDataLabelsWrap,w=t.elGoalsMarkers,k=t.visibleSeries,A=t.type,S=this.w,C=new m(this.ctx);a||(a=this.barOptions.distributed?S.globals.stroke.colors[s]:S.globals.stroke.colors[e]),S.config.series[r].data[s]&&S.config.series[r].data[s].strokeColor&&(a=S.config.series[r].data[s].strokeColor),this.isNullValue&&(i="none");var L=s/S.config.chart.animations.animateGradually.delay*(S.config.chart.animations.speed/S.globals.dataPoints)/2.4,P=C.renderPaths({i:r,j:s,realIndex:e,pathFrom:o,pathTo:n,stroke:a,strokeWidth:l,strokeLineCap:S.config.stroke.lineCap,fill:i,animationDelay:L,initialSpeed:S.config.chart.animations.speed,dataChangeSpeed:S.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(A,"-area")});P.attr("clip-path","url(#gridRectMask".concat(S.globals.cuid,")"));var T=S.config.forecastDataPoints;T.count>0&&s>=S.globals.dataPoints-T.count&&(P.node.setAttribute("stroke-dasharray",T.dashArray),P.node.setAttribute("stroke-width",T.strokeWidth),P.node.setAttribute("fill-opacity",T.fillOpacity)),void 0!==g&&void 0!==u&&(P.attr("data-range-y1",g),P.attr("data-range-y2",u)),new v(this.ctx).setSelectionFilter(P,e,s),h.add(P);var M=new vt(this).handleBarDataLabels({x:c,y:d,y1:g,y2:u,i:r,j:s,series:f,realIndex:e,barHeight:p,barWidth:x,barYPosition:b,renderedPath:P,visibleSeries:k});return null!==M.dataLabels&&y.add(M.dataLabels),M.totalDataLabels&&y.add(M.totalDataLabels),h.add(y),w&&h.add(w),h}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,a=t.strokeWidth,s=t.zeroW,r=t.x,o=t.y,n=t.yDivision,l=t.elSeries,h=this.w,c=e.i,d=e.j;h.globals.isXNumeric&&(o=(h.globals.seriesX[c][d]-h.globals.minX)/this.invertedXRatio-i);var g=o+i*this.visibleI;r=this.barHelpers.getXForValue(this.series[c][d],s);var u=this.barHelpers.getBarpaths({barYPosition:g,barHeight:i,x1:s,x2:r,strokeWidth:a,series:this.series,realIndex:e.realIndex,i:c,j:d,w:h});return h.globals.isXNumeric||(o+=n),this.barHelpers.barBackground({j:d,i:c,y1:g-i*this.visibleI,y2:i*this.seriesLen,elSeries:l}),{pathTo:u.pathTo,pathFrom:u.pathFrom,x:r,y:o,goalX:this.barHelpers.getGoalValues("x",s,null,c,d),barYPosition:g}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH,n=t.strokeWidth,l=t.elSeries,h=this.w,c=e.realIndex,d=e.i,g=e.j,u=e.bc;if(h.globals.isXNumeric){var f=c;h.globals.seriesX[c].length||(f=h.globals.maxValsInArrayIndex),i=(h.globals.seriesX[f][g]-h.globals.minX)/this.xRatio-r*this.seriesLen/2}var p=i+r*this.visibleI;a=this.barHelpers.getYForValue(this.series[d][g],o);var x=this.barHelpers.getColumnPaths({barXPosition:p,barWidth:r,y1:o,y2:a,strokeWidth:n,series:this.series,realIndex:e.realIndex,i:d,j:g,w:h});return h.globals.isXNumeric||(i+=s),this.barHelpers.barBackground({bc:u,j:g,i:d,x1:p-n/2-r*this.visibleI,x2:r*this.seriesLen+n/2,elSeries:l}),{pathTo:x.pathTo,pathFrom:x.pathFrom,x:i,y:a,goalY:this.barHelpers.getGoalValues("y",null,o,d,g),barXPosition:p}}},{key:"getPreviousPath",value:function(t,e){for(var i,a=this.w,s=0;s0&&parseInt(r.realIndex,10)===parseInt(t,10)&&void 0!==a.globals.previousPaths[s].paths[e]&&(i=a.globals.previousPaths[s].paths[e].d)}return i}}]),t}(),wt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w;this.graphics=new m(this.ctx),this.bar=new yt(this.ctx,this.xyRatios);var r=new y(this.ctx,s);t=r.getLogSeries(t),this.yRatio=r.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t),"100%"===s.config.chart.stackType&&(t=s.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var o=0;o0&&(this.totalItems+=t[o].length);for(var n=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),l=0,h=0,c=function(r,o){var c=void 0,d=void 0,g=void 0,u=void 0,f=[],p=[],b=s.globals.comboCharts?i[r]:r;a.yRatio.length>1&&(a.yaxisIndex=b),a.isReversed=s.config.yaxis[a.yaxisIndex]&&s.config.yaxis[a.yaxisIndex].reversed;var v=a.graphics.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[b]),rel:r+1,"data:realIndex":b});a.ctx.series.addCollapsedClassToSeries(v,b);var m=a.graphics.group({class:"apexcharts-datalabels","data:realIndex":b}),y=a.graphics.group({class:"apexcharts-bar-goals-markers",style:"pointer-events: none"}),w=0,k=0,A=a.initialPositions(l,h,c,d,g,u);h=A.y,w=A.barHeight,d=A.yDivision,u=A.zeroW,l=A.x,k=A.barWidth,c=A.xDivision,g=A.zeroH,a.yArrj=[],a.yArrjF=[],a.yArrjVal=[],a.xArrj=[],a.xArrjF=[],a.xArrjVal=[],1===a.prevY.length&&a.prevY[0].every((function(t){return isNaN(t)}))&&(a.prevY[0]=a.prevY[0].map((function(t){return g})),a.prevYF[0]=a.prevYF[0].map((function(t){return 0})));for(var S=0;S1?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth,10)/100:n*parseInt(l.config.plotOptions.bar.columnWidth,10)/100,s=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-n)/2),{x:t,y:e,yDivision:a,xDivision:i,barHeight:o,barWidth:n,zeroH:s,zeroW:r}}},{key:"drawStackedBarPaths",value:function(t){for(var e,i=t.indexes,a=t.barHeight,s=t.strokeWidth,r=t.zeroW,o=t.x,n=t.y,l=t.yDivision,h=t.elSeries,c=this.w,d=n,g=i.i,u=i.j,f=0,p=0;p0){var x=r;this.prevXVal[g-1][u]<0?x=this.series[g][u]>=0?this.prevX[g-1][u]+f-2*(this.isReversed?f:0):this.prevX[g-1][u]:this.prevXVal[g-1][u]>=0&&(x=this.series[g][u]>=0?this.prevX[g-1][u]:this.prevX[g-1][u]-f+2*(this.isReversed?f:0)),e=x}else e=r;o=null===this.series[g][u]?e:e+this.series[g][u]/this.invertedYRatio-2*(this.isReversed?this.series[g][u]/this.invertedYRatio:0);var b=this.barHelpers.getBarpaths({barYPosition:d,barHeight:a,x1:e,x2:o,strokeWidth:s,series:this.series,realIndex:i.realIndex,i:g,j:u,w:c});return this.barHelpers.barBackground({j:u,i:g,y1:d,y2:a,elSeries:h}),n+=l,{pathTo:b.pathTo,pathFrom:b.pathFrom,goalX:this.barHelpers.getGoalValues("x",r,null,g,u),barYPosition:d,x:o,y:n}}},{key:"drawStackedColumnPaths",value:function(t){var e=t.indexes,i=t.x,a=t.y,s=t.xDivision,r=t.barWidth,o=t.zeroH;t.strokeWidth;var n=t.elSeries,l=this.w,h=e.i,c=e.j,d=e.bc;if(l.globals.isXNumeric){var g=l.globals.seriesX[h][c];g||(g=0),i=(g-l.globals.minX)/this.xRatio-r/2}for(var u,f=i,p=0,x=0;x0&&!l.globals.isXNumeric||h>0&&l.globals.isXNumeric&&l.globals.seriesX[h-1][c]===l.globals.seriesX[h][c]){var b,v,m=Math.min(this.yRatio.length+1,h+1);if(void 0!==this.prevY[h-1])for(var y=1;y=0?v-p+2*(this.isReversed?p:0):v;break}if(this.prevYVal[h-w][c]>=0){b=this.series[h][c]>=0?v:v+p-2*(this.isReversed?p:0);break}}void 0===b&&(b=l.globals.gridHeight),u=this.prevYF[0].every((function(t){return 0===t}))&&this.prevYF.slice(1,h).every((function(t){return t.every((function(t){return isNaN(t)}))}))?o:b}else u=o;a=u-this.series[h][c]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[h][c]/this.yRatio[this.yaxisIndex]:0);var k=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:r,y1:u,y2:a,yRatio:this.yRatio[this.yaxisIndex],strokeWidth:this.strokeWidth,series:this.series,realIndex:e.realIndex,i:h,j:c,w:l});return this.barHelpers.barBackground({bc:d,j:c,i:h,x1:f,x2:r,elSeries:n}),i+=s,{pathTo:k.pathTo,pathFrom:k.pathFrom,goalY:this.barHelpers.getGoalValues("y",null,o,h,c),barXPosition:f,x:l.globals.isXNumeric?i-s:i,y:a}}}]),s}(yt),kt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this,s=this.w,r=new m(this.ctx),o=new F(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick,this.boxOptions=this.w.config.plotOptions.boxPlot,this.isHorizontal=s.config.plotOptions.bar.horizontal;var n=new y(this.ctx,s);t=n.getLogSeries(t),this.series=t,this.yRatio=n.getLogYRatios(this.yRatio),this.barHelpers.initVariables(t);for(var l=r.group({class:"apexcharts-".concat(s.config.chart.type,"-series apexcharts-plot-series")}),h=function(n){a.isBoxPlot="boxPlot"===s.config.chart.type||"boxPlot"===s.config.series[n].type;var h,c,d,g,u=void 0,f=void 0,p=[],b=[],v=s.globals.comboCharts?i[n]:n,m=r.group({class:"apexcharts-series",seriesName:x.escapeString(s.globals.seriesNames[v]),rel:n+1,"data:realIndex":v});a.ctx.series.addCollapsedClassToSeries(m,v),t[n].length>0&&(a.visibleI=a.visibleI+1);var y,w;a.yRatio.length>1&&(a.yaxisIndex=v);var k=a.barHelpers.initialPositions();f=k.y,y=k.barHeight,c=k.yDivision,g=k.zeroW,u=k.x,w=k.barWidth,h=k.xDivision,d=k.zeroH,b.push(u+w/2);for(var A=r.group({class:"apexcharts-datalabels","data:realIndex":v}),S=function(i){var r=a.barHelpers.getStrokeWidth(n,i,v),l=null,x={indexes:{i:n,j:i,realIndex:v},x:u,y:f,strokeWidth:r,elSeries:m};l=a.isHorizontal?a.drawHorizontalBoxPaths(e(e({},x),{},{yDivision:c,barHeight:y,zeroW:g})):a.drawVerticalBoxPaths(e(e({},x),{},{xDivision:h,barWidth:w,zeroH:d})),f=l.y,u=l.x,i>0&&b.push(u+w/2),p.push(f),l.pathTo.forEach((function(e,h){var c=!a.isBoxPlot&&a.candlestickOptions.wick.useFillColor?l.color[h]:s.globals.stroke.colors[n],d=o.fillPath({seriesNumber:v,dataPointIndex:i,color:l.color[h],value:t[n][i]});a.renderSeries({realIndex:v,pathFill:d,lineFill:c,j:i,i:n,pathFrom:l.pathFrom,pathTo:e,strokeWidth:r,elSeries:m,x:u,y:f,series:t,barHeight:y,barWidth:w,elDataLabelsWrap:A,visibleSeries:a.visibleI,type:s.config.chart.type})}))},C=0;Cb.c&&(d=!1);var w=Math.min(b.o,b.c),k=Math.max(b.o,b.c),A=b.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[x][c]-n.globals.minX)/this.xRatio-s/2);var S=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(w=r,k=r):(w=r-w/p,k=r-k/p,v=r-b.h/p,y=r-b.l/p,A=r-b.m/p);var C=l.move(S,r),L=l.move(S+s/2,w);return n.globals.previousPaths.length>0&&(L=this.getPreviousPath(x,c,!0)),C=this.isBoxPlot?[l.move(S,w)+l.line(S+s/2,w)+l.line(S+s/2,v)+l.line(S+s/4,v)+l.line(S+s-s/4,v)+l.line(S+s/2,v)+l.line(S+s/2,w)+l.line(S+s,w)+l.line(S+s,A)+l.line(S,A)+l.line(S,w+o/2),l.move(S,A)+l.line(S+s,A)+l.line(S+s,k)+l.line(S+s/2,k)+l.line(S+s/2,y)+l.line(S+s-s/4,y)+l.line(S+s/4,y)+l.line(S+s/2,y)+l.line(S+s/2,k)+l.line(S,k)+l.line(S,A)+"z"]:[l.move(S,k)+l.line(S+s/2,k)+l.line(S+s/2,v)+l.line(S+s/2,k)+l.line(S+s,k)+l.line(S+s,w)+l.line(S+s/2,w)+l.line(S+s/2,y)+l.line(S+s/2,w)+l.line(S,w)+l.line(S,k-o/2)],L+=l.move(S,w),n.globals.isXNumeric||(i+=a),{pathTo:C,pathFrom:L,x:i,y:k,barXPosition:S,color:this.isBoxPlot?f:d?[g]:[u]}}},{key:"drawHorizontalBoxPaths",value:function(t){var e=t.indexes;t.x;var i=t.y,a=t.yDivision,s=t.barHeight,r=t.zeroW,o=t.strokeWidth,n=this.w,l=new m(this.ctx),h=e.i,c=e.j,d=this.boxOptions.colors.lower;this.isBoxPlot&&(d=[this.boxOptions.colors.lower,this.boxOptions.colors.upper]);var g=this.invertedYRatio,u=e.realIndex,f=this.getOHLCValue(u,c),p=r,x=r,b=Math.min(f.o,f.c),v=Math.max(f.o,f.c),y=f.m;n.globals.isXNumeric&&(i=(n.globals.seriesX[u][c]-n.globals.minX)/this.invertedXRatio-s/2);var w=i+s*this.visibleI;void 0===this.series[h][c]||null===this.series[h][c]?(b=r,v=r):(b=r+b/g,v=r+v/g,p=r+f.h/g,x=r+f.l/g,y=r+f.m/g);var k=l.move(r,w),A=l.move(b,w+s/2);return n.globals.previousPaths.length>0&&(A=this.getPreviousPath(u,c,!0)),k=[l.move(b,w)+l.line(b,w+s/2)+l.line(p,w+s/2)+l.line(p,w+s/2-s/4)+l.line(p,w+s/2+s/4)+l.line(p,w+s/2)+l.line(b,w+s/2)+l.line(b,w+s)+l.line(y,w+s)+l.line(y,w)+l.line(b+o/2,w),l.move(y,w)+l.line(y,w+s)+l.line(v,w+s)+l.line(v,w+s/2)+l.line(x,w+s/2)+l.line(x,w+s-s/4)+l.line(x,w+s/4)+l.line(x,w+s/2)+l.line(v,w+s/2)+l.line(v,w)+l.line(y,w)+"z"],A+=l.move(b,w),n.globals.isXNumeric||(i+=a),{pathTo:k,pathFrom:A,x:v,y:i,barYPosition:w,color:d}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:this.isBoxPlot?i.globals.seriesCandleH[t][e]:i.globals.seriesCandleO[t][e],h:this.isBoxPlot?i.globals.seriesCandleO[t][e]:i.globals.seriesCandleH[t][e],m:i.globals.seriesCandleM[t][e],l:this.isBoxPlot?i.globals.seriesCandleC[t][e]:i.globals.seriesCandleL[t][e],c:this.isBoxPlot?i.globals.seriesCandleL[t][e]:i.globals.seriesCandleC[t][e]}}}]),s}(yt),At=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"checkColorRange",value:function(){var t=this.w,e=!1,i=t.config.plotOptions[t.config.chart.type];return i.colorScale.ranges.length>0&&i.colorScale.ranges.map((function(t,i){t.from<=0&&(e=!0)})),e}},{key:"getShadeColor",value:function(t,e,i,a){var s=this.w,r=1,o=s.config.plotOptions[t].shadeIntensity,n=this.determineColor(t,e,i);s.globals.hasNegs||a?r=s.config.plotOptions[t].reverseNegativeShade?n.percent<0?n.percent/100*(1.25*o):(1-n.percent/100)*(1.25*o):n.percent<=0?1-(1+n.percent/100)*o:(1-n.percent/100)*o:(r=1-n.percent/100,"treemap"===t&&(r=(1-n.percent/100)*(1.25*o)));var l=n.color,h=new x;return s.config.plotOptions[t].enableShades&&(l="dark"===this.w.config.theme.mode?x.hexToRgba(h.shadeColor(-1*r,n.color),s.config.fill.opacity):x.hexToRgba(h.shadeColor(r,n.color),s.config.fill.opacity)),{color:l,colorProps:n}}},{key:"determineColor",value:function(t,e,i){var a=this.w,s=a.globals.series[e][i],r=a.config.plotOptions[t],o=r.colorScale.inverse?i:e;r.distributed&&"treemap"===a.config.chart.type&&(o=i);var n=a.globals.colors[o],l=null,h=Math.min.apply(Math,u(a.globals.series[e])),c=Math.max.apply(Math,u(a.globals.series[e]));r.distributed||"heatmap"!==t||(h=a.globals.minY,c=a.globals.maxY),void 0!==r.colorScale.min&&(h=r.colorScale.mina.globals.maxY?r.colorScale.max:a.globals.maxY);var d=Math.abs(c)+Math.abs(h),g=100*s/(0===d?d-1e-6:d);r.colorScale.ranges.length>0&&r.colorScale.ranges.map((function(t,e){if(s>=t.from&&s<=t.to){n=t.color,l=t.foreColor?t.foreColor:null,h=t.from,c=t.to;var i=Math.abs(c)+Math.abs(h);g=100*s/(0===i?i-1e-6:i)}}));return{color:n,foreColor:l,percent:g}}},{key:"calculateDataLabels",value:function(t){var e=t.text,i=t.x,a=t.y,s=t.i,r=t.j,o=t.colorProps,n=t.fontSize,l=this.w.config.dataLabels,h=new m(this.ctx),c=new H(this.ctx),d=null;if(l.enabled){d=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,u=l.offsetY,f=i+g,p=a+parseFloat(l.style.fontSize)/3+u;c.plotDataLabelsText({x:f,y:p,text:e,i:s,j:r,color:o.foreColor,parent:d,fontSize:n,dataLabelsConfig:l})}return d}},{key:"addListeners",value:function(t){var e=new m(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this,t))}}]),t}(),St=function(){function t(e,i){a(this,t),this.ctx=e,this.w=e.w,this.xRatio=i.xRatio,this.yRatio=i.yRatio,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.helpers=new At(e),this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.show?this.w.config.stroke.width:0}return r(t,[{key:"draw",value:function(t){var e=this.w,i=new m(this.ctx),a=i.group({class:"apexcharts-heatmap"});a.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var s=e.globals.gridWidth/e.globals.dataPoints,r=e.globals.gridHeight/e.globals.series.length,o=0,n=!1;this.negRange=this.helpers.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(n=!0,l.reverse());for(var h=n?0:l.length-1;n?h=0;n?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:x.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(this.ctx.series.addCollapsedClassToSeries(c,h),e.config.chart.dropShadow.enabled){var d=e.config.chart.dropShadow;new v(this.ctx).dropShadow(c,d,h)}for(var g=0,u=e.config.plotOptions.heatmap.shadeIntensity,f=0;f-1&&this.pieClicked(d),i.config.dataLabels.enabled){var A=w.x,S=w.y,C=100*u/this.fullAngle+"%";if(0!==u&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabelthis.fullAngle?e.endAngle=e.endAngle-(a+o):a+o=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle&&(n=this.fullAngle+this.w.config.plotOptions.pie.startAngle%this.fullAngle-.01),Math.ceil(n)>this.fullAngle&&(n-=this.fullAngle);var l=Math.PI*(n-90)/180,h=e.centerX+s*Math.cos(o),c=e.centerY+s*Math.sin(o),d=e.centerX+s*Math.cos(l),g=e.centerY+s*Math.sin(l),u=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,n),f=x.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),p=a>180?1:0,b=["M",h,c,"A",s,s,0,p,1,d,g];return"donut"===e.chartType?[].concat(b,["L",u.x,u.y,"A",e.donutSize,e.donutSize,0,p,0,f.x,f.y,"L",h,c,"z"]).join(" "):"pie"===e.chartType||"polarArea"===e.chartType?[].concat(b,["L",e.centerX,e.centerY,"L",h,c]).join(" "):[].concat(b).join(" ")}},{key:"drawPolarElements",value:function(t){var e=this.w,i=new _(this.ctx),a=new m(this.ctx),s=new Ct(this.ctx),r=a.group(),o=a.group(),n=i.niceScale(0,Math.ceil(this.maxY),e.config.yaxis[0].tickAmount,0,!0),l=n.result.reverse(),h=n.result.length;this.maxY=n.niceMax;for(var c=e.globals.radialSize,d=c/(h-1),g=0;g1&&t.total.show&&(s=t.total.color);var o=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),n=r.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,r),a||"function"!=typeof t.total.formatter||(i=t.total.formatter(r));var l=e===t.total.label;e=t.name.formatter(e,l,r),null!==o&&(o.textContent=e),null!==n&&(n.textContent=i),null!==o&&(o.style.fill=s)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,a=t.getAttribute("data:value"),s=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"),10)-1];i.globals.series.length>1&&this.printInnerLabels(e,s,a,t);var r=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==r&&(r.style.opacity=1)}},{key:"drawSpokes",value:function(t){var e=this,i=this.w,a=new m(this.ctx),s=i.config.plotOptions.polarArea.spokes;if(0!==s.strokeWidth){for(var r=[],o=360/i.globals.series.length,n=0;n1)o&&!e.total.showAlways?l({makeSliceOut:!1,printLabel:!0}):this.printInnerLabels(e,e.total.label,e.total.formatter(s));else if(l({makeSliceOut:!1,printLabel:!0}),!o)if(s.globals.selectedDataPoints.length&&s.globals.series.length>1)if(s.globals.selectedDataPoints[0].length>0){var h=s.globals.selectedDataPoints[0],c=s.globals.dom.baseEl.querySelector(".apexcharts-".concat(this.chartType.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,e)}else r&&s.globals.selectedDataPoints.length&&0===s.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&s.globals.series.length>1&&(r.style.opacity=0)}}]),t}(),Pt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var i=this.w;this.graphics=new m(this.ctx),this.lineColorArr=void 0!==i.globals.stroke.colors?i.globals.stroke.colors:i.globals.colors,this.defaultSize=i.globals.svgHeight0&&(p=i.getPreviousPath(n));for(var b=0;b=10?t.x>0?(i="start",a+=10):t.x<0&&(i="end",a-=10):i="middle",Math.abs(t.y)>=e-10&&(t.y<0?s-=10:t.y>0&&(s+=10)),{textAnchor:i,newX:a,newY:s}}},{key:"getPreviousPath",value:function(t){for(var e=this.w,i=null,a=0;a0&&parseInt(s.realIndex,10)===parseInt(t,10)&&void 0!==e.globals.previousPaths[a].paths[0]&&(i=e.globals.previousPaths[a].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var a=[],s=0;s=360&&(g=360-Math.abs(this.startAngle)-.1);var u=i.drawPath({d:"",stroke:c,strokeWidth:o*parseInt(h.strokeWidth,10)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var f=h.dropShadow;s.dropShadow(u,f)}l.add(u),u.attr("id","apexcharts-radialbarTrack-"+n),this.animatePaths(u,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:n,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return a}},{key:"drawArcs",value:function(t){var e=this.w,i=new m(this.ctx),a=new F(this.ctx),s=new v(this.ctx),r=i.group(),o=this.getStrokeWidth(t);t.size=t.size-o/2;var n=e.config.plotOptions.radialBar.hollow.background,l=t.size-o*t.series.length-this.margin*t.series.length-o*parseInt(e.config.plotOptions.radialBar.track.strokeWidth,10)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(n=this.drawHollowImage(t,r,l,n));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:n||"transparent"});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var d=e.config.plotOptions.radialBar.hollow.dropShadow;s.dropShadow(c,d)}var g=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(g=0);var u=null;this.radialDataLabels.show&&(u=this.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:g})),"back"===e.config.plotOptions.radialBar.hollow.position&&(r.add(c),u&&r.add(u));var f=!1;e.config.plotOptions.radialBar.inverseOrder&&(f=!0);for(var p=f?t.series.length-1:0;f?p>=0:p100?100:t.series[p])/100,S=Math.round(this.totalAngle*A)+this.startAngle,C=void 0;e.globals.dataChanged&&(k=this.startAngle,C=Math.round(this.totalAngle*x.negToZero(e.globals.previousPaths[p])/100)+k),Math.abs(S)+Math.abs(w)>=360&&(S-=.01),Math.abs(C)+Math.abs(k)>=360&&(C-=.01);var L=S-w,P=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[p]:e.config.stroke.dashArray,T=i.drawPath({d:"",stroke:y,strokeWidth:o,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area apexcharts-radialbar-slice-"+p,strokeDashArray:P});if(m.setAttrs(T.node,{"data:angle":L,"data:value":t.series[p]}),e.config.chart.dropShadow.enabled){var M=e.config.chart.dropShadow;s.dropShadow(T,M,p)}s.setSelectionFilter(T,0,p),this.addListeners(T,this.radialDataLabels),b.add(T),T.attr({index:0,j:p});var I=0;!this.initialAnim||e.globals.resized||e.globals.dataChanged||(I=e.config.chart.animations.speed),e.globals.dataChanged&&(I=e.config.chart.animations.dynamicAnimation.speed),this.animDur=I/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur),this.animatePaths(T,{centerX:t.centerX,centerY:t.centerY,endAngle:S,startAngle:w,prevEndAngle:C,prevStartAngle:k,size:t.size,i:p,totalItems:2,animBeginArr:this.animBeginArr,dur:I,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:r,elHollow:c,dataLabels:u}}},{key:"drawHollow",value:function(t){var e=new m(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,a){var s=this.w,r=new F(this.ctx),o=x.randomId(),n=s.config.plotOptions.radialBar.hollow.image;if(s.config.plotOptions.radialBar.hollow.imageClipped)r.clippedImgArea({width:i,height:i,image:n,patternID:"pattern".concat(s.globals.cuid).concat(o)}),a="url(#pattern".concat(s.globals.cuid).concat(o,")");else{var l=s.config.plotOptions.radialBar.hollow.imageWidth,h=s.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-e.width/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+s.config.plotOptions.radialBar.hollow.imageOffsetY)}));e.add(c)}else{var d=s.globals.dom.Paper.image(n).loaded((function(e){this.move(t.centerX-l/2+s.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+s.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)}));e.add(d)}}return a}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size,10))/100/(t.series.length+1)-this.margin}}]),i}(Lt),Mt=function(t){n(s,t);var i=d(s);function s(){return a(this,s),i.apply(this,arguments)}return r(s,[{key:"draw",value:function(t,i){var a=this.w,s=new m(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=a.globals.seriesRangeStart,this.seriesRangeEnd=a.globals.seriesRangeEnd,this.barHelpers.initVariables(t);for(var r=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),o=0;o0&&(this.visibleI=this.visibleI+1);var p=0,b=0;this.yRatio.length>1&&(this.yaxisIndex=u);var v=this.barHelpers.initialPositions();d=v.y,h=v.zeroW,c=v.x,b=v.barWidth,n=v.xDivision,l=v.zeroH;for(var y=s.group({class:"apexcharts-datalabels","data:realIndex":u}),w=s.group({class:"apexcharts-rangebar-goals-markers",style:"pointer-events: none"}),k=0;k0}));return a=l.config.plotOptions.bar.rangeBarGroupRows?s+o*g:s+r*this.visibleI+o*g,u>-1&&!l.config.plotOptions.bar.rangeBarOverlap&&(h=l.globals.seriesRange[e][u].overlaps).indexOf(c)>-1&&(a=(r=n.barHeight/h.length)*this.visibleI+o*(100-parseInt(this.barOptions.barHeight,10))/100/2+r*(this.visibleI+h.indexOf(c))+o*g),{barYPosition:a,barHeight:r}}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x;t.strokeWidth;var a=t.xDivision,s=t.barWidth,r=t.zeroH,o=this.w,n=e.i,l=e.j,h=this.yRatio[this.yaxisIndex],c=e.realIndex,d=this.getRangeValue(c,l),g=Math.min(d.start,d.end),u=Math.max(d.start,d.end);o.globals.isXNumeric&&(i=(o.globals.seriesX[n][l]-o.globals.minX)/this.xRatio-s/2);var f=i+s*this.visibleI;void 0===this.series[n][l]||null===this.series[n][l]?g=r:(g=r-g/h,u=r-u/h);var p=Math.abs(u-g),x=this.barHelpers.getColumnPaths({barXPosition:f,barWidth:s,y1:g,y2:u,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,realIndex:e.realIndex,i:c,j:l,w:o});return o.globals.isXNumeric||(i+=a),{pathTo:x.pathTo,pathFrom:x.pathFrom,barHeight:p,x:i,y:u,goalY:this.barHelpers.getGoalValues("y",null,r,n,l),barXPosition:f}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=t.y,a=t.y1,s=t.y2,r=t.yDivision,o=t.barHeight,n=t.barYPosition,l=t.zeroW,h=this.w,c=l+a/this.invertedYRatio,d=l+s/this.invertedYRatio,g=Math.abs(d-c),u=this.barHelpers.getBarpaths({barYPosition:n,barHeight:o,x1:c,x2:d,strokeWidth:this.strokeWidth,series:this.seriesRangeEnd,i:e.realIndex,realIndex:e.realIndex,j:e.j,w:h});return h.globals.isXNumeric||(i+=r),{pathTo:u.pathTo,pathFrom:u.pathFrom,barWidth:g,x:d,goalX:this.barHelpers.getGoalValues("x",l,null,e.realIndex,e.j),y:i}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),s}(yt),It=function(){function t(e){a(this,t),this.w=e.w,this.lineCtx=e}return r(t,[{key:"sameValueSeriesFix",value:function(t,e){var i=this.w;if(("gradient"===i.config.fill.type||"gradient"===i.config.fill.type[t])&&new y(this.lineCtx.ctx,i).seriesHaveSameValues(t)){var a=e[t].slice();a[a.length-1]=a[a.length-1]+1e-6,e[t]=a}return e}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,a=t.x,s=t.y,r=t.i,o=t.j,n=t.prevY,l=this.w,h=[],c=[];if(0===o){var d=this.lineCtx.categoryAxisCorrection+l.config.markers.offsetX;l.globals.isXNumeric&&(d=(l.globals.seriesX[i][0]-l.globals.minX)/this.lineCtx.xRatio+l.config.markers.offsetX),h.push(d),c.push(x.isNumber(e[r][0])?n+l.config.markers.offsetY:null),h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null)}else h.push(a+l.config.markers.offsetX),c.push(x.isNumber(e[r][o+1])?s+l.config.markers.offsetY:null);return{x:h,y:c}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,a=t.realIndex,s=this.w,r=0;r0&&parseInt(o.realIndex,10)===parseInt(a,10)&&("line"===o.type?(this.lineCtx.appendPathFrom=!1,e=s.globals.previousPaths[r].paths[0].d):"area"===o.type&&(this.lineCtx.appendPathFrom=!1,i=s.globals.previousPaths[r].paths[0].d,s.config.stroke.show&&s.globals.previousPaths[r].paths[1]&&(e=s.globals.previousPaths[r].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e,i=t.i,a=t.series,s=t.prevY,r=t.lineYPosition,o=this.w;if(void 0!==(null===(e=a[i])||void 0===e?void 0:e[0]))s=(r=o.config.chart.stacked&&i>0?this.lineCtx.prevSeriesY[i-1][0]:this.lineCtx.zeroY)-a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]+2*(this.lineCtx.isReversed?a[i][0]/this.lineCtx.yRatio[this.lineCtx.yaxisIndex]:0);else if(o.config.chart.stacked&&i>0&&void 0===a[i][0])for(var n=i-1;n>=0;n--)if(null!==a[n][0]&&void 0!==a[n][0]){s=r=this.lineCtx.prevSeriesY[n][0];break}return{prevY:s,lineYPosition:r}}}]),t}(),zt=function(){function t(e,i,s){a(this,t),this.ctx=e,this.w=e.w,this.xyRatios=i,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||s,this.scatter=new D(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.lineHelpers=new It(this),this.markers=new R(this.ctx),this.prevSeriesY=[],this.categoryAxisCorrection=0,this.yaxisIndex=0}return r(t,[{key:"draw",value:function(t,i,a,s){var r=this.w,o=new m(this.ctx),n=r.globals.comboCharts?i:r.config.chart.type,l=o.group({class:"apexcharts-".concat(n,"-series apexcharts-plot-series")}),h=new y(this.ctx,r);this.yRatio=this.xyRatios.yRatio,this.zRatio=this.xyRatios.zRatio,this.xRatio=this.xyRatios.xRatio,this.baseLineY=this.xyRatios.baseLineY,t=h.getLogSeries(t),this.yRatio=h.getLogYRatios(this.yRatio);for(var c=[],d=0;d0&&(p=(r.globals.seriesX[g][0]-r.globals.minX)/this.xRatio),f.push(p);var x,b=p,v=void 0,w=b,k=this.zeroY,A=this.zeroY;k=this.lineHelpers.determineFirstPrevY({i:d,series:t,prevY:k,lineYPosition:0}).prevY,u.push(k),x=k;"rangeArea"===n&&(v=A=this.lineHelpers.determineFirstPrevY({i:d,series:s,prevY:A,lineYPosition:0}).prevY);var S={type:n,series:t,realIndex:g,i:d,x:p,y:1,pX:b,pY:x,pathsFrom:this._calculatePathsFrom({type:n,series:t,i:d,realIndex:g,prevX:w,prevY:k,prevY2:A}),linePaths:[],areaPaths:[],seriesIndex:a,lineYPosition:0,xArrj:f,yArrj:u,seriesRangeEnd:s},C=this._iterateOverDataPoints(e(e({},S),{},{iterations:"rangeArea"===n?t[d].length-1:void 0,isRangeStart:!0}));if("rangeArea"===n){var L=this._calculatePathsFrom({series:s,i:d,realIndex:g,prevX:w,prevY:A}),P=this._iterateOverDataPoints(e(e({},S),{},{series:s,pY:v,pathsFrom:L,iterations:s[d].length-1,isRangeStart:!1}));C.linePaths[0]=P.linePath+C.linePath,C.pathFromLine=P.pathFromLine+C.pathFromLine}this._handlePaths({type:n,realIndex:g,i:d,paths:C}),this.elSeries.add(this.elPointsMain),this.elSeries.add(this.elDataLabelsWrap),c.push(this.elSeries)}if(r.config.chart.stacked)for(var T=c.length;T>0;T--)l.add(c[T-1]);else for(var M=0;M1&&(this.yaxisIndex=i),this.isReversed=a.config.yaxis[this.yaxisIndex]&&a.config.yaxis[this.yaxisIndex].reversed,this.zeroY=a.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?a.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),this.areaBottomY=this.zeroY,(this.zeroY>a.globals.gridHeight||"end"===a.config.plotOptions.area.fillTo)&&(this.areaBottomY=a.globals.gridHeight),this.categoryAxisCorrection=this.xDivision/2,this.elSeries=s.group({class:"apexcharts-series",seriesName:x.escapeString(a.globals.seriesNames[i])}),this.elPointsMain=s.group({class:"apexcharts-series-markers-wrap","data:realIndex":i}),this.elDataLabelsWrap=s.group({class:"apexcharts-datalabels","data:realIndex":i});var r=t[e].length===a.globals.dataPoints;this.elSeries.attr({"data:longestSeries":r,rel:e+1,"data:realIndex":i}),this.appendPathFrom=!0}},{key:"_calculatePathsFrom",value:function(t){var e,i,a,s,r=t.type,o=t.series,n=t.i,l=t.realIndex,h=t.prevX,c=t.prevY,d=t.prevY2,g=this.w,u=new m(this.ctx);if(null===o[n][0]){for(var f=0;f0){var p=this.lineHelpers.checkPreviousPaths({pathFromLine:a,pathFromArea:s,realIndex:l});a=p.pathFromLine,s=p.pathFromArea}return{prevX:h,prevY:c,linePath:e,areaPath:i,pathFromLine:a,pathFromArea:s}}},{key:"_handlePaths",value:function(t){var i=t.type,a=t.realIndex,s=t.i,r=t.paths,o=this.w,n=new m(this.ctx),l=new F(this.ctx);this.prevSeriesY.push(r.yArrj),o.globals.seriesXvalues[a]=r.xArrj,o.globals.seriesYvalues[a]=r.yArrj;var h=o.config.forecastDataPoints;if(h.count>0&&"rangeArea"!==i){var c=o.globals.seriesXvalues[a][o.globals.seriesXvalues[a].length-h.count-1],d=n.drawRect(c,0,o.globals.gridWidth,o.globals.gridHeight,0);o.globals.dom.elForecastMask.appendChild(d.node);var g=n.drawRect(0,0,c,o.globals.gridHeight,0);o.globals.dom.elNonForecastMask.appendChild(g.node)}this.pointsChart||o.globals.delayedElements.push({el:this.elPointsMain.node,index:a});var u={i:s,realIndex:a,animationDelay:s,initialSpeed:o.config.chart.animations.speed,dataChangeSpeed:o.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(i)};if("area"===i)for(var f=l.fillPath({seriesNumber:a}),p=0;p0&&"rangeArea"!==i){var S=n.renderPaths(k);S.node.setAttribute("stroke-dasharray",h.dashArray),h.strokeWidth&&S.node.setAttribute("stroke-width",h.strokeWidth),this.elSeries.add(S),S.attr("clip-path","url(#forecastMask".concat(o.globals.cuid,")")),A.attr("clip-path","url(#nonForecastMask".concat(o.globals.cuid,")"))}}}}},{key:"_iterateOverDataPoints",value:function(t){var e=t.type,i=t.series,a=t.iterations,s=t.realIndex,r=t.i,o=t.x,n=t.y,l=t.pX,h=t.pY,c=t.pathsFrom,d=t.linePaths,g=t.areaPaths,u=t.seriesIndex,f=t.lineYPosition,p=t.xArrj,b=t.yArrj,v=t.isRangeStart,y=t.seriesRangeEnd,w=this.w,k=new m(this.ctx),A=this.yRatio,S=c.prevY,C=c.linePath,L=c.areaPath,P=c.pathFromLine,T=c.pathFromArea,M=x.isNumber(w.globals.minYArr[s])?w.globals.minYArr[s]:w.globals.minY;a||(a=w.globals.dataPoints>1?w.globals.dataPoints-1:w.globals.dataPoints);for(var I=n,z=0;z0&&w.globals.collapsedSeries.length-1){e--;break}return e>=0?e:0}(r-1)][z+1]}else f=this.zeroY;else f=this.zeroY;X?n=f-M/A[this.yaxisIndex]+2*(this.isReversed?M/A[this.yaxisIndex]:0):(n=f-i[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?i[r][z+1]/A[this.yaxisIndex]:0),"rangeArea"===e&&(I=f-y[r][z+1]/A[this.yaxisIndex]+2*(this.isReversed?y[r][z+1]/A[this.yaxisIndex]:0))),p.push(o),b.push(n);var Y=this.lineHelpers.calculatePoints({series:i,x:o,y:n,realIndex:s,i:r,j:z,prevY:S}),F=this._createPaths({type:e,series:i,i:r,realIndex:s,j:z,x:o,y:n,y2:I,pX:l,pY:h,linePath:C,areaPath:L,linePaths:d,areaPaths:g,seriesIndex:u,isRangeStart:v});g=F.areaPaths,d=F.linePaths,l=F.pX,h=F.pY,L=F.areaPath,C=F.linePath,this.appendPathFrom&&(P+=k.line(o,this.zeroY),T+=k.line(o,this.zeroY)),this.handleNullDataPoints(i,Y,r,z,s),this._handleMarkersAndLabels({type:e,pointsPos:Y,i:r,j:z,realIndex:s,isRangeStart:v})}return{yArrj:b,xArrj:p,pathFromArea:T,areaPaths:g,pathFromLine:P,linePaths:d,linePath:C,areaPath:L}}},{key:"_handleMarkersAndLabels",value:function(t){var e=t.type,i=t.pointsPos,a=t.isRangeStart,s=t.i,r=t.j,o=t.realIndex,n=this.w,l=new H(this.ctx);if(this.pointsChart)this.scatter.draw(this.elSeries,r,{realIndex:o,pointsPos:i,zRatio:this.zRatio,elParent:this.elPointsMain});else{n.globals.series[s].length>1&&this.elPointsMain.node.classList.add("apexcharts-element-hidden");var h=this.markers.plotChartMarkers(i,o,r+1);null!==h&&this.elPointsMain.add(h)}var c=l.drawDataLabel({type:e,isRangeStart:a,pos:i,i:o,j:r+1});null!==c&&this.elDataLabelsWrap.add(c)}},{key:"_createPaths",value:function(t){var e=t.type,i=t.series,a=t.i,s=t.realIndex,r=t.j,o=t.x,n=t.y,l=t.y2,h=t.pX,c=t.pY,d=t.linePath,g=t.areaPath,u=t.linePaths,f=t.areaPaths,p=t.seriesIndex,x=t.isRangeStart,b=this.w,v=new m(this.ctx),y=b.config.stroke.curve,w=this.areaBottomY;if(Array.isArray(b.config.stroke.curve)&&(y=Array.isArray(p)?b.config.stroke.curve[p[a]]:b.config.stroke.curve[a]),"smooth"===y){var k=.35*(o-h);b.globals.hasNullValues?(null!==i[a][r]&&(null!==i[a][r+1]?(d=v.move(h,c)+v.curve(h+k,c,o-k,n,o+1,n),g=v.move(h+1,c)+v.curve(h+k,c,o-k,n,o+1,n)+v.line(o,w)+v.line(h,w)+"z"):(d=v.move(h,c),g=v.move(h,c)+"z")),u.push(d),f.push(g)):(d+=v.curve(h+k,c,o-k,n,o,n),g+=v.curve(h+k,c,o-k,n,o,n)),h=o,c=n,r===i[a].length-2&&(g=g+v.curve(h,c,o,n,o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.curve(h,c,o,n,o,l)+v.move(o,l)+"z":b.globals.hasNullValues||(u.push(d),f.push(g)))}else{if(null===i[a][r+1]){d+=v.move(o,n);var A=b.globals.isXNumeric?(b.globals.seriesX[s][r]-b.globals.minX)/this.xRatio:o-this.xDivision;g=g+v.line(A,w)+v.move(o,n)+"z"}null===i[a][r]&&(d+=v.move(o,n),g+=v.move(o,w)),"stepline"===y?(d=d+v.line(o,null,"H")+v.line(null,n,"V"),g=g+v.line(o,null,"H")+v.line(null,n,"V")):"straight"===y&&(d+=v.line(o,n),g+=v.line(o,n)),r===i[a].length-2&&(g=g+v.line(o,w)+v.move(o,n)+"z","rangeArea"===e&&x?d=d+v.line(o,l)+v.move(o,l)+"z":(u.push(d),f.push(g)))}return{linePaths:u,areaPaths:f,pX:h,pY:c,linePath:d,areaPath:g}}},{key:"handleNullDataPoints",value:function(t,e,i,a,s){var r=this.w;if(null===t[i][a]&&r.config.markers.showNullDataPoints||1===t[i].length){var o=this.markers.plotChartMarkers(e,s,a+1,this.strokeWidth-r.config.markers.strokeWidth/2,!0);null!==o&&this.elPointsMain.add(o)}}}]),t}();window.TreemapSquared={},window.TreemapSquared.generate=function(){function t(e,i,a,s){this.xoffset=e,this.yoffset=i,this.height=s,this.width=a,this.shortestEdge=function(){return Math.min(this.height,this.width)},this.getCoordinates=function(t){var e,i=[],a=this.xoffset,s=this.yoffset,o=r(t)/this.height,n=r(t)/this.width;if(this.width>=this.height)for(e=0;e=this.height){var a=e/this.height,s=this.width-a;i=new t(this.xoffset+a,this.yoffset,s,this.height)}else{var r=e/this.width,o=this.height-r;i=new t(this.xoffset,this.yoffset+r,this.width,o)}return i}}function e(e,a,s,o,n){o=void 0===o?0:o,n=void 0===n?0:n;var l=i(function(t,e){var i,a=[],s=e/r(t);for(i=0;i=o}(e,l=t[0],n)?(e.push(l),i(t.slice(1),e,s,o)):(h=s.cutArea(r(e),o),o.push(s.getCoordinates(e)),i(t,[],h,o)),o;o.push(s.getCoordinates(e))}function a(t,e){var i=Math.min.apply(Math,t),a=Math.max.apply(Math,t),s=r(t);return Math.max(Math.pow(e,2)*a/Math.pow(s,2),Math.pow(s,2)/(Math.pow(e,2)*i))}function s(t){return t&&t.constructor===Array}function r(t){var e,i=0;for(e=0;er-a&&l.width<=o-s){var h=n.rotateAroundCenter(t.node);t.node.setAttribute("transform","rotate(-90 ".concat(h.x," ").concat(h.y,")"))}}},{key:"animateTreemap",value:function(t,e,i,a){var s=new b(this.ctx);s.animateRect(t,{x:e.x,y:e.y,width:e.width,height:e.height},{x:i.x,y:i.y,width:i.width,height:i.height},a,(function(){s.animationCompleted(t)}))}}]),t}(),Ft=86400,Rt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w,this.timeScaleArray=[],this.utc=this.w.config.xaxis.labels.datetimeUTC}return r(t,[{key:"calculateTimeScaleTicks",value:function(t,i){var a=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timescaleLabels=[],[];var r=new T(this.ctx),o=(i-t)/864e5;this.determineInterval(o),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,o<.00011574074074074075?s.globals.disableZoomIn=!0:o>5e4&&(s.globals.disableZoomOut=!0);var n=r.getTimeUnitsfromTimestamp(t,i,this.utc),l=s.globals.gridWidth/o,h=l/24,c=h/60,d=c/60,g=Math.floor(24*o),u=Math.floor(1440*o),f=Math.floor(o*Ft),p=Math.floor(o),x=Math.floor(o/30),b=Math.floor(o/365),v={minMillisecond:n.minMillisecond,minSecond:n.minSecond,minMinute:n.minMinute,minHour:n.minHour,minDate:n.minDate,minMonth:n.minMonth,minYear:n.minYear},m={firstVal:v,currentMillisecond:v.minMillisecond,currentSecond:v.minSecond,currentMinute:v.minMinute,currentHour:v.minHour,currentMonthDate:v.minDate,currentDate:v.minDate,currentMonth:v.minMonth,currentYear:v.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,secondsWidthOnXAxis:d,numberOfSeconds:f,numberOfMinutes:u,numberOfHours:g,numberOfDays:p,numberOfMonths:x,numberOfYears:b};switch(this.tickInterval){case"years":this.generateYearScale(m);break;case"months":case"half_year":this.generateMonthScale(m);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(m);break;case"hours":this.generateHourScale(m);break;case"minutes_fives":case"minutes":this.generateMinuteScale(m);break;case"seconds_tens":case"seconds_fives":case"seconds":this.generateSecondScale(m)}var y=this.timeScaleArray.map((function(t){var i={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?e(e({},i),{},{day:1,value:t.value+1}):"day"===t.unit||"hour"===t.unit?e(e({},i),{},{value:t.value}):"minute"===t.unit?e(e({},i),{},{value:t.value,minute:t.value}):"second"===t.unit?e(e({},i),{},{value:t.value,minute:t.minute,second:t.second}):t}));return y.filter((function(t){var e=1,i=Math.ceil(s.globals.gridWidth/120),r=t.value;void 0!==s.config.xaxis.tickAmount&&(i=s.config.xaxis.tickAmount),y.length>i&&(e=Math.floor(y.length/i));var o=!1,n=!1;switch(a.tickInterval){case"years":"year"===t.unit&&(o=!0);break;case"half_year":e=7,"year"===t.unit&&(o=!0);break;case"months":e=1,"year"===t.unit&&(o=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(o=!0),30===r&&(n=!0);break;case"months_days":e=10,"month"===t.unit&&(o=!0),30===r&&(n=!0);break;case"week_days":e=8,"month"===t.unit&&(o=!0);break;case"days":e=1,"month"===t.unit&&(o=!0);break;case"hours":"day"===t.unit&&(o=!0);break;case"minutes_fives":case"seconds_fives":r%5!=0&&(n=!0);break;case"seconds_tens":r%10!=0&&(n=!0)}if("hours"===a.tickInterval||"minutes_fives"===a.tickInterval||"seconds_tens"===a.tickInterval||"seconds_fives"===a.tickInterval){if(!n)return!0}else if((r%e==0||o)&&!n)return!0}))}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,a=this.formatDates(t),s=this.removeOverlappingTS(a);i.globals.timescaleLabels=s.slice(),new ot(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){var e=24*t,i=60*e;switch(!0){case t/365>5:this.tickInterval="years";break;case t>800:this.tickInterval="half_year";break;case t>180:this.tickInterval="months";break;case t>90:this.tickInterval="months_fortnight";break;case t>60:this.tickInterval="months_days";break;case t>30:this.tickInterval="week_days";break;case t>2:this.tickInterval="days";break;case e>2.4:this.tickInterval="hours";break;case i>15:this.tickInterval="minutes_fives";break;case i>5:this.tickInterval="minutes";break;case i>1:this.tickInterval="seconds_tens";break;case 60*i>20:this.tickInterval="seconds_fives";break;default:this.tickInterval="seconds"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,a=t.currentYear,s=t.daysWidthOnXAxis,r=t.numberOfYears,o=e.minYear,n=0,l=new T(this.ctx),h="year";if(e.minDate>1||e.minMonth>0){var c=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);n=(l.determineDaysOfYear(e.minYear)-c+1)*s,o=e.minYear+1,this.timeScaleArray.push({position:n,value:o,unit:h,year:o,month:x.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:n,value:o,unit:h,year:a,month:x.monthMod(i+1)});for(var d=o,g=n,u=0;u1){l=(h.determineDaysOfMonths(a+1,e.minYear)-i+1)*r,n=x.monthMod(a+1);var g=s+d,u=x.monthMod(n),f=n;0===n&&(c="year",f=g,u=1,g+=d+=1),this.timeScaleArray.push({position:l,value:f,unit:c,year:g,month:u})}else this.timeScaleArray.push({position:l,value:n,unit:c,year:s,month:x.monthMod(a)});for(var p=n+1,b=l,v=0,m=1;vo.determineDaysOfMonths(e+1,i)?(h=1,n="month",g=e+=1,e):e},d=(24-e.minHour)*s,g=l,u=c(h,i,a);0===e.minHour&&1===e.minDate?(d=0,g=x.monthMod(e.minMonth),n="month",h=e.minDate,r++):1!==e.minDate&&0===e.minHour&&0===e.minMinute&&(d=0,l=e.minDate,g=l,u=c(h=l,i,a)),this.timeScaleArray.push({position:d,value:g,unit:n,year:this._getYear(a,u,0),month:x.monthMod(u),day:h});for(var f=d,p=0;pn.determineDaysOfMonths(e+1,s)&&(p=1,e+=1),{month:e,date:p}},c=function(t,e){return t>n.determineDaysOfMonths(e+1,s)?e+=1:e},d=60-(e.minMinute+e.minSecond/60),g=d*r,u=e.minHour+1,f=u+1;60===d&&(g=0,f=(u=e.minHour)+1);var p=i,b=c(p,a);this.timeScaleArray.push({position:g,value:u,unit:l,day:p,hour:f,year:s,month:x.monthMod(b)});for(var v=g,m=0;m=24)f=0,l="day",b=h(p+=1,b).month,b=c(p,b);var y=this._getYear(s,b,0);v=0===f&&0===m?d*r:60*r+v;var w=0===f?p:f;this.timeScaleArray.push({position:v,value:w,unit:l,hour:f,day:p,year:y,month:x.monthMod(b)}),f++}}},{key:"generateMinuteScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.minutesWidthOnXAxis,h=t.secondsWidthOnXAxis,c=t.numberOfMinutes,d=a+1,g=r,u=o,f=n,p=s,b=(60-i-e/1e3)*h,v=0;v=60&&(d=0,24===(p+=1)&&(p=0)),this.timeScaleArray.push({position:b,value:d,unit:"minute",hour:p,minute:d,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,d++}},{key:"generateSecondScale",value:function(t){for(var e=t.currentMillisecond,i=t.currentSecond,a=t.currentMinute,s=t.currentHour,r=t.currentDate,o=t.currentMonth,n=t.currentYear,l=t.secondsWidthOnXAxis,h=t.numberOfSeconds,c=i+1,d=a,g=r,u=o,f=n,p=s,b=(1e3-e)/1e3*l,v=0;v=60&&(c=0,++d>=60&&(d=0,24===++p&&(p=0))),this.timeScaleArray.push({position:b,value:c,unit:"second",hour:p,minute:d,second:c,day:g,year:this._getYear(f,u,0),month:x.monthMod(u)}),b+=l,c++}},{key:"createRawDateString",value:function(t,e){var i=t.year;return 0===t.month&&(t.month=1),i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),"minute"===t.unit?i+=":"+("0"+e).slice(-2):i+=":"+(t.minute?("0"+t.minute).slice(-2):"00"),"second"===t.unit?i+=":"+("0"+e).slice(-2):i+=":00",this.utc&&(i+=".000Z"),i}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map((function(t){var a=t.value.toString(),s=new T(e.ctx),r=e.createRawDateString(t,a),o=s.getDate(s.parseDate(r));if(e.utc||(o=s.getDate(s.parseDateWithTimezone(r))),void 0===i.config.xaxis.labels.format){var n="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(n=l.year),"month"===t.unit&&(n=l.month),"day"===t.unit&&(n=l.day),"hour"===t.unit&&(n=l.hour),"minute"===t.unit&&(n=l.minute),"second"===t.unit&&(n=l.second),a=s.formatDate(o,n)}else a=s.formatDate(o,i.config.xaxis.labels.format);return{dateString:r,position:t.position,value:a,unit:t.unit,year:t.year,month:t.month}}))}},{key:"removeOverlappingTS",value:function(t){var e,i=this,a=new m(this.ctx),s=!1;t.length>0&&t[0].value&&t.every((function(e){return e.value.length===t[0].value.length}))&&(s=!0,e=a.getTextRects(t[0].value).width);var r=0,o=t.map((function(o,n){if(n>0&&i.w.config.xaxis.labels.hideOverlappingLabels){var l=s?e:a.getTextRects(t[r].value).width,h=t[r].position;return o.position>h+l+10?(r=n,o):null}return o}));return o=o.filter((function(t){return null!==t}))}},{key:"_getYear",value:function(t,e,i){return t+Math.floor(e/12)+i}}]),t}(),Dt=function(){function t(e,i){a(this,t),this.ctx=i,this.w=i.w,this.el=e}return r(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble","radar","heatmap","treemap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","rangeArea","candlestick","boxPlot","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type||"boxPlot"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.chartID,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),m.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elAnnotations=t.dom.Paper.group().attr({class:"apexcharts-annotations"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,a=i.config,s=i.globals,r={series:[],i:[]},o={series:[],i:[]},n={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]},c={series:[],i:[]},d={series:[],i:[]},g={series:[],i:[]},u={series:[],seriesRangeEnd:[],i:[]};s.series.map((function(e,f){var p=0;void 0!==t[f].type?("column"===t[f].type||"bar"===t[f].type?(s.series.length>1&&a.plotOptions.bar.horizontal&&console.warn("Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`"),h.series.push(e),h.i.push(f),p++,i.globals.columnSeries=h.series):"area"===t[f].type?(o.series.push(e),o.i.push(f),p++):"line"===t[f].type?(r.series.push(e),r.i.push(f),p++):"scatter"===t[f].type?(n.series.push(e),n.i.push(f)):"bubble"===t[f].type?(l.series.push(e),l.i.push(f),p++):"candlestick"===t[f].type?(c.series.push(e),c.i.push(f),p++):"boxPlot"===t[f].type?(d.series.push(e),d.i.push(f),p++):"rangeBar"===t[f].type?(g.series.push(e),g.i.push(f),p++):"rangeArea"===t[f].type?(u.series.push(s.seriesRangeStart[f]),u.seriesRangeEnd.push(s.seriesRangeEnd[f]),u.i.push(f),p++):console.warn("You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble"),p>1&&(s.comboCharts=!0)):(r.series.push(e),r.i.push(f))}));var f=new zt(this.ctx,e),p=new kt(this.ctx,e);this.ctx.pie=new Lt(this.ctx);var x=new Tt(this.ctx);this.ctx.rangeBar=new Mt(this.ctx,e);var b=new Pt(this.ctx),v=[];if(s.comboCharts){if(o.series.length>0&&v.push(f.draw(o.series,"area",o.i)),h.series.length>0)if(i.config.chart.stacked){var m=new wt(this.ctx,e);v.push(m.draw(h.series,h.i))}else this.ctx.bar=new yt(this.ctx,e),v.push(this.ctx.bar.draw(h.series,h.i));if(u.series.length>0&&v.push(f.draw(u.series,"rangeArea",u.i,u.seriesRangeEnd)),r.series.length>0&&v.push(f.draw(r.series,"line",r.i)),c.series.length>0&&v.push(p.draw(c.series,c.i)),d.series.length>0&&v.push(p.draw(d.series,d.i)),g.series.length>0&&v.push(this.ctx.rangeBar.draw(g.series,g.i)),n.series.length>0){var y=new zt(this.ctx,e,!0);v.push(y.draw(n.series,"scatter",n.i))}if(l.series.length>0){var w=new zt(this.ctx,e,!0);v.push(w.draw(l.series,"bubble",l.i))}}else switch(a.chart.type){case"line":v=f.draw(s.series,"line");break;case"area":v=f.draw(s.series,"area");break;case"bar":if(a.chart.stacked)v=new wt(this.ctx,e).draw(s.series);else this.ctx.bar=new yt(this.ctx,e),v=this.ctx.bar.draw(s.series);break;case"candlestick":v=new kt(this.ctx,e).draw(s.series);break;case"boxPlot":v=new kt(this.ctx,e).draw(s.series);break;case"rangeBar":v=this.ctx.rangeBar.draw(s.series);break;case"rangeArea":v=f.draw(s.seriesRangeStart,"rangeArea",void 0,s.seriesRangeEnd);break;case"heatmap":v=new St(this.ctx,e).draw(s.series);break;case"treemap":v=new Yt(this.ctx,e).draw(s.series);break;case"pie":case"donut":case"polarArea":v=this.ctx.pie.draw(s.series);break;case"radialBar":v=x.draw(s.series);break;case"radar":v=b.draw(s.series);break;default:v=f.draw(s.series)}return v}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=x.getDimensions(this.el),a=e.chart.width.toString().split(/[0-9]+/g).pop();"%"===a?x.isNumber(i[0])&&(0===i[0].width&&(i=x.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width,10)/100):"px"!==a&&""!==a||(t.svgWidth=parseInt(e.chart.width,10));var s=e.chart.height.toString().split(/[0-9]+/g).pop();if("auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===s){var r=x.getDimensions(this.el.parentNode);t.svgHeight=r[1]*parseInt(e.chart.height,10)/100}else t.svgHeight=parseInt(e.chart.height,10);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth/1.2;if(t.svgWidth<0&&(t.svgWidth=0),t.svgHeight<0&&(t.svgHeight=0),m.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight}),"%"!==s){var o=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+o+"px"}t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};m.setAttrs(t.dom.elGraphical.node,i)}},{key:"resizeNonAxisCharts",value:function(){var t=this.w,e=t.globals,i=0,a=t.config.chart.sparkline.enabled?1:15;a+=t.config.grid.padding.bottom,"top"!==t.config.legend.position&&"bottom"!==t.config.legend.position||!t.config.legend.show||t.config.legend.floating||(i=new lt(this.ctx).legendHelpers.getLegendBBox().clwh+10);var s=t.globals.dom.baseEl.querySelector(".apexcharts-radialbar, .apexcharts-pie"),r=2.05*t.globals.radialSize;if(s&&!t.config.chart.sparkline.enabled&&0!==t.config.plotOptions.radialBar.startAngle){var o=x.getBoundingClientRect(s);r=o.bottom;var n=o.bottom-o.top;r=Math.max(2.05*t.globals.radialSize,n)}var l=r+e.translateY+i+a;e.dom.elLegendForeign&&e.dom.elLegendForeign.setAttribute("height",l),t.config.chart.height&&String(t.config.chart.height).indexOf("%")>0||(e.dom.elWrap.style.height=l+"px",m.setAttrs(e.dom.Paper.node,{height:l}),e.dom.Paper.node.parentNode.parentNode.style.minHeight=l+"px")}},{key:"coreCalculations",value:function(){new U(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=function(){return t.w.config.series.map((function(t){return[]}))},i=new E,a=this.w.globals;i.initGlobalVars(a),a.seriesXvalues=e(),a.seriesYvalues=e()}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.globals.isMultipleYAxis=!0,!0}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new Q(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new Q(this.ctx).drawYCrosshairs();if("datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){this.ctx.timeScale=new Rt(this.ctx);var i=[];isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX):e.globals.isBarHorizontal&&(i=this.ctx.timeScale.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY)),this.ctx.timeScale.recalcDimensionsBasedOnFormat(i)}t=new y(this.ctx).getCalculatedRatios()}return t}},{key:"updateSourceChart",value:function(t){this.ctx.w.globals.selection=void 0,this.ctx.updateHelpers._updateOptions({chart:{selection:{xaxis:{min:t.w.globals.minX,max:t.w.globals.maxX}}}},!1,!1)}},{key:"setupBrushHandler",value:function(){var t=this,i=this.w;if(i.config.chart.brush.enabled&&"function"!=typeof i.config.chart.events.selection){var a=i.config.chart.brush.targets||[i.config.chart.brush.target];a.forEach((function(e){var i=ApexCharts.getChartByID(e);i.w.globals.brushSource=t.ctx,"function"!=typeof i.w.config.chart.events.zoomed&&(i.w.config.chart.events.zoomed=function(){t.updateSourceChart(i)}),"function"!=typeof i.w.config.chart.events.scrolled&&(i.w.config.chart.events.scrolled=function(){t.updateSourceChart(i)})})),i.config.chart.events.selection=function(t,s){a.forEach((function(t){var a=ApexCharts.getChartByID(t),r=x.clone(i.config.yaxis);if(i.config.chart.brush.autoScaleYaxis&&1===a.w.globals.series.length){var o=new _(a);r=o.autoScaleY(a,r,s)}var n=a.w.config.yaxis.reduce((function(t,i,s){return[].concat(u(t),[e(e({},a.w.config.yaxis[s]),{},{min:r[0].min,max:r[0].max})])}),[]);a.ctx.updateHelpers._updateOptions({xaxis:{min:s.xaxis.min,max:s.xaxis.max},yaxis:n},!1,!1,!1,!1)}))}}}}]),t}(),Ht=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"_updateOptions",value:function(t){var e=this,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return new Promise((function(n){var l=[e.ctx];r&&(l=e.ctx.getSyncedCharts()),e.ctx.w.globals.isExecCalled&&(l=[e.ctx],e.ctx.w.globals.isExecCalled=!1),l.forEach((function(r,h){var c=r.w;if(c.globals.shouldAnimate=s,a||(c.globals.resized=!0,c.globals.dataChanged=!0,s&&r.series.getPreviousPaths()),t&&"object"===i(t)&&(r.config=new X(t),t=y.extendArrayProps(r.config,t,c),r.w.globals.chartID!==e.ctx.w.globals.chartID&&delete t.series,c.config=x.extend(c.config,t),o&&(c.globals.lastXAxis=t.xaxis?x.clone(t.xaxis):[],c.globals.lastYAxis=t.yaxis?x.clone(t.yaxis):[],c.globals.initialConfig=x.extend({},c.config),c.globals.initialSeries=x.clone(c.config.series),t.series))){for(var d=0;d2&&void 0!==arguments[2]&&arguments[2];return new Promise((function(s){var r,o=i.w;return o.globals.shouldAnimate=e,o.globals.dataChanged=!0,e&&i.ctx.series.getPreviousPaths(),o.globals.axisCharts?(0===(r=t.map((function(t,e){return i._extendSeries(t,e)}))).length&&(r=[{data:[]}]),o.config.series=r):o.config.series=t.slice(),a&&(o.globals.initialConfig.series=x.clone(o.config.series),o.globals.initialSeries=x.clone(o.config.series)),i.ctx.update().then((function(){s(i.ctx)}))}))}},{key:"_extendSeries",value:function(t,i){var a=this.w,s=a.config.series[i];return e(e({},a.config.series[i]),{},{name:t.name?t.name:s&&s.name,color:t.color?t.color:s&&s.color,type:t.type?t.type:s&&s.type,data:t.data?t.data:s&&s.data})}},{key:"toggleDataPointSelection",value:function(t,e){var i=this.w,a=null,s=".apexcharts-series[data\\:realIndex='".concat(t,"']");return i.globals.axisCharts?a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(e,"'], ").concat(s," circle[j='").concat(e,"'], ").concat(s," rect[j='").concat(e,"']")).members[0]:void 0===e&&(a=i.globals.dom.Paper.select("".concat(s," path[j='").concat(t,"']")).members[0],"pie"!==i.config.chart.type&&"polarArea"!==i.config.chart.type&&"donut"!==i.config.chart.type||this.ctx.pie.pieClicked(t)),a?(new m(this.ctx).pathMouseDown(a,null),a.node?a.node:null):(console.warn("toggleDataPointSelection: Element not found"),null)}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;if(["min","max"].forEach((function(i){void 0!==t.xaxis[i]&&(e.config.xaxis[i]=t.xaxis[i],e.globals.lastXAxis[i]=t.xaxis[i])})),t.xaxis.categories&&t.xaxis.categories.length&&(e.config.xaxis.categories=t.xaxis.categories),e.config.xaxis.convertedCatToNumeric){var i=new z(t);t=i.convertCatToNumericXaxis(t,this.ctx)}return t}},{key:"forceYAxisUpdate",value:function(t){return t.chart&&t.chart.stacked&&"100%"===t.chart.stackType&&(Array.isArray(t.yaxis)?t.yaxis.forEach((function(e,i){t.yaxis[i].min=0,t.yaxis[i].max=100})):(t.yaxis.min=0,t.yaxis.max=100)),t}},{key:"revertDefaultAxisMinMax",value:function(t){var e=this,i=this.w,a=i.globals.lastXAxis,s=i.globals.lastYAxis;t&&t.xaxis&&(a=t.xaxis),t&&t.yaxis&&(s=t.yaxis),i.config.xaxis.min=a.min,i.config.xaxis.max=a.max;var r=function(t){void 0!==s[t]&&(i.config.yaxis[t].min=s[t].min,i.config.yaxis[t].max=s[t].max)};i.config.yaxis.map((function(t,a){i.globals.zoomed||void 0!==s[a]?r(a):void 0!==e.ctx.opts.yaxis[a]&&(t.min=e.ctx.opts.yaxis[a].min,t.max=e.ctx.opts.yaxis[a].max)}))}}]),t}();Xt="undefined"!=typeof window?window:void 0,Et=function(t,e){var a=(void 0!==this?this:t).SVG=function(t){if(a.supported)return t=new a.Doc(t),a.parser.draw||a.prepare(),t};if(a.ns="http://www.w3.org/2000/svg",a.xmlns="http://www.w3.org/2000/xmlns/",a.xlink="http://www.w3.org/1999/xlink",a.svgjs="http://svgjs.dev",a.supported=!0,!a.supported)return!1;a.did=1e3,a.eid=function(t){return"Svgjs"+d(t)+a.did++},a.create=function(t){var i=e.createElementNS(this.ns,t);return i.setAttribute("id",this.eid(t)),i},a.extend=function(){var t,e;e=(t=[].slice.call(arguments)).pop();for(var i=t.length-1;i>=0;i--)if(t[i])for(var s in e)t[i].prototype[s]=e[s];a.Set&&a.Set.inherit&&a.Set.inherit()},a.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,a.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&a.extend(e,t.extend),t.construct&&a.extend(t.parent||a.Container,t.construct),e},a.adopt=function(e){return e?e.instance?e.instance:((i="svg"==e.nodeName?e.parentNode instanceof t.SVGElement?new a.Nested:new a.Doc:"linearGradient"==e.nodeName?new a.Gradient("linear"):"radialGradient"==e.nodeName?new a.Gradient("radial"):a[d(e.nodeName)]?new(a[d(e.nodeName)]):new a.Element(e)).type=e.nodeName,i.node=e,e.instance=i,i instanceof a.Doc&&i.namespace().defs(),i.setData(JSON.parse(e.getAttribute("svgjs:data"))||{}),i):null;var i},a.prepare=function(){var t=e.getElementsByTagName("body")[0],i=(t?new a.Doc(t):a.adopt(e.documentElement).nested()).size(2,0);a.parser={body:t||e.documentElement,draw:i.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:i.polyline().node,path:i.path().node,native:a.create("svg")}},a.parser={native:a.create("svg")},e.addEventListener("DOMContentLoaded",(function(){a.parser.draw||a.prepare()}),!1),a.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},a.utils={map:function(t,e){for(var i=t.length,a=[],s=0;s1?1:t,new a.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),a.Color.test=function(t){return t+="",a.regex.isHex.test(t)||a.regex.isRgb.test(t)},a.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},a.Color.isColor=function(t){return a.Color.isRgb(t)||a.Color.test(t)},a.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},a.extend(a.Array,{toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)}}),a.PointArray=function(t,e){a.Array.call(this,t,e||[[0,0]])},a.PointArray.prototype=new a.Array,a.PointArray.prototype.constructor=a.PointArray;for(var s={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]}},r="mlhvqtcsaz".split(""),o=0,n=r.length;ol);return r},bbox:function(){return a.parser.draw||a.prepare(),a.parser.path.setAttribute("d",this.toString()),a.parser.path.getBBox()}}),a.Number=a.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-34e37:34e37:"string"==typeof t?(e=t.match(a.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof a.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new a.Number(t),new a.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new a.Number(t),new a.Number(this-t,this.unit||t.unit)},times:function(t){return t=new a.Number(t),new a.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new a.Number(t),new a.Number(this/t,this.unit||t.unit)},to:function(t){var e=new a.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new a.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new a.Number(this.destination).minus(this).times(t).plus(this):this}}}),a.Element=a.invent({create:function(t){this._stroke=a.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=u(this,t,e);return this.width(new a.Number(i.width)).height(new a.Number(i.height))},clone:function(t){this.writeDataToDom();var e=x(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(a.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter((function(e){return e!=t})).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return a.get(this.attr(t))},parent:function(e){var i=this;if(!i.node.parentNode)return null;if(i=a.adopt(i.node.parentNode),!e)return i;for(;i&&i.node instanceof t.SVGElement;){if("string"==typeof e?i.matches(e):i instanceof e)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=a.adopt(i.node.parentNode)}},doc:function(){return this instanceof a.Doc?this:this.parent(a.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var i=e.createElement("svg");if(!(t&&this instanceof a.Parent))return i.appendChild(t=e.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),i.innerHTML.replace(/^/,"").replace(/<\/svg>$/,"");i.innerHTML=""+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2>")+"";for(var s=0,r=i.firstChild.childNodes.length;s":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},a.morph=function(t){return function(e,i){return new a.MorphObj(e,i).at(t)}},a.Situation=a.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new a.Number(t.duration).valueOf(),this.delay=new a.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),a.FX=a.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(t,e,s){"object"===i(t)&&(e=t.ease,s=t.delay,t=t.duration);var r=new a.Situation({duration:t||1e3,delay:s||0,ease:a.easing[e||"-"]||e});return this.queue(r),this},target:function(t){return t&&t instanceof a.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=t.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){t.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof a.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof a.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e=this.situation;if(e.init)return this;for(var i in e.animations){t=this.target()[i](),Array.isArray(t)||(t=[t]),Array.isArray(e.animations[i])||(e.animations[i]=[e.animations[i]]);for(var s=t.length;s--;)e.animations[i][s]instanceof a.Number&&(t[s]=new a.Number(t[s])),e.animations[i][s]=t[s].morph(e.animations[i][s])}for(var i in e.attrs)e.attrs[i]=new a.MorphObj(this.target().attr(i),e.attrs[i]);for(var i in e.styles)e.styles[i]=new a.MorphObj(this.target().style(i),e.styles[i]);return e.initialTransformation=this.target().matrixify(),e.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},after:function(t){var e=this.last();return this.target().on("finished.fx",(function i(a){a.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))})),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,a.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after((function(){this.off("during.fx",i)})),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,a;t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||ithis.lastPos&&r<=s&&(this.situation.once[r].call(this.target(),this.pos,s),delete this.situation.once[r]);return this.active&&this.target().fire("during",{pos:this.pos,eased:s,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=s,this):this},eachAt:function(){var t,e=this,i=this.target(),s=this.situation;for(var r in s.animations)t=[].concat(s.animations[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i[r].apply(i,t);for(var r in s.attrs)t=[r].concat(s.attrs[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.attr.apply(i,t);for(var r in s.styles)t=[r].concat(s.styles[r]).map((function(t){return"string"!=typeof t&&t.at?t.at(s.ease(e.pos),e.pos):t})),i.style.apply(i,t);if(s.transforms.length){t=s.initialTransformation,r=0;for(var o=s.transforms.length;r=0;--s)this[m[s]]=null!=t[m[s]]?t[m[s]]:e[m[s]]},extend:{extract:function(){var t=f(this,0,1);f(this,1,0);var e=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(e*Math.PI/180)+this.f*Math.sin(e*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(e*Math.PI/180)+this.e*Math.sin(-e*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),rotation:e,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new a.Matrix(this)}},clone:function(){return new a.Matrix(this)},morph:function(t){return this.destination=new a.Matrix(t),this},multiply:function(t){return new a.Matrix(this.native().multiply(function(t){return t instanceof a.Matrix||(t=new a.Matrix(t)),t}(t).native()))},inverse:function(){return new a.Matrix(this.native().inverse())},translate:function(t,e){return new a.Matrix(this.native().translate(t||0,e||0))},native:function(){for(var t=a.parser.native.createSVGMatrix(),e=m.length-1;e>=0;e--)t[m[e]]=this[m[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:a.Element,construct:{ctm:function(){return new a.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof a.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new a.Matrix(e)}return new a.Matrix(this.node.getScreenCTM())}}}),a.Point=a.invent({create:function(t,e){var a;a=Array.isArray(t)?{x:t[0],y:t[1]}:"object"===i(t)?{x:t.x,y:t.y}:null!=t?{x:t,y:null!=e?e:t}:{x:0,y:0},this.x=a.x,this.y=a.y},extend:{clone:function(){return new a.Point(this)},morph:function(t,e){return this.destination=new a.Point(t,e),this}}}),a.extend(a.Element,{point:function(t,e){return new a.Point(t,e).transform(this.screenCTM().inverse())}}),a.extend(a.Element,{attr:function(t,e,s){if(null==t){for(t={},s=(e=this.node.attributes).length-1;s>=0;s--)t[e[s].nodeName]=a.regex.isNumber.test(e[s].nodeValue)?parseFloat(e[s].nodeValue):e[s].nodeValue;return t}if("object"===i(t))for(var r in t)this.attr(r,t[r]);else if(null===e)this.node.removeAttribute(t);else{if(null==e)return null==(e=this.node.getAttribute(t))?a.defaults.attrs[t]:a.regex.isNumber.test(e)?parseFloat(e):e;"stroke-width"==t?this.attr("stroke",parseFloat(e)>0?this._stroke:null):"stroke"==t&&(this._stroke=e),"fill"!=t&&"stroke"!=t||(a.regex.isImage.test(e)&&(e=this.doc().defs().image(e,0,0)),e instanceof a.Image&&(e=this.doc().defs().pattern(0,0,(function(){this.add(e)})))),"number"==typeof e?e=new a.Number(e):a.Color.isColor(e)?e=new a.Color(e):Array.isArray(e)&&(e=new a.Array(e)),"leading"==t?this.leading&&this.leading(e):"string"==typeof s?this.node.setAttributeNS(s,t,e.toString()):this.node.setAttribute(t,e.toString()),!this.rebuild||"font-size"!=t&&"x"!=t||this.rebuild(t,e)}return this}}),a.extend(a.Element,{transform:function(t,e){var s;return"object"!==i(t)?(s=new a.Matrix(this).extract(),"string"==typeof t?s[t]:s):(s=new a.Matrix(this),e=!!e||!!t.relative,null!=t.a&&(s=e?s.multiply(new a.Matrix(t)):new a.Matrix(t)),this.attr("transform",s))}}),a.extend(a.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(a.regex.transforms).slice(0,-1).map((function(t){var e=t.trim().split("(");return[e[0],e[1].split(a.regex.delimiter).map((function(t){return parseFloat(t)}))]})).reduce((function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])}),new a.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),a.Transformation=a.invent({create:function(t,e){if(arguments.length>1&&"boolean"!=typeof e)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(t))for(var a=0,s=this.arguments.length;a=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return a.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){for(var i=this.children(),s=0,r=i.length;s=0;i--)e.childNodes[i]instanceof t.SVGElement&&x(e.childNodes[i]);return a.adopt(e).id(a.eid(e.nodeName))}function b(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach((function(t){var e={};e[t]=function(e){if(void 0===e)return this;if("string"==typeof e||a.Color.isRgb(e)||e&&"function"==typeof e.fill)this.attr(t,e);else for(var i=l[t].length-1;i>=0;i--)null!=e[l[t][i]]&&this.attr(l.prefix(t,l[t][i]),e[l[t][i]]);return this},a.extend(a.Element,a.FX,e)})),a.extend(a.Element,a.FX,{translate:function(t,e){return this.transform({x:t,y:e})},matrix:function(t){return this.attr("transform",new a.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new a.Number(t).plus(this instanceof a.FX?0:this.x()),!0)},dy:function(t){return this.y(new a.Number(t).plus(this instanceof a.FX?0:this.y()),!0)}}),a.extend(a.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),a.Set=a.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){for(var t=[].slice.call(arguments),e=0,i=t.length;e-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members}},construct:{set:function(t){return new a.Set(t)}}}),a.FX.Set=a.invent({create:function(t){this.set=t}}),a.Set.inherit=function(){var t=[];for(var e in a.Shape.prototype)"function"==typeof a.Shape.prototype[e]&&"function"!=typeof a.Set.prototype[e]&&t.push(e);for(var e in t.forEach((function(t){a.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),a.get=function(t){var i=e.getElementById(function(t){var e=(t||"").toString().match(a.regex.reference);if(e)return e[1]}(t)||t);return a.adopt(i)},a.select=function(t,i){return new a.Set(a.utils.map((i||e).querySelectorAll(t),(function(t){return a.adopt(t)})))},a.extend(a.Parent,{select:function(t){return a.select(t,this.node)}});var m="abcdef".split("");if("function"!=typeof t.CustomEvent){var y=function(t,i){i=i||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent("CustomEvent");return a.initCustomEvent(t,i.bubbles,i.cancelable,i.detail),a};y.prototype=t.Event.prototype,a.CustomEvent=y}else a.CustomEvent=t.CustomEvent;return a},"function"==typeof define&&define.amd?define((function(){return Et(Xt,Xt.document)})):"object"===("undefined"==typeof exports?"undefined":i(exports))&&"undefined"!=typeof module?module.exports=Xt.document?Et(Xt,Xt.document):function(t){return Et(t,t.document)}:Xt.SVG=Et(Xt,Xt.document), +/*! svg.filter.js - v2.0.2 - 2016-02-24 + * https://github.com/wout/svg.filter.js + * Copyright (c) 2016 Wout Fierens; Licensed MIT */ +function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,a,s){return this.put(new SVG.DisplacementMapEffect(t,e,i,a,s))},specularLighting:function(t,e,i,a){return this.put(new SVG.SpecularLightingEffect(t,e,i,a))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,a,s){return this.put(new SVG.TurbulenceEffect(t,e,i,a,s))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,a){return this.parent()&&this.parent().displacementMap(this,t,e,i,a)},specularLighting:function(t,e,i,a){return this.parent()&&this.parent().specularLighting(t,e,i,a).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,a,s){return this.parent()&&this.parent().turbulence(t,e,i,a,s).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=s(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=s(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,a,s){this.attr({in:t,in2:e,scale:i,xChannelSelector:a,yChannelSelector:s})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",r(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,a,s){this.attr({numOctaves:e,seed:i,stitchTiles:a,baseFrequency:t,type:s})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each((function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))}))}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i1&&(T*=a=Math.sqrt(a),M*=a);s=(new SVG.Matrix).rotate(I).scale(1/T,1/M).rotate(-I),F=F.transform(s),R=R.transform(s),r=[R.x-F.x,R.y-F.y],n=r[0]*r[0]+r[1]*r[1],o=Math.sqrt(n),r[0]/=o,r[1]/=o,l=n<4?Math.sqrt(1-n/4):0,z===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-r[1],(R.y+F.y)/2+l*r[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),g=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(g*=-1);u=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(u*=-1);X&&g>u&&(u+=2*Math.PI);!X&&gr.maxX-e.width&&(o=(a=r.maxX-e.width)-this.startPoints.box.x),null!=r.minY&&sr.maxY-e.height&&(n=(s=r.maxY-e.height)-this.startPoints.box.y),null!=r.snapToGrid&&(a-=a%r.snapToGrid,s-=s%r.snapToGrid,o-=o%r.snapToGrid,n-=n%r.snapToGrid),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:o,y:n},!0):this.el.move(a,s));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var a=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?a.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1},this.pointsList={lt:[0,0],rt:["width",0],rb:["width","height"],lb:[0,"height"],t:["width",0],r:["width","height"],b:["width","height"],l:[0,"height"]},this.pointCoord=function(t,e,i){var a="string"!=typeof t?t:e[t];return i?a/2:a},this.pointCoords=function(t,e){var i=this.pointsList[t];return{x:this.pointCoord(i[0],e,"t"===t||"b"===t),y:this.pointCoord(i[1],e,"r"===t||"l"===t)}}}t.prototype.init=function(t,e){var i=this.el.bbox();this.options={};var a=this.el.selectize.defaults.points;for(var s in this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);var r=["points","pointsExclude"];for(var s in r){var o=this.options[r[s]];"string"==typeof o?o=o.length>0?o.split(/\s*,\s*/i):[]:"boolean"==typeof o&&"points"===r[s]&&(o=o?a:[]),this.options[r[s]]=o}this.options.points=[a,this.options.points].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)>-1}))})),this.options.points=[this.options.points,this.options.pointsExclude].reduce((function(t,e){return t.filter((function(t){return e.indexOf(t)<0}))})),this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set||(this.pointSelection.set=this.parent.set(),this.drawPoints()),this},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map((function(e){return[e[0]-t.x,e[1]-t.y]}))},t.prototype.drawPoints=function(){for(var t=this,e=this.getPointArray(),i=0,a=e.length;i0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i,!0),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,a=e+this.parameters.p.y,s=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),r=Math.atan2(a-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2),o=this.parameters.rotation+180*(r-s)/Math.PI+this.options.snapToAngle/2;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(o-o%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),a=this.el.array().valueOf();a[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],a[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(a)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"touchend.resize",(function(){e.done()})),SVG.on(window,"mousemove.resize",(function(t){e.update(t||window.event)})),SVG.on(window,"mouseup.resize",(function(){e.done()}))},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),a=i.x-this.parameters.p.x,s=i.y-this.parameters.p.y;this.lastUpdateCall=[a,s],this.calc(a,s),this.el.fire("resizing",{dx:a,dy:s,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,a){var s;return void 0!==a?s=[(i+t)%this.options.snapToGrid,(a+e)%this.options.snapToGrid]:(i=null==i?3:i,s=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t<0&&(s[0]-=this.options.snapToGrid),e<0&&(s[1]-=this.options.snapToGrid),t-=Math.abs(s[0])o.maxX&&(t=o.maxX-s),void 0!==o.minY&&r+eo.maxY&&(e=o.maxY-r),[t,e]},t.prototype.checkAspectRatio=function(t,e){if(!this.options.saveAspectRatio)return t;var i=t.slice(),a=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],r=this.parameters.box.height-t[1],o=s/r;return oa&&(i[0]=this.parameters.box.width-r*a,e&&(i[0]=-i[0])),i},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}(),void 0===window.Apex&&(window.Apex={});var Ot=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"initModules",value:function(){this.ctx.publicMethods=["updateOptions","updateSeries","appendData","appendSeries","toggleSeries","showSeries","hideSeries","setLocale","resetSeries","zoomX","toggleDataPointSelection","dataURI","exportToCSV","addXaxisAnnotation","addYaxisAnnotation","addPointAnnotation","clearAnnotations","removeAnnotation","paper","destroy"],this.ctx.eventList=["click","mousedown","mousemove","mouseleave","touchstart","touchmove","touchleave","mouseup","touchend"],this.ctx.animations=new b(this.ctx),this.ctx.axes=new J(this.ctx),this.ctx.core=new Dt(this.ctx.el,this.ctx),this.ctx.config=new X({}),this.ctx.data=new N(this.ctx),this.ctx.grid=new j(this.ctx),this.ctx.graphics=new m(this.ctx),this.ctx.coreUtils=new y(this.ctx),this.ctx.crosshairs=new Q(this.ctx),this.ctx.events=new Z(this.ctx),this.ctx.exports=new G(this.ctx),this.ctx.localization=new $(this.ctx),this.ctx.options=new L,this.ctx.responsive=new K(this.ctx),this.ctx.series=new O(this.ctx),this.ctx.theme=new tt(this.ctx),this.ctx.formatters=new W(this.ctx),this.ctx.titleSubtitle=new et(this.ctx),this.ctx.legend=new lt(this.ctx),this.ctx.toolbar=new ht(this.ctx),this.ctx.tooltip=new bt(this.ctx),this.ctx.dimensions=new ot(this.ctx),this.ctx.updateHelpers=new Ht(this.ctx),this.ctx.zoomPanSelection=new ct(this.ctx),this.ctx.w.globals.tooltip=new bt(this.ctx)}}]),t}(),Nt=function(){function t(e){a(this,t),this.ctx=e,this.w=e.w}return r(t,[{key:"clear",value:function(t){var e=t.isUpdating;this.ctx.zoomPanSelection&&this.ctx.zoomPanSelection.destroy(),this.ctx.toolbar&&this.ctx.toolbar.destroy(),this.ctx.animations=null,this.ctx.axes=null,this.ctx.annotations=null,this.ctx.core=null,this.ctx.data=null,this.ctx.grid=null,this.ctx.series=null,this.ctx.responsive=null,this.ctx.theme=null,this.ctx.formatters=null,this.ctx.titleSubtitle=null,this.ctx.legend=null,this.ctx.dimensions=null,this.ctx.options=null,this.ctx.crosshairs=null,this.ctx.zoomPanSelection=null,this.ctx.updateHelpers=null,this.ctx.toolbar=null,this.ctx.localization=null,this.ctx.w.globals.tooltip=null,this.clearDomElements({isUpdating:e})}},{key:"killSVG",value:function(t){t.each((function(t,e){this.removeClass("*"),this.off(),this.stop()}),!0),t.ungroup(),t.clear()}},{key:"clearDomElements",value:function(t){var e=this,i=t.isUpdating,a=this.w.globals.dom.Paper.node;a.parentNode&&a.parentNode.parentNode&&!i&&(a.parentNode.parentNode.style.minHeight="unset");var s=this.w.globals.dom.baseEl;s&&this.ctx.eventList.forEach((function(t){s.removeEventListener(t,e.ctx.events.documentEvent)}));var r=this.w.globals.dom;if(null!==this.ctx.el)for(;this.ctx.el.firstChild;)this.ctx.el.removeChild(this.ctx.el.firstChild);this.killSVG(r.Paper),r.Paper.remove(),r.elWrap=null,r.elGraphical=null,r.elAnnotations=null,r.elLegendWrap=null,r.baseEl=null,r.elGridRect=null,r.elGridRectMask=null,r.elGridRectMarkerMask=null,r.elForecastMask=null,r.elNonForecastMask=null,r.elDefs=null}}]),t}(),Wt=new WeakMap;var Bt=function(){function t(e,i){a(this,t),this.opts=i,this.ctx=this,this.w=new Y(i).init(),this.el=e,this.w.globals.cuid=x.randomId(),this.w.globals.chartID=this.w.config.chart.id?x.escapeString(this.w.config.chart.id):this.w.globals.cuid,new Ot(this).initModules(),this.create=x.bind(this.create,this),this.windowResizeHandler=this._windowResizeHandler.bind(this),this.parentResizeHandler=this._parentResizeCallback.bind(this)}return r(t,[{key:"render",value:function(){var t=this;return new Promise((function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var a=t.w.config.chart.events.beforeMount;if("function"==typeof a&&a(t,t.w),t.events.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),function(t,e){var i=!1;if(t.nodeType!==Node.DOCUMENT_FRAGMENT_NODE){var a=t.getBoundingClientRect();"none"!==t.style.display&&0!==a.width||(i=!0)}var s=new ResizeObserver((function(a){i&&e.call(t,a),i=!0}));t.nodeType===Node.DOCUMENT_FRAGMENT_NODE?Array.from(t.children).forEach((function(t){return s.observe(t)})):s.observe(t),Wt.set(e,s)}(t.el.parentNode,t.parentResizeHandler),!t.css){var s=t.el.getRootNode&&t.el.getRootNode(),r=x.is("ShadowRoot",s),o=t.el.ownerDocument,n=o.getElementById("apexcharts-css");!r&&n||(t.css=document.createElement("style"),t.css.id="apexcharts-css",t.css.textContent='@keyframes opaque {\n 0% {\n opacity: 0\n }\n\n to {\n opacity: 1\n }\n}\n\n@keyframes resizeanim {\n 0%,to {\n opacity: 0\n }\n}\n\n.apexcharts-canvas {\n position: relative;\n user-select: none\n}\n\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px\n}\n\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5)\n}\n\n.apexcharts-inner {\n position: relative\n}\n\n.apexcharts-text tspan {\n font-family: inherit\n}\n\n.legend-mouseover-inactive {\n transition: .15s ease all;\n opacity: .2\n}\n\n.apexcharts-legend-text {\n padding-left: 15px;\n margin-left: -15px;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-tooltip.apexcharts-theme-light {\n border: 1px solid #e3e3e3;\n background: rgba(255,255,255,.96)\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark {\n color: #fff;\n background: rgba(30,30,30,.8)\n}\n\n.apexcharts-tooltip * {\n font-family: inherit\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px\n}\n\n.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title {\n background: #eceff1;\n border-bottom: 1px solid #ddd\n}\n\n.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title {\n background: rgba(0,0,0,.7);\n border-bottom: 1px solid #333\n}\n\n.apexcharts-tooltip-text-goals-value,.apexcharts-tooltip-text-y-value,.apexcharts-tooltip-text-z-value {\n display: inline-block;\n margin-left: 5px;\n font-weight: 600\n}\n\n.apexcharts-tooltip-text-goals-label:empty,.apexcharts-tooltip-text-goals-value:empty,.apexcharts-tooltip-text-y-label:empty,.apexcharts-tooltip-text-y-value:empty,.apexcharts-tooltip-text-z-value:empty,.apexcharts-tooltip-title:empty {\n display: none\n}\n\n.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n padding: 6px 0 5px\n}\n\n.apexcharts-tooltip-goals-group,.apexcharts-tooltip-text-goals-label,.apexcharts-tooltip-text-goals-value {\n display: flex\n}\n\n.apexcharts-tooltip-text-goals-label:not(:empty),.apexcharts-tooltip-text-goals-value:not(:empty) {\n margin-top: -6px\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0;\n margin-right: 10px;\n border-radius: 50%\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker {\n opacity: 1\n}\n\n.apexcharts-tooltip-series-group.apexcharts-active,.apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px\n}\n\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0!important\n}\n\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px\n}\n\n.apexcharts-custom-tooltip,.apexcharts-tooltip-box {\n padding: 4px 8px\n}\n\n.apexcharts-tooltip-boxPlot {\n display: flex;\n flex-direction: column-reverse\n}\n\n.apexcharts-tooltip-box>div {\n margin: 4px 0\n}\n\n.apexcharts-tooltip-box span.value {\n font-weight: 700\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: 700;\n display: block;\n margin-bottom: 5px\n}\n\n.apexcharts-xaxistooltip,.apexcharts-yaxistooltip {\n opacity: 0;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n background: #eceff1;\n border: 1px solid #90a4ae\n}\n\n.apexcharts-xaxistooltip {\n padding: 9px 10px;\n transition: .15s ease all\n}\n\n.apexcharts-xaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before {\n left: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-xaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-left: -6px\n}\n\n.apexcharts-xaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-left: -7px\n}\n\n.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before {\n bottom: 100%\n}\n\n.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before {\n top: 100%\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before {\n border-bottom-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color: #eceff1\n}\n\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90a4ae\n}\n\n.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after,.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before {\n border-top-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-xaxistooltip.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-yaxistooltip {\n padding: 4px 10px\n}\n\n.apexcharts-yaxistooltip.apexcharts-theme-dark {\n background: rgba(0,0,0,.7);\n border: 1px solid rgba(0,0,0,.5);\n color: #fff\n}\n\n.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before {\n top: 50%;\n border: solid transparent;\n content: " ";\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none\n}\n\n.apexcharts-yaxistooltip:after {\n border-color: transparent;\n border-width: 6px;\n margin-top: -6px\n}\n\n.apexcharts-yaxistooltip:before {\n border-color: transparent;\n border-width: 7px;\n margin-top: -7px\n}\n\n.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before {\n left: 100%\n}\n\n.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before {\n right: 100%\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before {\n border-left-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #eceff1\n}\n\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90a4ae\n}\n\n.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after,.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before {\n border-right-color: rgba(0,0,0,.5)\n}\n\n.apexcharts-yaxistooltip.apexcharts-active {\n opacity: 1\n}\n\n.apexcharts-yaxistooltip-hidden {\n display: none\n}\n\n.apexcharts-xcrosshairs,.apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: .15s ease all\n}\n\n.apexcharts-xcrosshairs.apexcharts-active,.apexcharts-ycrosshairs.apexcharts-active {\n opacity: 1;\n transition: .15s ease all\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0\n}\n\n.apexcharts-selection-rect {\n cursor: move\n}\n\n.svg_select_boundingRect,.svg_select_points_rot {\n pointer-events: none;\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_boundingRect,.apexcharts-selection-rect+g .svg_select_points_rot {\n opacity: 0;\n visibility: hidden\n}\n\n.apexcharts-selection-rect+g .svg_select_points_l,.apexcharts-selection-rect+g .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible\n}\n\n.svg_select_points {\n fill: #efefef;\n stroke: #333;\n rx: 2\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-zoom {\n cursor: crosshair\n}\n\n.apexcharts-svg.apexcharts-zoomable.hovering-pan {\n cursor: move\n}\n\n.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6e8192;\n text-align: center\n}\n\n.apexcharts-menu-icon svg,.apexcharts-reset-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoomin-icon svg,.apexcharts-zoomout-icon svg {\n fill: #6e8192\n}\n\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(.76)\n}\n\n.apexcharts-theme-dark .apexcharts-menu-icon svg,.apexcharts-theme-dark .apexcharts-pan-icon svg,.apexcharts-theme-dark .apexcharts-reset-icon svg,.apexcharts-theme-dark .apexcharts-selection-icon svg,.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg,.apexcharts-theme-dark .apexcharts-zoom-icon svg,.apexcharts-theme-dark .apexcharts-zoomin-icon svg,.apexcharts-theme-dark .apexcharts-zoomout-icon svg {\n fill: #f3f4f5\n}\n\n.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg,.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg {\n fill: #008ffb\n}\n\n.apexcharts-theme-light .apexcharts-menu-icon:hover svg,.apexcharts-theme-light .apexcharts-reset-icon:hover svg,.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg,.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg,.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg {\n fill: #333\n}\n\n.apexcharts-menu-icon,.apexcharts-selection-icon {\n position: relative\n}\n\n.apexcharts-reset-icon {\n margin-left: 5px\n}\n\n.apexcharts-menu-icon,.apexcharts-reset-icon,.apexcharts-zoom-icon {\n transform: scale(.85)\n}\n\n.apexcharts-zoomin-icon,.apexcharts-zoomout-icon {\n transform: scale(.7)\n}\n\n.apexcharts-zoomout-icon {\n margin-right: 3px\n}\n\n.apexcharts-pan-icon {\n transform: scale(.62);\n position: relative;\n left: 1px;\n top: 0\n}\n\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6e8192;\n stroke-width: 2\n}\n\n.apexcharts-pan-icon.apexcharts-selected svg {\n stroke: #008ffb\n}\n\n.apexcharts-pan-icon:not(.apexcharts-selected):hover svg {\n stroke: #333\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0 6px 2px;\n display: flex;\n justify-content: space-between;\n align-items: center\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: .15s ease all;\n pointer-events: none\n}\n\n.apexcharts-menu.apexcharts-menu-open {\n opacity: 1;\n pointer-events: all;\n transition: .15s ease all\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer\n}\n\n.apexcharts-theme-light .apexcharts-menu-item:hover {\n background: #eee\n}\n\n.apexcharts-theme-dark .apexcharts-menu {\n background: rgba(0,0,0,.7);\n color: #fff\n}\n\n@media screen and (min-width:768px) {\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1\n }\n}\n\n.apexcharts-canvas .apexcharts-element-hidden,.apexcharts-datalabel.apexcharts-element-hidden,.apexcharts-hide .apexcharts-series-points {\n opacity: 0\n}\n\n.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-datalabels,.apexcharts-pie-label {\n cursor: default;\n pointer-events: none\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: .3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease\n}\n\n.apexcharts-annotation-rect,.apexcharts-area-series .apexcharts-area,.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-gridline,.apexcharts-line,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-point-annotation-label,.apexcharts-radar-series path,.apexcharts-radar-series polygon,.apexcharts-toolbar svg,.apexcharts-tooltip .apexcharts-marker,.apexcharts-xaxis-annotation-label,.apexcharts-yaxis-annotation-label,.apexcharts-zoom-rect {\n pointer-events: none\n}\n\n.apexcharts-marker {\n transition: .15s ease all\n}\n\n.resize-triggers {\n animation: 1ms resizeanim;\n visibility: hidden;\n opacity: 0;\n height: 100%;\n width: 100%;\n overflow: hidden\n}\n\n.contract-trigger:before,.resize-triggers,.resize-triggers>div {\n content: " ";\n display: block;\n position: absolute;\n top: 0;\n left: 0\n}\n\n.resize-triggers>div {\n height: 100%;\n width: 100%;\n background: #eee;\n overflow: auto\n}\n\n.contract-trigger:before {\n overflow: hidden;\n width: 200%;\n height: 200%\n}\n',r?s.prepend(t.css):o.head.appendChild(t.css))}var l=t.create(t.w.config.series,{});if(!l)return e(t);t.mount(l).then((function(){"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.events.fireEvent("mounted",[t,t.w]),e(l)})).catch((function(t){i(t)}))}else i(new Error("Element not found"))}))}},{key:"create",value:function(t,e){var i=this.w;new Ot(this).initModules();var a=this.w.globals;(a.noData=!1,a.animationEnded=!1,this.responsive.checkResponsiveConfig(e),i.config.xaxis.convertedCatToNumeric)&&new z(i.config).convertCatToNumericXaxis(i.config,this.ctx);if(null===this.el)return a.animationEnded=!0,null;if(this.core.setupElements(),"treemap"===i.config.chart.type&&(i.config.grid.show=!1,i.config.yaxis[0].show=!1),0===a.svgWidth)return a.animationEnded=!0,null;var s=y.checkComboSeries(t);a.comboCharts=s.comboCharts,a.comboBarCount=s.comboBarCount;var r=t.every((function(t){return t.data&&0===t.data.length}));(0===t.length||r)&&this.series.handleNoData(),this.events.setupEventHandlers(),this.data.parseData(t),this.theme.init(),new R(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),a.noData&&a.collapsedSeries.length!==a.series.length&&!i.config.legend.showForSingleSeries||this.legend.init(),this.series.hasAllSeriesEqualX(),a.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters(),this.ctx.toolbar.minX=i.globals.minX,this.ctx.toolbar.maxX=i.globals.maxX),this.formatters.heatmapLabelFormatters(),new y(this).getLargestMarkerSize(),this.dimensions.plotCoords();var o=this.core.xySettings();this.grid.createGridMask();var n=this.core.plotChartType(t,o),l=new H(this);l.bringForward(),i.config.dataLabels.background.enabled&&l.dataLabelsBackground(),this.core.shiftGraphPosition();var h={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:n,xyRatios:o,elInner:i.globals.dom.elGraphical,dimensions:h}}},{key:"mount",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=this,a=i.w;return new Promise((function(s,r){if(null===i.el)return r(new Error("Not enough data to display or target element not found"));(null===e||a.globals.allSeriesCollapsed)&&i.series.handleNoData(),i.grid=new j(i);var o=i.grid.drawGrid();"treemap"!==a.config.chart.type&&i.axes.drawAxis(a.config.chart.type,o),i.annotations=new P(i),i.annotations.drawImageAnnos(),i.annotations.drawTextAnnos(),"back"===a.config.grid.position&&o&&a.globals.dom.elGraphical.add(o.el);var n=new V(t.ctx,o),l=new q(t.ctx,o);if(null!==o&&(n.xAxisLabelCorrections(o.xAxisTickWidth),l.setYAxisTextAlignments(),a.config.yaxis.map((function(t,e){-1===a.globals.ignoreYAxisIndexes.indexOf(e)&&l.yAxisTitleRotate(e,t.opposite)}))),"back"===a.config.annotations.position&&(a.globals.dom.Paper.add(a.globals.dom.elAnnotations),i.annotations.drawAxesAnnotations()),Array.isArray(e.elGraph))for(var h=0;h0&&a.globals.memory.methodsToExec.forEach((function(t){t.method(t.params,!1,t.context)})),a.globals.axisCharts||a.globals.noData||i.core.resizeNonAxisCharts(),s(i)}))}},{key:"destroy",value:function(){var t,e;window.removeEventListener("resize",this.windowResizeHandler),this.el.parentNode,t=this.parentResizeHandler,(e=Wt.get(t))&&(e.disconnect(),Wt.delete(t));var i=this.w.config.chart.id;i&&Apex._chartInstances.forEach((function(t,e){t.id===x.escapeString(i)&&Apex._chartInstances.splice(e,1)})),new Nt(this.ctx).clear({isUpdating:!1})}},{key:"updateOptions",value:function(t){var e=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=this.w;return o.globals.selection=void 0,t.series&&(this.series.resetSeries(!1,!0,!1),t.series.length&&t.series[0].data&&(t.series=t.series.map((function(t,i){return e.updateHelpers._extendSeries(t,i)}))),this.updateHelpers.revertDefaultAxisMinMax()),t.xaxis&&(t=this.updateHelpers.forceXAxisUpdate(t)),t.yaxis&&(t=this.updateHelpers.forceYAxisUpdate(t)),o.globals.collapsedSeriesIndices.length>0&&this.series.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this.updateHelpers._updateOptions(t,i,a,s,r)}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=this.w.config.series.slice();return a.push(t),this.series.resetSeries(!1),this.updateHelpers.revertDefaultAxisMinMax(),this.updateHelpers._updateSeries(a,e,i)}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var a=i.w.config.series.slice(),s=0;s0&&void 0!==arguments[0])||arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.series.resetSeries(t,e)}},{key:"addEventListener",value:function(t,e){this.events.addEventListener(t,e)}},{key:"removeEventListener",value:function(t,e){this.events.removeEventListener(t,e)}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addXaxisAnnotationExternal(t,e,a)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addYaxisAnnotationExternal(t,e,a)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,a=this;i&&(a=i),a.annotations.addPointAnnotationExternal(t,e,a)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"removeAnnotation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0,i=this;e&&(i=e),i.annotations.removeAnnotation(i,t)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=new U(this.ctx);return e.getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"toggleDataPointSelection",value:function(t,e){return this.updateHelpers.toggleDataPointSelection(t,e)}},{key:"zoomX",value:function(t,e){this.ctx.toolbar.zoomUpdateOptions(t,e)}},{key:"setLocale",value:function(t){this.localization.setCurrentLocaleValues(t)}},{key:"dataURI",value:function(t){return new G(this.ctx).dataURI(t)}},{key:"exportToCSV",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=new G(this.ctx);return e.exportToCSV(t)}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"_parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.w.config.chart.redrawOnParentResize&&this._windowResize()}},{key:"_windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout((function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.ctx.update()}),150)}},{key:"_windowResizeHandler",value:function(){var t=this.w.config.chart.redrawOnWindowResize;"function"==typeof t&&(t=t()),t&&this._windowResize()}}],[{key:"getChartByID",value:function(t){var e=x.escapeString(t),i=Apex._chartInstances.filter((function(t){return t.id===e}))[0];return i&&i.chart}},{key:"initOnLoad",value:function(){for(var e=document.querySelectorAll("[data-apexcharts]"),i=0;i2?s-2:0),o=2;o { + // only draw chart, if element found + if (this.el !== null) { + if (typeof Apex._chartInstances === 'undefined') { + Apex._chartInstances = [] + } + if (this.w.config.chart.id) { + Apex._chartInstances.push({ + id: this.w.globals.chartID, + group: this.w.config.chart.group, + chart: this + }) + } + + // set the locale here + this.setLocale(this.w.config.chart.defaultLocale) + const beforeMount = this.w.config.chart.events.beforeMount + if (typeof beforeMount === 'function') { + beforeMount(this, this.w) + } + + this.events.fireEvent('beforeMount', [this, this.w]) + window.addEventListener('resize', this.windowResizeHandler) + addResizeListener(this.el.parentNode, this.parentResizeHandler) + + // Add CSS if not already added + if (!this.css) { + let rootNode = this.el.getRootNode && this.el.getRootNode() + let inShadowRoot = Utils.is('ShadowRoot', rootNode) + let doc = this.el.ownerDocument + let globalCSS = doc.getElementById('apexcharts-css') + + if (inShadowRoot || !globalCSS) { + this.css = document.createElement('style') + this.css.id = 'apexcharts-css' + this.css.textContent = apexCSS + + if (inShadowRoot) { + // We are in Shadow DOM, add to shadow root + rootNode.prepend(this.css) + } else { + // Add to of element's document + doc.head.appendChild(this.css) + } + } + } + + let graphData = this.create(this.w.config.series, {}) + if (!graphData) return resolve(this) + this.mount(graphData) + .then(() => { + if (typeof this.w.config.chart.events.mounted === 'function') { + this.w.config.chart.events.mounted(this, this.w) + } + + this.events.fireEvent('mounted', [this, this.w]) + resolve(graphData) + }) + .catch((e) => { + reject(e) + // handle error in case no data or element not found + }) + } else { + reject(new Error('Element not found')) + } + }) + } + + create(ser, opts) { + let w = this.w + + const initCtx = new InitCtxVariables(this) + initCtx.initModules() + let gl = this.w.globals + + gl.noData = false + gl.animationEnded = false + + this.responsive.checkResponsiveConfig(opts) + + if (w.config.xaxis.convertedCatToNumeric) { + const defaults = new Defaults(w.config) + defaults.convertCatToNumericXaxis(w.config, this.ctx) + } + + if (this.el === null) { + gl.animationEnded = true + return null + } + + this.core.setupElements() + + if (w.config.chart.type === 'treemap') { + w.config.grid.show = false + w.config.yaxis[0].show = false + } + + if (gl.svgWidth === 0) { + // if the element is hidden, skip drawing + gl.animationEnded = true + return null + } + + const combo = CoreUtils.checkComboSeries(ser) + gl.comboCharts = combo.comboCharts + gl.comboBarCount = combo.comboBarCount + + const allSeriesAreEmpty = ser.every((s) => s.data && s.data.length === 0) + + if (ser.length === 0 || allSeriesAreEmpty) { + this.series.handleNoData() + } + + this.events.setupEventHandlers() + + // Handle the data inputted by user and set some of the global variables (for eg, if data is datetime / numeric / category). Don't calculate the range / min / max at this time + this.data.parseData(ser) + + // this is a good time to set theme colors first + this.theme.init() + + // as markers accepts array, we need to setup global markers for easier access + const markers = new Markers(this) + markers.setGlobalMarkerSize() + + // labelFormatters should be called before dimensions as in dimensions we need text labels width + this.formatters.setLabelFormatters() + this.titleSubtitle.draw() + + // legend is calculated here before coreCalculations because it affects the plottable area + // if there is some data to show or user collapsed all series, then proceed drawing legend + if ( + !gl.noData || + gl.collapsedSeries.length === gl.series.length || + w.config.legend.showForSingleSeries + ) { + this.legend.init() + } + + // check whether in multiple series, all series share the same X + this.series.hasAllSeriesEqualX() + + // coreCalculations will give the min/max range and yaxis/axis values. It should be called here to set series variable from config to globals + if (gl.axisCharts) { + this.core.coreCalculations() + if (w.config.xaxis.type !== 'category') { + // as we have minX and maxX values, determine the default DateTimeFormat for time series + this.formatters.setLabelFormatters() + } + this.ctx.toolbar.minX = w.globals.minX + this.ctx.toolbar.maxX = w.globals.maxX + } + + // we need to generate yaxis for heatmap separately as we are not showing numerics there, but seriesNames. There are some tweaks which are required for heatmap to align labels correctly which are done in below function + // Also we need to do this before calculating Dimensions plotCoords() method of Dimensions + this.formatters.heatmapLabelFormatters() + + // get the largest marker size which will be needed in dimensions calc + const coreUtils = new CoreUtils(this) + coreUtils.getLargestMarkerSize() + + // We got plottable area here, next task would be to calculate axis areas + this.dimensions.plotCoords() + + const xyRatios = this.core.xySettings() + + this.grid.createGridMask() + + const elGraph = this.core.plotChartType(ser, xyRatios) + + const dataLabels = new DataLabels(this) + dataLabels.bringForward() + if (w.config.dataLabels.background.enabled) { + dataLabels.dataLabelsBackground() + } + + // after all the drawing calculations, shift the graphical area (actual charts/bars) excluding legends + this.core.shiftGraphPosition() + + const dim = { + plot: { + left: w.globals.translateX, + top: w.globals.translateY, + width: w.globals.gridWidth, + height: w.globals.gridHeight + } + } + + return { + elGraph, + xyRatios, + elInner: w.globals.dom.elGraphical, + dimensions: dim + } + } + + mount(graphData = null) { + let me = this + let w = me.w + + return new Promise((resolve, reject) => { + // no data to display + if (me.el === null) { + return reject( + new Error('Not enough data to display or target element not found') + ) + } else if (graphData === null || w.globals.allSeriesCollapsed) { + me.series.handleNoData() + } + if (w.config.chart.type !== 'treemap') { + me.axes.drawAxis(w.config.chart.type, graphData.xyRatios) + } + + me.grid = new Grid(me) + let elgrid = me.grid.drawGrid() + + me.annotations = new Annotations(me) + me.annotations.drawImageAnnos() + me.annotations.drawTextAnnos() + + if (w.config.grid.position === 'back' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el) + } + + let xAxis = new XAxis(this.ctx) + let yaxis = new YAxis(this.ctx) + if (elgrid !== null) { + xAxis.xAxisLabelCorrections(elgrid.xAxisTickWidth) + yaxis.setYAxisTextAlignments() + + w.config.yaxis.map((yaxe, index) => { + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + yaxis.yAxisTitleRotate(index, yaxe.opposite) + } + }) + } + + if (w.config.annotations.position === 'back') { + w.globals.dom.Paper.add(w.globals.dom.elAnnotations) + me.annotations.drawAxesAnnotations() + } + + if (Array.isArray(graphData.elGraph)) { + for (let g = 0; g < graphData.elGraph.length; g++) { + w.globals.dom.elGraphical.add(graphData.elGraph[g]) + } + } else { + w.globals.dom.elGraphical.add(graphData.elGraph) + } + + if (w.config.grid.position === 'front' && elgrid) { + w.globals.dom.elGraphical.add(elgrid.el) + } + + if (w.config.xaxis.crosshairs.position === 'front') { + me.crosshairs.drawXCrosshairs() + } + + if (w.config.yaxis[0].crosshairs.position === 'front') { + me.crosshairs.drawYCrosshairs() + } + + if (w.config.annotations.position === 'front') { + w.globals.dom.Paper.add(w.globals.dom.elAnnotations) + me.annotations.drawAxesAnnotations() + } + + if (!w.globals.noData) { + // draw tooltips at the end + if (w.config.tooltip.enabled && !w.globals.noData) { + me.w.globals.tooltip.drawTooltip(graphData.xyRatios) + } + + if ( + w.globals.axisCharts && + (w.globals.isXNumeric || + w.config.xaxis.convertedCatToNumeric || + w.globals.isRangeBar) + ) { + if ( + w.config.chart.zoom.enabled || + (w.config.chart.selection && w.config.chart.selection.enabled) || + (w.config.chart.pan && w.config.chart.pan.enabled) + ) { + me.zoomPanSelection.init({ + xyRatios: graphData.xyRatios + }) + } + } else { + const tools = w.config.chart.toolbar.tools + let toolsArr = [ + 'zoom', + 'zoomin', + 'zoomout', + 'selection', + 'pan', + 'reset' + ] + toolsArr.forEach((t) => { + tools[t] = false + }) + } + + if (w.config.chart.toolbar.show && !w.globals.allSeriesCollapsed) { + me.toolbar.createToolbar() + } + } + + if (w.globals.memory.methodsToExec.length > 0) { + w.globals.memory.methodsToExec.forEach((fn) => { + fn.method(fn.params, false, fn.context) + }) + } + + if (!w.globals.axisCharts && !w.globals.noData) { + me.core.resizeNonAxisCharts() + } + resolve(me) + }) + } + + /** + * Destroy the chart instance by removing all elements which also clean up event listeners on those elements. + */ + destroy() { + window.removeEventListener('resize', this.windowResizeHandler) + + removeResizeListener(this.el.parentNode, this.parentResizeHandler) + // remove the chart's instance from the global Apex._chartInstances + const chartID = this.w.config.chart.id + if (chartID) { + Apex._chartInstances.forEach((c, i) => { + if (c.id === Utils.escapeString(chartID)) { + Apex._chartInstances.splice(i, 1) + } + }) + } + new Destroy(this.ctx).clear({ isUpdating: false }) + } + + /** + * Allows users to update Options after the chart has rendered. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + */ + updateOptions( + options, + redraw = false, + animate = true, + updateSyncedCharts = true, + overwriteInitialConfig = true + ) { + const w = this.w + + // when called externally, clear some global variables + // fixes apexcharts.js#1488 + w.globals.selection = undefined + + if (options.series) { + this.series.resetSeries(false, true, false) + if (options.series.length && options.series[0].data) { + options.series = options.series.map((s, i) => { + return this.updateHelpers._extendSeries(s, i) + }) + } + + // user updated the series via updateOptions() function. + // Hence, we need to reset axis min/max to avoid zooming issues + this.updateHelpers.revertDefaultAxisMinMax() + } + // user has set x-axis min/max externally - hence we need to forcefully set the xaxis min/max + if (options.xaxis) { + options = this.updateHelpers.forceXAxisUpdate(options) + } + if (options.yaxis) { + options = this.updateHelpers.forceYAxisUpdate(options) + } + if (w.globals.collapsedSeriesIndices.length > 0) { + this.series.clearPreviousPaths() + } + /* update theme mode#459 */ + if (options.theme) { + options = this.theme.updateThemeOptions(options) + } + return this.updateHelpers._updateOptions( + options, + redraw, + animate, + updateSyncedCharts, + overwriteInitialConfig + ) + } + + /** + * Allows users to update Series after the chart has rendered. + * + * @param {array} series - New series which will override the existing + */ + updateSeries(newSeries = [], animate = true, overwriteInitialSeries = true) { + this.series.resetSeries(false) + this.updateHelpers.revertDefaultAxisMinMax() + return this.updateHelpers._updateSeries( + newSeries, + animate, + overwriteInitialSeries + ) + } + + /** + * Allows users to append a new series after the chart has rendered. + * + * @param {array} newSerie - New serie which will be appended to the existing series + */ + appendSeries(newSerie, animate = true, overwriteInitialSeries = true) { + const newSeries = this.w.config.series.slice() + newSeries.push(newSerie) + this.series.resetSeries(false) + this.updateHelpers.revertDefaultAxisMinMax() + return this.updateHelpers._updateSeries( + newSeries, + animate, + overwriteInitialSeries + ) + } + + /** + * Allows users to append Data to series. + * + * @param {array} newData - New data in the same format as series + */ + appendData(newData, overwriteInitialSeries = true) { + let me = this + + me.w.globals.dataChanged = true + + me.series.getPreviousPaths() + + let newSeries = me.w.config.series.slice() + + for (let i = 0; i < newSeries.length; i++) { + if (newData[i] !== null && typeof newData[i] !== 'undefined') { + for (let j = 0; j < newData[i].data.length; j++) { + newSeries[i].data.push(newData[i].data[j]) + } + } + } + me.w.config.series = newSeries + if (overwriteInitialSeries) { + me.w.globals.initialSeries = Utils.clone(me.w.config.series) + } + + return this.update() + } + + update(options) { + return new Promise((resolve, reject) => { + new Destroy(this.ctx).clear({ isUpdating: true }) + + const graphData = this.create(this.w.config.series, options) + if (!graphData) return resolve(this) + this.mount(graphData) + .then(() => { + if (typeof this.w.config.chart.events.updated === 'function') { + this.w.config.chart.events.updated(this, this.w) + } + this.events.fireEvent('updated', [this, this.w]) + + this.w.globals.isDirty = true + + resolve(this) + }) + .catch((e) => { + reject(e) + }) + }) + } + + /** + * Get all charts in the same "group" (including the instance which is called upon) to sync them when user zooms in/out or pan. + */ + getSyncedCharts() { + const chartGroups = this.getGroupedCharts() + let allCharts = [this] + if (chartGroups.length) { + allCharts = [] + chartGroups.forEach((ch) => { + allCharts.push(ch) + }) + } + + return allCharts + } + + /** + * Get charts in the same "group" (excluding the instance which is called upon) to perform operations on the other charts of the same group (eg., tooltip hovering) + */ + getGroupedCharts() { + return Apex._chartInstances + .filter((ch) => { + if (ch.group) { + return true + } + }) + .map((ch) => (this.w.config.chart.group === ch.group ? ch.chart : this)) + } + + static getChartByID(id) { + const chartId = Utils.escapeString(id) + const c = Apex._chartInstances.filter((ch) => ch.id === chartId)[0] + return c && c.chart + } + + /** + * Allows the user to provide data attrs in the element and the chart will render automatically when this method is called by searching for the elements containing 'data-apexcharts' attribute + */ + static initOnLoad() { + const els = document.querySelectorAll('[data-apexcharts]') + + for (let i = 0; i < els.length; i++) { + const el = els[i] + const options = JSON.parse(els[i].getAttribute('data-options')) + const apexChart = new ApexCharts(el, options) + apexChart.render() + } + } + + /** + * This static method allows users to call chart methods without necessarily from the + * instance of the chart in case user has assigned chartID to the targeted chart. + * The chartID is used for mapping the instance stored in Apex._chartInstances global variable + * + * This is helpful in cases when you don't have reference of the chart instance + * easily and need to call the method from anywhere. + * For eg, in React/Vue applications when you have many parent/child components, + * and need easy reference to other charts for performing dynamic operations + * + * @param {string} chartID - The unique identifier which will be used to call methods + * on that chart instance + * @param {function} fn - The method name to call + * @param {object} opts - The parameters which are accepted in the original method will be passed here in the same order. + */ + static exec(chartID, fn, ...opts) { + const chart = this.getChartByID(chartID) + if (!chart) return + + // turn on the global exec flag to indicate this method was called + chart.w.globals.isExecCalled = true + + let ret = null + if (chart.publicMethods.indexOf(fn) !== -1) { + ret = chart[fn](...opts) + } + return ret + } + + static merge(target, source) { + return Utils.extend(target, source) + } + + toggleSeries(seriesName) { + return this.series.toggleSeries(seriesName) + } + + highlightSeriesOnLegendHover(e, targetElement) { + return this.series.toggleSeriesOnHover(e, targetElement) + } + + showSeries(seriesName) { + this.series.showSeries(seriesName) + } + + hideSeries(seriesName) { + this.series.hideSeries(seriesName) + } + + resetSeries(shouldUpdateChart = true, shouldResetZoom = true) { + this.series.resetSeries(shouldUpdateChart, shouldResetZoom) + } + + // Public method to add event listener on chart context + addEventListener(name, handler) { + this.events.addEventListener(name, handler) + } + + // Public method to remove event listener on chart context + removeEventListener(name, handler) { + this.events.removeEventListener(name, handler) + } + + addXaxisAnnotation(opts, pushToMemory = true, context = undefined) { + let me = this + if (context) { + me = context + } + me.annotations.addXaxisAnnotationExternal(opts, pushToMemory, me) + } + + addYaxisAnnotation(opts, pushToMemory = true, context = undefined) { + let me = this + if (context) { + me = context + } + me.annotations.addYaxisAnnotationExternal(opts, pushToMemory, me) + } + + addPointAnnotation(opts, pushToMemory = true, context = undefined) { + let me = this + if (context) { + me = context + } + me.annotations.addPointAnnotationExternal(opts, pushToMemory, me) + } + + clearAnnotations(context = undefined) { + let me = this + if (context) { + me = context + } + me.annotations.clearAnnotations(me) + } + + removeAnnotation(id, context = undefined) { + let me = this + if (context) { + me = context + } + me.annotations.removeAnnotation(me, id) + } + + getChartArea() { + const el = this.w.globals.dom.baseEl.querySelector('.apexcharts-inner') + + return el + } + + getSeriesTotalXRange(minX, maxX) { + return this.coreUtils.getSeriesTotalsXRange(minX, maxX) + } + + getHighestValueInSeries(seriesIndex = 0) { + const range = new Range(this.ctx) + return range.getMinYMaxY(seriesIndex).highestY + } + + getLowestValueInSeries(seriesIndex = 0) { + const range = new Range(this.ctx) + return range.getMinYMaxY(seriesIndex).lowestY + } + + getSeriesTotal() { + return this.w.globals.seriesTotals + } + + toggleDataPointSelection(seriesIndex, dataPointIndex) { + return this.updateHelpers.toggleDataPointSelection( + seriesIndex, + dataPointIndex + ) + } + + zoomX(min, max) { + this.ctx.toolbar.zoomUpdateOptions(min, max) + } + + setLocale(localeName) { + this.localization.setCurrentLocaleValues(localeName) + } + + dataURI(options) { + const exp = new Exports(this.ctx) + return exp.dataURI(options) + } + + paper() { + return this.w.globals.dom.Paper + } + + _parentResizeCallback() { + if ( + this.w.globals.animationEnded && + this.w.config.chart.redrawOnParentResize + ) { + this._windowResize() + } + } + + /** + * Handle window resize and re-draw the whole chart. + */ + _windowResize() { + clearTimeout(this.w.globals.resizeTimer) + this.w.globals.resizeTimer = window.setTimeout(() => { + this.w.globals.resized = true + this.w.globals.dataChanged = false + + // we need to redraw the whole chart on window resize (with a small delay). + this.ctx.update() + }, 150) + } + + _windowResizeHandler() { + let { redrawOnWindowResize: redraw } = this.w.config.chart + + if (typeof redraw === 'function') { + redraw = redraw() + } + + redraw && this._windowResize() + } +} diff --git a/public/assets/libs/apexcharts/src/assets/apexcharts.css b/public/assets/libs/apexcharts/src/assets/apexcharts.css new file mode 100644 index 0000000..27ada7b --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/apexcharts.css @@ -0,0 +1,688 @@ +.apexcharts-canvas { + position: relative; + user-select: none; + /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */ +} + + +/* scrollbar is not visible by default for legend, hence forcing the visibility */ +.apexcharts-canvas ::-webkit-scrollbar { + -webkit-appearance: none; + width: 6px; +} + +.apexcharts-canvas ::-webkit-scrollbar-thumb { + border-radius: 4px; + background-color: rgba(0, 0, 0, .5); + box-shadow: 0 0 1px rgba(255, 255, 255, .5); + -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5); +} + + +.apexcharts-inner { + position: relative; +} + +.apexcharts-text tspan { + font-family: inherit; +} + +.legend-mouseover-inactive { + transition: 0.15s ease all; + opacity: 0.20; +} + +.apexcharts-series-collapsed { + opacity: 0; +} + +.apexcharts-tooltip { + border-radius: 5px; + box-shadow: 2px 2px 6px -4px #999; + cursor: default; + font-size: 14px; + left: 62px; + opacity: 0; + pointer-events: none; + position: absolute; + top: 20px; + display: flex; + flex-direction: column; + overflow: hidden; + white-space: nowrap; + z-index: 12; + transition: 0.15s ease all; +} + +.apexcharts-tooltip.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-tooltip.apexcharts-theme-light { + border: 1px solid #e3e3e3; + background: rgba(255, 255, 255, 0.96); +} + +.apexcharts-tooltip.apexcharts-theme-dark { + color: #fff; + background: rgba(30, 30, 30, 0.8); +} + +.apexcharts-tooltip * { + font-family: inherit; +} + + +.apexcharts-tooltip-title { + padding: 6px; + font-size: 15px; + margin-bottom: 4px; +} + +.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { + background: #ECEFF1; + border-bottom: 1px solid #ddd; +} + +.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { + background: rgba(0, 0, 0, 0.7); + border-bottom: 1px solid #333; +} + +.apexcharts-tooltip-text-y-value, +.apexcharts-tooltip-text-goals-value, +.apexcharts-tooltip-text-z-value { + display: inline-block; + font-weight: 600; + margin-left: 5px; +} + +.apexcharts-tooltip-title:empty, +.apexcharts-tooltip-text-y-label:empty, +.apexcharts-tooltip-text-y-value:empty, +.apexcharts-tooltip-text-goals-label:empty, +.apexcharts-tooltip-text-goals-value:empty, +.apexcharts-tooltip-text-z-value:empty { + display: none; +} + +.apexcharts-tooltip-text-y-value, +.apexcharts-tooltip-text-goals-value, +.apexcharts-tooltip-text-z-value { + font-weight: 600; +} + +.apexcharts-tooltip-text-goals-label, +.apexcharts-tooltip-text-goals-value { + padding: 6px 0 5px; +} + +.apexcharts-tooltip-goals-group, +.apexcharts-tooltip-text-goals-label, +.apexcharts-tooltip-text-goals-value { + display: flex; +} +.apexcharts-tooltip-text-goals-label:not(:empty), +.apexcharts-tooltip-text-goals-value:not(:empty) { + margin-top: -6px; +} + +.apexcharts-tooltip-marker { + width: 12px; + height: 12px; + position: relative; + top: 0px; + margin-right: 10px; + border-radius: 50%; +} + +.apexcharts-tooltip-series-group { + padding: 0 10px; + display: none; + text-align: left; + justify-content: left; + align-items: center; +} + +.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { + opacity: 1; +} + +.apexcharts-tooltip-series-group.apexcharts-active, +.apexcharts-tooltip-series-group:last-child { + padding-bottom: 4px; +} + +.apexcharts-tooltip-series-group-hidden { + opacity: 0; + height: 0; + line-height: 0; + padding: 0 !important; +} + +.apexcharts-tooltip-y-group { + padding: 6px 0 5px; +} + +.apexcharts-tooltip-box, .apexcharts-custom-tooltip { + padding: 4px 8px; +} + +.apexcharts-tooltip-boxPlot { + display: flex; + flex-direction: column-reverse; +} + +.apexcharts-tooltip-box>div { + margin: 4px 0; +} + +.apexcharts-tooltip-box span.value { + font-weight: bold; +} + +.apexcharts-tooltip-rangebar { + padding: 5px 8px; +} + +.apexcharts-tooltip-rangebar .category { + font-weight: 600; + color: #777; +} + +.apexcharts-tooltip-rangebar .series-name { + font-weight: bold; + display: block; + margin-bottom: 5px; +} + +.apexcharts-xaxistooltip { + opacity: 0; + padding: 9px 10px; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #ECEFF1; + border: 1px solid #90A4AE; + transition: 0.15s ease all; +} + +.apexcharts-xaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, 0.7); + border: 1px solid rgba(0, 0, 0, 0.5); + color: #fff; +} + +.apexcharts-xaxistooltip:after, +.apexcharts-xaxistooltip:before { + left: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} + +.apexcharts-xaxistooltip:after { + border-color: rgba(236, 239, 241, 0); + border-width: 6px; + margin-left: -6px; +} + +.apexcharts-xaxistooltip:before { + border-color: rgba(144, 164, 174, 0); + border-width: 7px; + margin-left: -7px; +} + +.apexcharts-xaxistooltip-bottom:after, +.apexcharts-xaxistooltip-bottom:before { + bottom: 100%; +} + +.apexcharts-xaxistooltip-top:after, +.apexcharts-xaxistooltip-top:before { + top: 100%; +} + +.apexcharts-xaxistooltip-bottom:after { + border-bottom-color: #ECEFF1; +} + +.apexcharts-xaxistooltip-bottom:before { + border-bottom-color: #90A4AE; +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after { + border-bottom-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { + border-bottom-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip-top:after { + border-top-color: #ECEFF1 +} + +.apexcharts-xaxistooltip-top:before { + border-top-color: #90A4AE; +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after { + border-top-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { + border-top-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-xaxistooltip.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-yaxistooltip { + opacity: 0; + padding: 4px 10px; + pointer-events: none; + color: #373d3f; + font-size: 13px; + text-align: center; + border-radius: 2px; + position: absolute; + z-index: 10; + background: #ECEFF1; + border: 1px solid #90A4AE; +} + +.apexcharts-yaxistooltip.apexcharts-theme-dark { + background: rgba(0, 0, 0, 0.7); + border: 1px solid rgba(0, 0, 0, 0.5); + color: #fff; +} + +.apexcharts-yaxistooltip:after, +.apexcharts-yaxistooltip:before { + top: 50%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} + +.apexcharts-yaxistooltip:after { + border-color: rgba(236, 239, 241, 0); + border-width: 6px; + margin-top: -6px; +} + +.apexcharts-yaxistooltip:before { + border-color: rgba(144, 164, 174, 0); + border-width: 7px; + margin-top: -7px; +} + +.apexcharts-yaxistooltip-left:after, +.apexcharts-yaxistooltip-left:before { + left: 100%; +} + +.apexcharts-yaxistooltip-right:after, +.apexcharts-yaxistooltip-right:before { + right: 100%; +} + +.apexcharts-yaxistooltip-left:after { + border-left-color: #ECEFF1; +} + +.apexcharts-yaxistooltip-left:before { + border-left-color: #90A4AE; +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after { + border-left-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { + border-left-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip-right:after { + border-right-color: #ECEFF1; +} + +.apexcharts-yaxistooltip-right:before { + border-right-color: #90A4AE; +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after { + border-right-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { + border-right-color: rgba(0, 0, 0, 0.5); +} + +.apexcharts-yaxistooltip.apexcharts-active { + opacity: 1; +} + +.apexcharts-yaxistooltip-hidden { + display: none; +} + +.apexcharts-xcrosshairs, +.apexcharts-ycrosshairs { + pointer-events: none; + opacity: 0; + transition: 0.15s ease all; +} + +.apexcharts-xcrosshairs.apexcharts-active, +.apexcharts-ycrosshairs.apexcharts-active { + opacity: 1; + transition: 0.15s ease all; +} + +.apexcharts-ycrosshairs-hidden { + opacity: 0; +} + +.apexcharts-selection-rect { + cursor: move; +} + +.svg_select_boundingRect, .svg_select_points_rot { + pointer-events: none; + opacity: 0; + visibility: hidden; +} +.apexcharts-selection-rect + g .svg_select_boundingRect, +.apexcharts-selection-rect + g .svg_select_points_rot { + opacity: 0; + visibility: hidden; +} + +.apexcharts-selection-rect + g .svg_select_points_l, +.apexcharts-selection-rect + g .svg_select_points_r { + cursor: ew-resize; + opacity: 1; + visibility: visible; +} + +.svg_select_points { + fill: #efefef; + stroke: #333; + rx: 2; +} + +.apexcharts-svg.apexcharts-zoomable.hovering-zoom { + cursor: crosshair +} + +.apexcharts-svg.apexcharts-zoomable.hovering-pan { + cursor: move +} + +.apexcharts-zoom-icon, +.apexcharts-zoomin-icon, +.apexcharts-zoomout-icon, +.apexcharts-reset-icon, +.apexcharts-pan-icon, +.apexcharts-selection-icon, +.apexcharts-menu-icon, +.apexcharts-toolbar-custom-icon { + cursor: pointer; + width: 20px; + height: 20px; + line-height: 24px; + color: #6E8192; + text-align: center; +} + +.apexcharts-zoom-icon svg, +.apexcharts-zoomin-icon svg, +.apexcharts-zoomout-icon svg, +.apexcharts-reset-icon svg, +.apexcharts-menu-icon svg { + fill: #6E8192; +} + +.apexcharts-selection-icon svg { + fill: #444; + transform: scale(0.76) +} + +.apexcharts-theme-dark .apexcharts-zoom-icon svg, +.apexcharts-theme-dark .apexcharts-zoomin-icon svg, +.apexcharts-theme-dark .apexcharts-zoomout-icon svg, +.apexcharts-theme-dark .apexcharts-reset-icon svg, +.apexcharts-theme-dark .apexcharts-pan-icon svg, +.apexcharts-theme-dark .apexcharts-selection-icon svg, +.apexcharts-theme-dark .apexcharts-menu-icon svg, +.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg { + fill: #f3f4f5; +} + +.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg, +.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg, +.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg { + fill: #008FFB; +} + +.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg, +.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg, +.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg, +.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg, +.apexcharts-theme-light .apexcharts-reset-icon:hover svg, +.apexcharts-theme-light .apexcharts-menu-icon:hover svg { + fill: #333; +} + +.apexcharts-selection-icon, +.apexcharts-menu-icon { + position: relative; +} + +.apexcharts-reset-icon { + margin-left: 5px; +} + +.apexcharts-zoom-icon, +.apexcharts-reset-icon, +.apexcharts-menu-icon { + transform: scale(0.85); +} + +.apexcharts-zoomin-icon, +.apexcharts-zoomout-icon { + transform: scale(0.7) +} + +.apexcharts-zoomout-icon { + margin-right: 3px; +} + +.apexcharts-pan-icon { + transform: scale(0.62); + position: relative; + left: 1px; + top: 0px; +} + +.apexcharts-pan-icon svg { + fill: #fff; + stroke: #6E8192; + stroke-width: 2; +} + +.apexcharts-pan-icon.apexcharts-selected svg { + stroke: #008FFB; +} + +.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { + stroke: #333; +} + +.apexcharts-toolbar { + position: absolute; + z-index: 11; + max-width: 176px; + text-align: right; + border-radius: 3px; + padding: 0px 6px 2px 6px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.apexcharts-menu { + background: #fff; + position: absolute; + top: 100%; + border: 1px solid #ddd; + border-radius: 3px; + padding: 3px; + right: 10px; + opacity: 0; + min-width: 110px; + transition: 0.15s ease all; + pointer-events: none; +} + +.apexcharts-menu.apexcharts-menu-open { + opacity: 1; + pointer-events: all; + transition: 0.15s ease all; +} + +.apexcharts-menu-item { + padding: 6px 7px; + font-size: 12px; + cursor: pointer; +} + +.apexcharts-theme-light .apexcharts-menu-item:hover { + background: #eee; +} + +.apexcharts-theme-dark .apexcharts-menu { + background: rgba(0, 0, 0, 0.7); + color: #fff; +} + +@media screen and (min-width: 768px) { + .apexcharts-canvas:hover .apexcharts-toolbar { + opacity: 1; + } +} + +.apexcharts-datalabel.apexcharts-element-hidden { + opacity: 0; +} + +.apexcharts-pie-label, +.apexcharts-datalabels, +.apexcharts-datalabel, +.apexcharts-datalabel-label, +.apexcharts-datalabel-value { + cursor: default; + pointer-events: none; +} + +.apexcharts-pie-label-delay { + opacity: 0; + animation-name: opaque; + animation-duration: 0.3s; + animation-fill-mode: forwards; + animation-timing-function: ease; +} + +.apexcharts-canvas .apexcharts-element-hidden { + opacity: 0; +} + +.apexcharts-hide .apexcharts-series-points { + opacity: 0; +} + +.apexcharts-gridline, +.apexcharts-annotation-rect, +.apexcharts-tooltip .apexcharts-marker, +.apexcharts-area-series .apexcharts-area, +.apexcharts-line, +.apexcharts-zoom-rect, +.apexcharts-toolbar svg, +.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, +.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, +.apexcharts-radar-series path, +.apexcharts-radar-series polygon { + pointer-events: none; +} + + +/* markers */ + +.apexcharts-marker { + transition: 0.15s ease all; +} + +@keyframes opaque { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + + +/* Resize generated styles */ + +@keyframes resizeanim { + from { + opacity: 0; + } + to { + opacity: 0; + } +} + +.resize-triggers { + animation: 1ms resizeanim; + visibility: hidden; + opacity: 0; +} + +.resize-triggers, +.resize-triggers>div, +.contract-trigger:before { + content: " "; + display: block; + position: absolute; + top: 0; + left: 0; + height: 100%; + width: 100%; + overflow: hidden; +} + +.resize-triggers>div { + background: #eee; + overflow: auto; +} + +.contract-trigger:before { + width: 200%; + height: 200%; +} \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-camera.svg b/public/assets/libs/apexcharts/src/assets/ico-camera.svg new file mode 100644 index 0000000..3f052f2 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-camera.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-home.svg b/public/assets/libs/apexcharts/src/assets/ico-home.svg new file mode 100644 index 0000000..676d2d3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-home.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-menu.svg b/public/assets/libs/apexcharts/src/assets/ico-menu.svg new file mode 100644 index 0000000..770b192 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-minus-square.svg b/public/assets/libs/apexcharts/src/assets/ico-minus-square.svg new file mode 100644 index 0000000..c4988e8 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-minus-square.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/public/assets/libs/apexcharts/src/assets/ico-minus.svg b/public/assets/libs/apexcharts/src/assets/ico-minus.svg new file mode 100644 index 0000000..f0a7ec8 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-minus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/libs/apexcharts/src/assets/ico-pan-hand.svg b/public/assets/libs/apexcharts/src/assets/ico-pan-hand.svg new file mode 100644 index 0000000..1768e5e --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-pan-hand.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-pan.svg b/public/assets/libs/apexcharts/src/assets/ico-pan.svg new file mode 100644 index 0000000..ae65a94 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-pan.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-plus-square.svg b/public/assets/libs/apexcharts/src/assets/ico-plus-square.svg new file mode 100644 index 0000000..f1b885f --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-plus-square.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/libs/apexcharts/src/assets/ico-plus.svg b/public/assets/libs/apexcharts/src/assets/ico-plus.svg new file mode 100644 index 0000000..b376ab5 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-plus.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/assets/libs/apexcharts/src/assets/ico-refresh.svg b/public/assets/libs/apexcharts/src/assets/ico-refresh.svg new file mode 100644 index 0000000..81c46c6 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-refresh.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-reset.svg b/public/assets/libs/apexcharts/src/assets/ico-reset.svg new file mode 100644 index 0000000..2ee1dc3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-reset.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-select.svg b/public/assets/libs/apexcharts/src/assets/ico-select.svg new file mode 100644 index 0000000..326ab03 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-select.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-select1.svg b/public/assets/libs/apexcharts/src/assets/ico-select1.svg new file mode 100644 index 0000000..529a226 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-select1.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-zoom-in.svg b/public/assets/libs/apexcharts/src/assets/ico-zoom-in.svg new file mode 100644 index 0000000..3d9355a --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-zoom-out.svg b/public/assets/libs/apexcharts/src/assets/ico-zoom-out.svg new file mode 100644 index 0000000..74310b6 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-zoom-out.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/assets/ico-zoom.svg b/public/assets/libs/apexcharts/src/assets/ico-zoom.svg new file mode 100644 index 0000000..346fdb4 --- /dev/null +++ b/public/assets/libs/apexcharts/src/assets/ico-zoom.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/assets/libs/apexcharts/src/charts/Bar.js b/public/assets/libs/apexcharts/src/charts/Bar.js new file mode 100644 index 0000000..dd56c69 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Bar.js @@ -0,0 +1,492 @@ +import BarDataLabels from './common/bar/DataLabels' +import BarHelpers from './common/bar/Helpers' +import CoreUtils from '../modules/CoreUtils' +import Utils from '../utils/Utils' +import Filters from '../modules/Filters' +import Graphics from '../modules/Graphics' + +/** + * ApexCharts Bar Class responsible for drawing both Columns and Bars. + * + * @module Bar + **/ + +class Bar { + constructor(ctx, xyRatios) { + this.ctx = ctx + this.w = ctx.w + const w = this.w + this.barOptions = w.config.plotOptions.bar + + this.isHorizontal = this.barOptions.horizontal + this.strokeWidth = w.config.stroke.width + this.isNullValue = false + + this.isRangeBar = w.globals.seriesRangeBar.length && this.isHorizontal + + this.xyRatios = xyRatios + + if (this.xyRatios !== null) { + this.xRatio = xyRatios.xRatio + this.initialXRatio = xyRatios.initialXRatio + this.yRatio = xyRatios.yRatio + this.invertedXRatio = xyRatios.invertedXRatio + this.invertedYRatio = xyRatios.invertedYRatio + this.baseLineY = xyRatios.baseLineY + this.baseLineInvertedY = xyRatios.baseLineInvertedY + } + this.yaxisIndex = 0 + this.seriesLen = 0 + + this.barHelpers = new BarHelpers(this) + } + + /** primary draw method which is called on bar object + * @memberof Bar + * @param {array} series - user supplied series values + * @param {int} seriesIndex - the index by which series will be drawn on the svg + * @return {node} element which is supplied to parent chart draw method for appending + **/ + draw(series, seriesIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + + const coreUtils = new CoreUtils(this.ctx, w) + series = coreUtils.getLogSeries(series) + this.series = series + this.yRatio = coreUtils.getLogYRatios(this.yRatio) + + this.barHelpers.initVariables(series) + + let ret = graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }) + + if (w.config.dataLabels.enabled) { + if (this.totalItems > this.barOptions.dataLabels.maxItems) { + console.warn( + 'WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.' + ) + } + } + + for (let i = 0, bc = 0; i < series.length; i++, bc++) { + let x, + y, + xDivision, // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision, // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH, // zeroH is the baseline where 0 meets y axis + zeroW // zeroW is the baseline where 0 meets x axis + + let yArrj = [] // hold y values of current iterating series + let xArrj = [] // hold x values of current iterating series + + let realIndex = w.globals.comboCharts ? seriesIndex[i] : i + + // el to which series will be drawn + let elSeries = graphics.group({ + class: `apexcharts-series`, + rel: i + 1, + seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]), + 'data:realIndex': realIndex + }) + + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex) + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1 + } + + let barHeight = 0 + let barWidth = 0 + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex + } + + this.isReversed = + w.config.yaxis[this.yaxisIndex] && + w.config.yaxis[this.yaxisIndex].reversed + + let initPositions = this.barHelpers.initialPositions() + + y = initPositions.y + barHeight = initPositions.barHeight + yDivision = initPositions.yDivision + zeroW = initPositions.zeroW + + x = initPositions.x + barWidth = initPositions.barWidth + xDivision = initPositions.xDivision + zeroH = initPositions.zeroH + + if (!this.horizontal) { + xArrj.push(x + barWidth / 2) + } + + // eldatalabels + let elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }) + + let elGoalsMarkers = graphics.group({ + class: 'apexcharts-bar-goals-markers', + style: `pointer-events: none` + }) + + for (let j = 0; j < w.globals.dataPoints; j++) { + const strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex) + + let paths = null + const pathsParams = { + indexes: { + i, + j, + realIndex, + bc + }, + x, + y, + strokeWidth, + elSeries + } + if (this.isHorizontal) { + paths = this.drawBarPaths({ + ...pathsParams, + barHeight, + zeroW, + yDivision + }) + barWidth = this.series[i][j] / this.invertedYRatio + } else { + paths = this.drawColumnPaths({ + ...pathsParams, + xDivision, + barWidth, + zeroH + }) + barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex] + } + + const barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition: paths.barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight, + barWidth + }) + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine) + } + + y = paths.y + x = paths.x + + // push current X + if (j > 0) { + xArrj.push(x + barWidth / 2) + } + + yArrj.push(y) + + let pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex) + + this.renderSeries({ + realIndex, + pathFill, + j, + i, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth, + elSeries, + x, + y, + series, + barHeight, + barWidth, + elDataLabelsWrap, + elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'bar' + }) + } + + // push all x val arrays into main xArr + w.globals.seriesXvalues[realIndex] = xArrj + w.globals.seriesYvalues[realIndex] = yArrj + + ret.add(elSeries) + } + + return ret + } + + renderSeries({ + realIndex, + pathFill, + lineFill, + j, + i, + pathFrom, + pathTo, + strokeWidth, + elSeries, + x, + y, + y1, + y2, + series, + barHeight, + barWidth, + barYPosition, + elDataLabelsWrap, + elGoalsMarkers, + visibleSeries, + type + }) { + const w = this.w + const graphics = new Graphics(this.ctx) + + if (!lineFill) { + /* fix apexcharts#341 */ + lineFill = this.barOptions.distributed + ? w.globals.stroke.colors[j] + : w.globals.stroke.colors[realIndex] + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].strokeColor) { + lineFill = w.config.series[i].data[j].strokeColor + } + + if (this.isNullValue) { + pathFill = 'none' + } + + let delay = + ((j / w.config.chart.animations.animateGradually.delay) * + (w.config.chart.animations.speed / w.globals.dataPoints)) / + 2.4 + + let renderedPath = graphics.renderPaths({ + i, + j, + realIndex, + pathFrom, + pathTo, + stroke: lineFill, + strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: pathFill, + animationDelay: delay, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: `apexcharts-${type}-area` + }) + + renderedPath.attr('clip-path', `url(#gridRectMask${w.globals.cuid})`) + + const forecast = w.config.forecastDataPoints + if (forecast.count > 0) { + if (j >= w.globals.dataPoints - forecast.count) { + renderedPath.node.setAttribute('stroke-dasharray', forecast.dashArray) + renderedPath.node.setAttribute('stroke-width', forecast.strokeWidth) + renderedPath.node.setAttribute('fill-opacity', forecast.fillOpacity) + } + } + + if (typeof y1 !== 'undefined' && typeof y2 !== 'undefined') { + renderedPath.attr('data-range-y1', y1) + renderedPath.attr('data-range-y2', y2) + } + + const filters = new Filters(this.ctx) + filters.setSelectionFilter(renderedPath, realIndex, j) + elSeries.add(renderedPath) + + let barDataLabels = new BarDataLabels(this) + let dataLabels = barDataLabels.handleBarDataLabels({ + x, + y, + y1, + y2, + i, + j, + series, + realIndex, + barHeight, + barWidth, + barYPosition, + renderedPath, + visibleSeries + }) + if (dataLabels !== null) { + elDataLabelsWrap.add(dataLabels) + } + + elSeries.add(elDataLabelsWrap) + + if (elGoalsMarkers) { + elSeries.add(elGoalsMarkers) + } + return elSeries + } + + drawBarPaths({ + indexes, + barHeight, + strokeWidth, + zeroW, + x, + y, + yDivision, + elSeries + }) { + let w = this.w + + let i = indexes.i + let j = indexes.j + + if (w.globals.isXNumeric) { + y = + (w.globals.seriesX[i][j] - w.globals.minX) / this.invertedXRatio - + barHeight + } + + let barYPosition = y + barHeight * this.visibleI + + x = this.barHelpers.getXForValue(this.series[i][j], zeroW) + + const paths = this.barHelpers.getBarpaths({ + barYPosition, + barHeight, + x1: zeroW, + x2: x, + strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i, + j, + w + }) + + if (!w.globals.isXNumeric) { + y = y + yDivision + } + + this.barHelpers.barBackground({ + j, + i, + y1: barYPosition - barHeight * this.visibleI, + y2: barHeight * this.seriesLen, + elSeries + }) + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x, + y, + goalX: this.barHelpers.getGoalValues('x', zeroW, null, i, j), + barYPosition + } + } + + drawColumnPaths({ + indexes, + x, + y, + xDivision, + barWidth, + zeroH, + strokeWidth, + elSeries + }) { + let w = this.w + + let realIndex = indexes.realIndex + let i = indexes.i + let j = indexes.j + let bc = indexes.bc + + if (w.globals.isXNumeric) { + let sxI = realIndex + if (!w.globals.seriesX[realIndex].length) { + sxI = w.globals.maxValsInArrayIndex + } + + x = + (w.globals.seriesX[sxI][j] - w.globals.minX) / this.xRatio - + (barWidth * this.seriesLen) / 2 + } + + let barXPosition = x + barWidth * this.visibleI + + y = this.barHelpers.getYForValue(this.series[i][j], zeroH) + + const paths = this.barHelpers.getColumnPaths({ + barXPosition, + barWidth, + y1: zeroH, + y2: y, + strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i, + j, + w + }) + + if (!w.globals.isXNumeric) { + x = x + xDivision + } + + this.barHelpers.barBackground({ + bc, + j, + i, + x1: barXPosition - strokeWidth / 2 - barWidth * this.visibleI, + x2: barWidth * this.seriesLen + strokeWidth / 2, + elSeries + }) + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x, + y, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition + } + } + + /** getPreviousPath is a common function for bars/columns which is used to get previous paths when data changes. + * @memberof Bar + * @param {int} realIndex - current iterating i + * @param {int} j - current iterating series's j index + * @return {string} pathFrom is the string which will be appended in animations + **/ + getPreviousPath(realIndex, j) { + let w = this.w + let pathFrom + for (let pp = 0; pp < w.globals.previousPaths.length; pp++) { + let gpp = w.globals.previousPaths[pp] + + if ( + gpp.paths && + gpp.paths.length > 0 && + parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10) + ) { + if (typeof w.globals.previousPaths[pp].paths[j] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[j].d + } + } + } + return pathFrom + } +} + +export default Bar diff --git a/public/assets/libs/apexcharts/src/charts/BarStacked.js b/public/assets/libs/apexcharts/src/charts/BarStacked.js new file mode 100644 index 0000000..345abde --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/BarStacked.js @@ -0,0 +1,481 @@ +import CoreUtils from '../modules/CoreUtils' +import Bar from './Bar' +import Graphics from '../modules/Graphics' +import Utils from '../utils/Utils' + +/** + * ApexCharts BarStacked Class responsible for drawing both Stacked Columns and Bars. + * + * @module BarStacked + * The whole calculation for stacked bar/column is different from normal bar/column, + * hence it makes sense to derive a new class for it extending most of the props of Parent Bar + **/ + +class BarStacked extends Bar { + draw(series, seriesIndex) { + let w = this.w + this.graphics = new Graphics(this.ctx) + this.bar = new Bar(this.ctx, this.xyRatios) + + const coreUtils = new CoreUtils(this.ctx, w) + series = coreUtils.getLogSeries(series) + this.yRatio = coreUtils.getLogYRatios(this.yRatio) + + this.barHelpers.initVariables(series) + + if (w.config.chart.stackType === '100%') { + series = w.globals.seriesPercent.slice() + } + + this.series = series + + this.totalItems = 0 + + this.prevY = [] // y position on chart + this.prevX = [] // x position on chart + this.prevYF = [] // y position including shapes on chart + this.prevXF = [] // x position including shapes on chart + this.prevYVal = [] // y values (series[i][j]) in columns + this.prevXVal = [] // x values (series[i][j]) in bars + + this.xArrj = [] // xj indicates x position on graph in bars + this.xArrjF = [] // xjF indicates bar's x position + roundedShape's positions in bars + this.xArrjVal = [] // x val means the actual series's y values in horizontal/bars + this.yArrj = [] // yj indicates y position on graph in columns + this.yArrjF = [] // yjF indicates bar's y position + roundedShape's positions in columns + this.yArrjVal = [] // y val means the actual series's y values in columns + + for (let sl = 0; sl < series.length; sl++) { + if (series[sl].length > 0) { + this.totalItems += series[sl].length + } + } + + let ret = this.graphics.group({ + class: 'apexcharts-bar-series apexcharts-plot-series' + }) + + let x = 0 + let y = 0 + + for (let i = 0, bc = 0; i < series.length; i++, bc++) { + let xDivision // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + let yDivision // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + let zeroH // zeroH is the baseline where 0 meets y axis + let zeroW // zeroW is the baseline where 0 meets x axis + + let xArrValues = [] + let yArrValues = [] + + let realIndex = w.globals.comboCharts ? seriesIndex[i] : i + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex + } + + this.isReversed = + w.config.yaxis[this.yaxisIndex] && + w.config.yaxis[this.yaxisIndex].reversed + + // el to which series will be drawn + let elSeries = this.graphics.group({ + class: `apexcharts-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }) + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex) + + // eldatalabels + let elDataLabelsWrap = this.graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }) + + let barHeight = 0 + let barWidth = 0 + + let initPositions = this.initialPositions( + x, + y, + xDivision, + yDivision, + zeroH, + zeroW + ) + y = initPositions.y + barHeight = initPositions.barHeight + yDivision = initPositions.yDivision + zeroW = initPositions.zeroW + + x = initPositions.x + barWidth = initPositions.barWidth + xDivision = initPositions.xDivision + zeroH = initPositions.zeroH + + this.yArrj = [] + this.yArrjF = [] + this.yArrjVal = [] + this.xArrj = [] + this.xArrjF = [] + this.xArrjVal = [] + + // if (!this.horizontal) { + // this.xArrj.push(x + barWidth / 2) + // } + + // fix issue #1215; + // where all stack bar disappear after collapsing the first series + // sol: if only 1 arr in this.prevY(this.prevY.length === 1) and all are NaN + if (this.prevY.length === 1 && this.prevY[0].every((val) => isNaN(val))) { + // make this.prevY[0] all zeroH + this.prevY[0] = this.prevY[0].map((val) => zeroH) + // make this.prevYF[0] all 0 + this.prevYF[0] = this.prevYF[0].map((val) => 0) + } + + for (let j = 0; j < w.globals.dataPoints; j++) { + const strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex) + const commonPathOpts = { + indexes: { i, j, realIndex, bc }, + strokeWidth, + x, + y, + elSeries + } + let paths = null + if (this.isHorizontal) { + paths = this.drawStackedBarPaths({ + ...commonPathOpts, + zeroW, + barHeight, + yDivision + }) + barWidth = this.series[i][j] / this.invertedYRatio + } else { + paths = this.drawStackedColumnPaths({ + ...commonPathOpts, + xDivision, + barWidth, + zeroH + }) + barHeight = this.series[i][j] / this.yRatio[this.yaxisIndex] + } + + y = paths.y + x = paths.x + + xArrValues.push(x) + yArrValues.push(y) + + let pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex) + + elSeries = this.renderSeries({ + realIndex, + pathFill, + j, + i, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth, + elSeries, + x, + y, + series, + barHeight, + barWidth, + elDataLabelsWrap, + type: 'bar', + visibleSeries: 0 + }) + } + + // push all x val arrays into main xArr + w.globals.seriesXvalues[realIndex] = xArrValues + w.globals.seriesYvalues[realIndex] = yArrValues + + // push all current y values array to main PrevY Array + this.prevY.push(this.yArrj) + this.prevYF.push(this.yArrjF) + this.prevYVal.push(this.yArrjVal) + this.prevX.push(this.xArrj) + this.prevXF.push(this.xArrjF) + this.prevXVal.push(this.xArrjVal) + + ret.add(elSeries) + } + + return ret + } + + initialPositions(x, y, xDivision, yDivision, zeroH, zeroW) { + let w = this.w + + let barHeight, barWidth + if (this.isHorizontal) { + // height divided into equal parts + yDivision = w.globals.gridHeight / w.globals.dataPoints + barHeight = yDivision + + barHeight = + (barHeight * parseInt(w.config.plotOptions.bar.barHeight, 10)) / 100 + + zeroW = + this.baseLineInvertedY + + w.globals.padHorizontal + + (this.isReversed ? w.globals.gridWidth : 0) - + (this.isReversed ? this.baseLineInvertedY * 2 : 0) + + // initial y position is half of barHeight * half of number of Bars + y = (yDivision - barHeight) / 2 + } else { + // width divided into equal parts + xDivision = w.globals.gridWidth / w.globals.dataPoints + + barWidth = xDivision + + if (w.globals.isXNumeric && w.globals.dataPoints > 1) { + // the check (w.globals.dataPoints > 1) fixes apexcharts.js #1617 + xDivision = w.globals.minXDiff / this.xRatio + barWidth = (xDivision * parseInt(this.barOptions.columnWidth, 10)) / 100 + } else { + barWidth = + (barWidth * parseInt(w.config.plotOptions.bar.columnWidth, 10)) / 100 + } + + zeroH = + this.baseLineY[this.yaxisIndex] + + (this.isReversed ? w.globals.gridHeight : 0) - + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0) + + // initial x position is one third of barWidth + x = w.globals.padHorizontal + (xDivision - barWidth) / 2 + } + return { + x, + y, + yDivision, + xDivision, + barHeight, + barWidth, + zeroH, + zeroW + } + } + + drawStackedBarPaths({ + indexes, + barHeight, + strokeWidth, + zeroW, + x, + y, + yDivision, + elSeries + }) { + let w = this.w + let barYPosition = y + let barXPosition + let i = indexes.i + let j = indexes.j + + let prevBarW = 0 + for (let k = 0; k < this.prevXF.length; k++) { + prevBarW = prevBarW + this.prevXF[k][j] + } + + if (i > 0) { + let bXP = zeroW + + if (this.prevXVal[i - 1][j] < 0) { + bXP = + this.series[i][j] >= 0 + ? this.prevX[i - 1][j] + + prevBarW - + (this.isReversed ? prevBarW : 0) * 2 + : this.prevX[i - 1][j] + } else if (this.prevXVal[i - 1][j] >= 0) { + bXP = + this.series[i][j] >= 0 + ? this.prevX[i - 1][j] + : this.prevX[i - 1][j] - + prevBarW + + (this.isReversed ? prevBarW : 0) * 2 + } + + barXPosition = bXP + } else { + // the first series will not have prevX values + barXPosition = zeroW + } + + if (this.series[i][j] === null) { + x = barXPosition + } else { + x = + barXPosition + + this.series[i][j] / this.invertedYRatio - + (this.isReversed ? this.series[i][j] / this.invertedYRatio : 0) * 2 + } + + const paths = this.barHelpers.getBarpaths({ + barYPosition, + barHeight, + x1: barXPosition, + x2: x, + strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i, + j, + w + }) + + this.barHelpers.barBackground({ + j, + i, + y1: barYPosition, + y2: barHeight, + elSeries + }) + + y = y + yDivision + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x, + y + } + } + + drawStackedColumnPaths({ + indexes, + x, + y, + xDivision, + barWidth, + zeroH, + strokeWidth, + elSeries + }) { + let w = this.w + let i = indexes.i + let j = indexes.j + let bc = indexes.bc + + if (w.globals.isXNumeric) { + let seriesVal = w.globals.seriesX[i][j] + if (!seriesVal) seriesVal = 0 + x = (seriesVal - w.globals.minX) / this.xRatio - barWidth / 2 + } + + let barXPosition = x + let barYPosition + + let prevBarH = 0 + for (let k = 0; k < this.prevYF.length; k++) { + // fix issue #1215 + // in case where this.prevYF[k][j] is NaN, use 0 instead + prevBarH = prevBarH + (!isNaN(this.prevYF[k][j]) ? this.prevYF[k][j] : 0) + } + + if ( + (i > 0 && !w.globals.isXNumeric) || + (i > 0 && + w.globals.isXNumeric && + w.globals.seriesX[i - 1][j] === w.globals.seriesX[i][j]) + ) { + let bYP + let prevYValue + const p = Math.min(this.yRatio.length + 1, i + 1) + if (this.prevY[i - 1] !== undefined) { + for (let ii = 1; ii < p; ii++) { + if (!isNaN(this.prevY[i - ii][j])) { + // find the previous available value to give prevYValue + prevYValue = this.prevY[i - ii][j] + // if found it, break the loop + break + } + } + } + + for (let ii = 1; ii < p; ii++) { + // find the previous available value(non-NaN) to give bYP + if (this.prevYVal[i - ii][j] < 0) { + bYP = + this.series[i][j] >= 0 + ? prevYValue - prevBarH + (this.isReversed ? prevBarH : 0) * 2 + : prevYValue + // found it? break the loop + break + } else if (this.prevYVal[i - ii][j] >= 0) { + bYP = + this.series[i][j] >= 0 + ? prevYValue + : prevYValue + prevBarH - (this.isReversed ? prevBarH : 0) * 2 + // found it? break the loop + break + } + } + + if (typeof bYP === 'undefined') bYP = w.globals.gridHeight + + // if this.prevYF[0] is all 0 resulted from line #486 + // AND every arr starting from the second only contains NaN + if ( + this.prevYF[0].every((val) => val === 0) && + this.prevYF.slice(1, i).every((arr) => arr.every((val) => isNaN(val))) + ) { + // Use the same calc way as line #485 + barYPosition = w.globals.gridHeight - zeroH + } else { + // Nothing special + barYPosition = bYP + } + } else { + // the first series will not have prevY values, also if the prev index's series X doesn't matches the current index's series X, then start from zero + barYPosition = w.globals.gridHeight - zeroH + } + + y = + barYPosition - + this.series[i][j] / this.yRatio[this.yaxisIndex] + + (this.isReversed ? this.series[i][j] / this.yRatio[this.yaxisIndex] : 0) * + 2 + + const paths = this.barHelpers.getColumnPaths({ + barXPosition, + barWidth, + y1: barYPosition, + y2: y, + yRatio: this.yRatio[this.yaxisIndex], + strokeWidth: this.strokeWidth, + series: this.series, + realIndex: indexes.realIndex, + i, + j, + w + }) + + this.barHelpers.barBackground({ + bc, + j, + i, + x1: barXPosition, + x2: barWidth, + elSeries + }) + + x = x + xDivision + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + x: w.globals.isXNumeric ? x - xDivision : x, + y + } + } +} + +export default BarStacked diff --git a/public/assets/libs/apexcharts/src/charts/BoxCandleStick.js b/public/assets/libs/apexcharts/src/charts/BoxCandleStick.js new file mode 100644 index 0000000..b2d121a --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/BoxCandleStick.js @@ -0,0 +1,428 @@ +import CoreUtils from '../modules/CoreUtils' +import Bar from './Bar' +import Fill from '../modules/Fill' +import Graphics from '../modules/Graphics' +import Utils from '../utils/Utils' + +/** + * ApexCharts BoxCandleStick Class responsible for drawing both Stacked Columns and Bars. + * + * @module BoxCandleStick + **/ + +class BoxCandleStick extends Bar { + draw(series, seriesIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + let fill = new Fill(this.ctx) + + this.candlestickOptions = this.w.config.plotOptions.candlestick + this.boxOptions = this.w.config.plotOptions.boxPlot + this.isHorizontal = w.config.plotOptions.bar.horizontal + + const coreUtils = new CoreUtils(this.ctx, w) + series = coreUtils.getLogSeries(series) + this.series = series + this.yRatio = coreUtils.getLogYRatios(this.yRatio) + + this.barHelpers.initVariables(series) + + let ret = graphics.group({ + class: `apexcharts-${w.config.chart.type}-series apexcharts-plot-series` + }) + + for (let i = 0; i < series.length; i++) { + this.isBoxPlot = + w.config.chart.type === 'boxPlot' || + w.config.series[i].type === 'boxPlot' + + let x, + y, + xDivision, // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision, // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH, // zeroH is the baseline where 0 meets y axis + zeroW // zeroW is the baseline where 0 meets x axis + + let yArrj = [] // hold y values of current iterating series + let xArrj = [] // hold x values of current iterating series + + let realIndex = w.globals.comboCharts ? seriesIndex[i] : i + + // el to which series will be drawn + let elSeries = graphics.group({ + class: `apexcharts-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }) + + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex) + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1 + } + + let barHeight = 0 + let barWidth = 0 + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex + } + + let initPositions = this.barHelpers.initialPositions() + + y = initPositions.y + barHeight = initPositions.barHeight + yDivision = initPositions.yDivision + zeroW = initPositions.zeroW + + x = initPositions.x + barWidth = initPositions.barWidth + xDivision = initPositions.xDivision + zeroH = initPositions.zeroH + + xArrj.push(x + barWidth / 2) + + // eldatalabels + let elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }) + + for (let j = 0; j < w.globals.dataPoints; j++) { + const strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex) + + let paths = null + const pathsParams = { + indexes: { + i, + j, + realIndex + }, + x, + y, + strokeWidth, + elSeries + } + + if (this.isHorizontal) { + paths = this.drawHorizontalBoxPaths({ + ...pathsParams, + yDivision, + barHeight, + zeroW + }) + } else { + paths = this.drawVerticalBoxPaths({ + ...pathsParams, + xDivision, + barWidth, + zeroH + }) + } + + y = paths.y + x = paths.x + + // push current X + if (j > 0) { + xArrj.push(x + barWidth / 2) + } + + yArrj.push(y) + + paths.pathTo.forEach((pathTo, pi) => { + let lineFill = + !this.isBoxPlot && this.candlestickOptions.wick.useFillColor + ? paths.color[pi] + : w.globals.stroke.colors[i] + + let pathFill = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex: j, + color: paths.color[pi], + value: series[i][j] + }) + + this.renderSeries({ + realIndex, + pathFill, + lineFill, + j, + i, + pathFrom: paths.pathFrom, + pathTo, + strokeWidth, + elSeries, + x, + y, + series, + barHeight, + barWidth, + elDataLabelsWrap, + visibleSeries: this.visibleI, + type: w.config.chart.type + }) + }) + } + + // push all x val arrays into main xArr + w.globals.seriesXvalues[realIndex] = xArrj + w.globals.seriesYvalues[realIndex] = yArrj + + ret.add(elSeries) + } + + return ret + } + + drawVerticalBoxPaths({ + indexes, + x, + y, + xDivision, + barWidth, + zeroH, + strokeWidth + }) { + let w = this.w + let graphics = new Graphics(this.ctx) + + let i = indexes.i + let j = indexes.j + + let isPositive = true + let colorPos = w.config.plotOptions.candlestick.colors.upward + let colorNeg = w.config.plotOptions.candlestick.colors.downward + let color = '' + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper] + } + + const yRatio = this.yRatio[this.yaxisIndex] + let realIndex = indexes.realIndex + + const ohlc = this.getOHLCValue(realIndex, j) + let l1 = zeroH + let l2 = zeroH + + if (ohlc.o > ohlc.c) { + isPositive = false + } + + let y1 = Math.min(ohlc.o, ohlc.c) + let y2 = Math.max(ohlc.o, ohlc.c) + let m = ohlc.m + + if (w.globals.isXNumeric) { + x = + (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio - + barWidth / 2 + } + + let barXPosition = x + barWidth * this.visibleI + + if ( + typeof this.series[i][j] === 'undefined' || + this.series[i][j] === null + ) { + y1 = zeroH + y2 = zeroH + } else { + y1 = zeroH - y1 / yRatio + y2 = zeroH - y2 / yRatio + l1 = zeroH - ohlc.h / yRatio + l2 = zeroH - ohlc.l / yRatio + m = zeroH - ohlc.m / yRatio + } + + let pathTo = graphics.move(barXPosition, zeroH) + let pathFrom = graphics.move(barXPosition + barWidth / 2, y1) + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true) + } + + if (this.isBoxPlot) { + pathTo = [ + graphics.move(barXPosition, y1) + + graphics.line(barXPosition + barWidth / 2, y1) + + graphics.line(barXPosition + barWidth / 2, l1) + + graphics.line(barXPosition + barWidth / 4, l1) + + graphics.line(barXPosition + barWidth - barWidth / 4, l1) + + graphics.line(barXPosition + barWidth / 2, l1) + + graphics.line(barXPosition + barWidth / 2, y1) + + graphics.line(barXPosition + barWidth, y1) + + graphics.line(barXPosition + barWidth, m) + + graphics.line(barXPosition, m) + + graphics.line(barXPosition, y1 + strokeWidth / 2), + graphics.move(barXPosition, m) + + graphics.line(barXPosition + barWidth, m) + + graphics.line(barXPosition + barWidth, y2) + + graphics.line(barXPosition + barWidth / 2, y2) + + graphics.line(barXPosition + barWidth / 2, l2) + + graphics.line(barXPosition + barWidth - barWidth / 4, l2) + + graphics.line(barXPosition + barWidth / 4, l2) + + graphics.line(barXPosition + barWidth / 2, l2) + + graphics.line(barXPosition + barWidth / 2, y2) + + graphics.line(barXPosition, y2) + + graphics.line(barXPosition, m) + + 'z' + ] + } else { + // candlestick + pathTo = [ + graphics.move(barXPosition, y2) + + graphics.line(barXPosition + barWidth / 2, y2) + + graphics.line(barXPosition + barWidth / 2, l1) + + graphics.line(barXPosition + barWidth / 2, y2) + + graphics.line(barXPosition + barWidth, y2) + + graphics.line(barXPosition + barWidth, y1) + + graphics.line(barXPosition + barWidth / 2, y1) + + graphics.line(barXPosition + barWidth / 2, l2) + + graphics.line(barXPosition + barWidth / 2, y1) + + graphics.line(barXPosition, y1) + + graphics.line(barXPosition, y2 - strokeWidth / 2) + ] + } + + pathFrom = pathFrom + graphics.move(barXPosition, y1) + + if (!w.globals.isXNumeric) { + x = x + xDivision + } + + return { + pathTo, + pathFrom, + x, + y: y2, + barXPosition, + color: this.isBoxPlot ? color : isPositive ? [colorPos] : [colorNeg] + } + } + + drawHorizontalBoxPaths({ + indexes, + x, + y, + yDivision, + barHeight, + zeroW, + strokeWidth + }) { + let w = this.w + let graphics = new Graphics(this.ctx) + + let i = indexes.i + let j = indexes.j + + let color = this.boxOptions.colors.lower + + if (this.isBoxPlot) { + color = [this.boxOptions.colors.lower, this.boxOptions.colors.upper] + } + + const yRatio = this.invertedYRatio + let realIndex = indexes.realIndex + + const ohlc = this.getOHLCValue(realIndex, j) + let l1 = zeroW + let l2 = zeroW + + let x1 = Math.min(ohlc.o, ohlc.c) + let x2 = Math.max(ohlc.o, ohlc.c) + let m = ohlc.m + + if (w.globals.isXNumeric) { + y = + (w.globals.seriesX[realIndex][j] - w.globals.minX) / + this.invertedXRatio - + barHeight / 2 + } + + let barYPosition = y + barHeight * this.visibleI + + if ( + typeof this.series[i][j] === 'undefined' || + this.series[i][j] === null + ) { + x1 = zeroW + x2 = zeroW + } else { + x1 = zeroW + x1 / yRatio + x2 = zeroW + x2 / yRatio + l1 = zeroW + ohlc.h / yRatio + l2 = zeroW + ohlc.l / yRatio + m = zeroW + ohlc.m / yRatio + } + + let pathTo = graphics.move(zeroW, barYPosition) + let pathFrom = graphics.move(x1, barYPosition + barHeight / 2) + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(realIndex, j, true) + } + + pathTo = [ + graphics.move(x1, barYPosition) + + graphics.line(x1, barYPosition + barHeight / 2) + + graphics.line(l1, barYPosition + barHeight / 2) + + graphics.line(l1, barYPosition + barHeight / 2 - barHeight / 4) + + graphics.line(l1, barYPosition + barHeight / 2 + barHeight / 4) + + graphics.line(l1, barYPosition + barHeight / 2) + + graphics.line(x1, barYPosition + barHeight / 2) + + graphics.line(x1, barYPosition + barHeight) + + graphics.line(m, barYPosition + barHeight) + + graphics.line(m, barYPosition) + + graphics.line(x1 + strokeWidth / 2, barYPosition), + graphics.move(m, barYPosition) + + graphics.line(m, barYPosition + barHeight) + + graphics.line(x2, barYPosition + barHeight) + + graphics.line(x2, barYPosition + barHeight / 2) + + graphics.line(l2, barYPosition + barHeight / 2) + + graphics.line(l2, barYPosition + barHeight - barHeight / 4) + + graphics.line(l2, barYPosition + barHeight / 4) + + graphics.line(l2, barYPosition + barHeight / 2) + + graphics.line(x2, barYPosition + barHeight / 2) + + graphics.line(x2, barYPosition) + + graphics.line(m, barYPosition) + + 'z' + ] + + pathFrom = pathFrom + graphics.move(x1, barYPosition) + + if (!w.globals.isXNumeric) { + y = y + yDivision + } + + return { + pathTo, + pathFrom, + x: x2, + y, + barYPosition, + color + } + } + getOHLCValue(i, j) { + const w = this.w + + return { + o: this.isBoxPlot + ? w.globals.seriesCandleH[i][j] + : w.globals.seriesCandleO[i][j], + h: this.isBoxPlot + ? w.globals.seriesCandleO[i][j] + : w.globals.seriesCandleH[i][j], + m: w.globals.seriesCandleM[i][j], + l: this.isBoxPlot + ? w.globals.seriesCandleC[i][j] + : w.globals.seriesCandleL[i][j], + c: this.isBoxPlot + ? w.globals.seriesCandleL[i][j] + : w.globals.seriesCandleC[i][j] + } + } +} + +export default BoxCandleStick diff --git a/public/assets/libs/apexcharts/src/charts/HeatMap.js b/public/assets/libs/apexcharts/src/charts/HeatMap.js new file mode 100644 index 0000000..60e3a9b --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/HeatMap.js @@ -0,0 +1,241 @@ +import Animations from '../modules/Animations' +import Graphics from '../modules/Graphics' +import Fill from '../modules/Fill' +import Utils from '../utils/Utils' +import Helpers from './common/treemap/Helpers' +import Filters from '../modules/Filters' + +/** + * ApexCharts HeatMap Class. + * @module HeatMap + **/ + +export default class HeatMap { + constructor(ctx, xyRatios) { + this.ctx = ctx + this.w = ctx.w + + this.xRatio = xyRatios.xRatio + this.yRatio = xyRatios.yRatio + + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation + + this.helpers = new Helpers(ctx) + this.rectRadius = this.w.config.plotOptions.heatmap.radius + this.strokeWidth = this.w.config.stroke.show + ? this.w.config.stroke.width + : 0 + } + + draw(series) { + let w = this.w + const graphics = new Graphics(this.ctx) + + let ret = graphics.group({ + class: 'apexcharts-heatmap' + }) + + ret.attr('clip-path', `url(#gridRectMask${w.globals.cuid})`) + + // width divided into equal parts + let xDivision = w.globals.gridWidth / w.globals.dataPoints + let yDivision = w.globals.gridHeight / w.globals.series.length + + let y1 = 0 + let rev = false + + this.negRange = this.helpers.checkColorRange() + + let heatSeries = series.slice() + if (w.config.yaxis[0].reversed) { + rev = true + heatSeries.reverse() + } + + for ( + let i = rev ? 0 : heatSeries.length - 1; + rev ? i < heatSeries.length : i >= 0; + rev ? i++ : i-- + ) { + // el to which series will be drawn + let elSeries = graphics.group({ + class: `apexcharts-series apexcharts-heatmap-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }) + this.ctx.series.addCollapsedClassToSeries(elSeries, i) + + if (w.config.chart.dropShadow.enabled) { + const shadow = w.config.chart.dropShadow + const filters = new Filters(this.ctx) + filters.dropShadow(elSeries, shadow, i) + } + + let x1 = 0 + let shadeIntensity = w.config.plotOptions.heatmap.shadeIntensity + + for (let j = 0; j < heatSeries[i].length; j++) { + let heatColor = this.helpers.getShadeColor( + w.config.chart.type, + i, + j, + this.negRange + ) + let color = heatColor.color + let heatColorProps = heatColor.colorProps + + if (w.config.fill.type === 'image') { + const fill = new Fill(this.ctx) + + color = fill.fillPath({ + seriesNumber: i, + dataPointIndex: j, + opacity: w.globals.hasNegs + ? heatColorProps.percent < 0 + ? 1 - (1 + heatColorProps.percent / 100) + : shadeIntensity + heatColorProps.percent / 100 + : heatColorProps.percent / 100, + patternID: Utils.randomId(), + width: w.config.fill.image.width + ? w.config.fill.image.width + : xDivision, + height: w.config.fill.image.height + ? w.config.fill.image.height + : yDivision + }) + } + + let radius = this.rectRadius + + let rect = graphics.drawRect(x1, y1, xDivision, yDivision, radius) + rect.attr({ + cx: x1, + cy: y1 + }) + + rect.node.classList.add('apexcharts-heatmap-rect') + elSeries.add(rect) + + rect.attr({ + fill: color, + i, + index: i, + j, + val: heatSeries[i][j], + 'stroke-width': this.strokeWidth, + stroke: w.config.plotOptions.heatmap.useFillColorAsStroke + ? color + : w.globals.stroke.colors[0], + color + }) + + this.helpers.addListeners(rect) + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + let speed = 1 + if (!w.globals.resized) { + speed = w.config.chart.animations.speed + } + this.animateHeatMap(rect, x1, y1, xDivision, yDivision, speed) + } + + if (w.globals.dataChanged) { + let speed = 1 + if (this.dynamicAnim.enabled && w.globals.shouldAnimate) { + speed = this.dynamicAnim.speed + + let colorFrom = + w.globals.previousPaths[i] && + w.globals.previousPaths[i][j] && + w.globals.previousPaths[i][j].color + + if (!colorFrom) colorFrom = 'rgba(255, 255, 255, 0)' + + this.animateHeatColor( + rect, + Utils.isColorHex(colorFrom) + ? colorFrom + : Utils.rgb2hex(colorFrom), + Utils.isColorHex(color) ? color : Utils.rgb2hex(color), + speed + ) + } + } + + let formatter = w.config.dataLabels.formatter + let formattedText = formatter(w.globals.series[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w + }) + + let dataLabels = this.helpers.calculateDataLabels({ + text: formattedText, + x: x1 + xDivision / 2, + y: y1 + yDivision / 2, + i, + j, + colorProps: heatColorProps, + series: heatSeries + }) + if (dataLabels !== null) { + elSeries.add(dataLabels) + } + + x1 = x1 + xDivision + } + + y1 = y1 + yDivision + + ret.add(elSeries) + } + + // adjust yaxis labels for heatmap + let yAxisScale = w.globals.yAxisScale[0].result.slice() + if (w.config.yaxis[0].reversed) { + yAxisScale.unshift('') + } else { + yAxisScale.push('') + } + w.globals.yAxisScale[0].result = yAxisScale + let divisor = w.globals.gridHeight / w.globals.series.length + w.config.yaxis[0].labels.offsetY = -(divisor / 2) + + return ret + } + + animateHeatMap(el, x, y, width, height, speed) { + const animations = new Animations(this.ctx) + animations.animateRect( + el, + { + x: x + width / 2, + y: y + height / 2, + width: 0, + height: 0 + }, + { + x, + y, + width, + height + }, + speed, + () => { + animations.animationCompleted(el) + } + ) + } + + animateHeatColor(el, colorFrom, colorTo, speed) { + el.attr({ + fill: colorFrom + }) + .animate(speed) + .attr({ + fill: colorTo + }) + } +} diff --git a/public/assets/libs/apexcharts/src/charts/Line.js b/public/assets/libs/apexcharts/src/charts/Line.js new file mode 100644 index 0000000..4b8e0e2 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Line.js @@ -0,0 +1,728 @@ +import CoreUtils from '../modules/CoreUtils' +import Graphics from '../modules/Graphics' +import Fill from '../modules/Fill' +import DataLabels from '../modules/DataLabels' +import Markers from '../modules/Markers' +import Scatter from './Scatter' +import Utils from '../utils/Utils' +import Helpers from './common/line/Helpers' + +/** + * ApexCharts Line Class responsible for drawing Line / Area Charts. + * This class is also responsible for generating values for Bubble/Scatter charts, so need to rename it to Axis Charts to avoid confusions + * @module Line + **/ + +class Line { + constructor(ctx, xyRatios, isPointsChart) { + this.ctx = ctx + this.w = ctx.w + + this.xyRatios = xyRatios + + this.pointsChart = + !( + this.w.config.chart.type !== 'bubble' && + this.w.config.chart.type !== 'scatter' + ) || isPointsChart + + this.scatter = new Scatter(this.ctx) + + this.noNegatives = this.w.globals.minX === Number.MAX_VALUE + + this.lineHelpers = new Helpers(this) + this.markers = new Markers(this.ctx) + + this.prevSeriesY = [] + this.categoryAxisCorrection = 0 + this.yaxisIndex = 0 + } + + draw(series, ptype, seriesIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + let type = w.globals.comboCharts ? ptype : w.config.chart.type + let ret = graphics.group({ + class: `apexcharts-${type}-series apexcharts-plot-series` + }) + + const coreUtils = new CoreUtils(this.ctx, w) + this.yRatio = this.xyRatios.yRatio + this.zRatio = this.xyRatios.zRatio + this.xRatio = this.xyRatios.xRatio + this.baseLineY = this.xyRatios.baseLineY + + series = coreUtils.getLogSeries(series) + this.yRatio = coreUtils.getLogYRatios(this.yRatio) + + // push all series in an array, so we can draw in reverse order (for stacked charts) + let allSeries = [] + + for (let i = 0; i < series.length; i++) { + series = this.lineHelpers.sameValueSeriesFix(i, series) + + let realIndex = w.globals.comboCharts ? seriesIndex[i] : i + + this._initSerieVariables(series, i, realIndex) + + let yArrj = [] // hold y values of current iterating series + let xArrj = [] // hold x values of current iterating series + + let x = w.globals.padHorizontal + this.categoryAxisCorrection + let y = 1 + + let linePaths = [] + let areaPaths = [] + + this.ctx.series.addCollapsedClassToSeries(this.elSeries, realIndex) + + if (w.globals.isXNumeric && w.globals.seriesX.length > 0) { + x = (w.globals.seriesX[realIndex][0] - w.globals.minX) / this.xRatio + } + + xArrj.push(x) + + let pX = x + let pY + let prevX = pX + let prevY = this.zeroY + let lineYPosition = 0 + + // the first value in the current series is not null or undefined + let firstPrevY = this.lineHelpers.determineFirstPrevY({ + i, + series, + prevY, + lineYPosition + }) + prevY = firstPrevY.prevY + + yArrj.push(prevY) + pY = prevY + + let pathsFrom = this._calculatePathsFrom({ + series, + i, + realIndex, + prevX, + prevY + }) + + let paths = this._iterateOverDataPoints({ + series, + realIndex, + i, + x, + y, + pX, + pY, + pathsFrom, + linePaths, + areaPaths, + seriesIndex, + lineYPosition, + xArrj, + yArrj + }) + + this._handlePaths({ type, realIndex, i, paths }) + + this.elSeries.add(this.elPointsMain) + this.elSeries.add(this.elDataLabelsWrap) + + allSeries.push(this.elSeries) + } + + if (w.config.chart.stacked) { + for (let s = allSeries.length; s > 0; s--) { + ret.add(allSeries[s - 1]) + } + } else { + for (let s = 0; s < allSeries.length; s++) { + ret.add(allSeries[s]) + } + } + + return ret + } + + _initSerieVariables(series, i, realIndex) { + const w = this.w + const graphics = new Graphics(this.ctx) + + // width divided into equal parts + this.xDivision = + w.globals.gridWidth / + (w.globals.dataPoints - (w.config.xaxis.tickPlacement === 'on' ? 1 : 0)) + + this.strokeWidth = Array.isArray(w.config.stroke.width) + ? w.config.stroke.width[realIndex] + : w.config.stroke.width + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex + } + + this.isReversed = + w.config.yaxis[this.yaxisIndex] && + w.config.yaxis[this.yaxisIndex].reversed + + // zeroY is the 0 value in y series which can be used in negative charts + this.zeroY = + w.globals.gridHeight - + this.baseLineY[this.yaxisIndex] - + (this.isReversed ? w.globals.gridHeight : 0) + + (this.isReversed ? this.baseLineY[this.yaxisIndex] * 2 : 0) + + this.areaBottomY = this.zeroY + if ( + this.zeroY > w.globals.gridHeight || + w.config.plotOptions.area.fillTo === 'end' + ) { + this.areaBottomY = w.globals.gridHeight + } + + this.categoryAxisCorrection = this.xDivision / 2 + + // el to which series will be drawn + this.elSeries = graphics.group({ + class: `apexcharts-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]) + }) + + // points + this.elPointsMain = graphics.group({ + class: 'apexcharts-series-markers-wrap', + 'data:realIndex': realIndex + }) + + // eldatalabels + this.elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }) + + let longestSeries = series[i].length === w.globals.dataPoints + this.elSeries.attr({ + 'data:longestSeries': longestSeries, + rel: i + 1, + 'data:realIndex': realIndex + }) + + this.appendPathFrom = true + } + + _calculatePathsFrom({ series, i, realIndex, prevX, prevY }) { + const w = this.w + const graphics = new Graphics(this.ctx) + let linePath, areaPath, pathFromLine, pathFromArea + + if (series[i][0] === null) { + // when the first value itself is null, we need to move the pointer to a location where a null value is not found + for (let s = 0; s < series[i].length; s++) { + if (series[i][s] !== null) { + prevX = this.xDivision * s + prevY = this.zeroY - series[i][s] / this.yRatio[this.yaxisIndex] + linePath = graphics.move(prevX, prevY) + areaPath = graphics.move(prevX, this.areaBottomY) + break + } + } + } else { + linePath = graphics.move(prevX, prevY) + areaPath = + graphics.move(prevX, this.areaBottomY) + graphics.line(prevX, prevY) + } + + pathFromLine = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY) + pathFromArea = graphics.move(-1, this.zeroY) + graphics.line(-1, this.zeroY) + + if (w.globals.previousPaths.length > 0) { + const pathFrom = this.lineHelpers.checkPreviousPaths({ + pathFromLine, + pathFromArea, + realIndex + }) + pathFromLine = pathFrom.pathFromLine + pathFromArea = pathFrom.pathFromArea + } + + return { + prevX, + prevY, + linePath, + areaPath, + pathFromLine, + pathFromArea + } + } + + _handlePaths({ type, realIndex, i, paths }) { + const w = this.w + const graphics = new Graphics(this.ctx) + const fill = new Fill(this.ctx) + + // push all current y values array to main PrevY Array + this.prevSeriesY.push(paths.yArrj) + + // push all x val arrays into main xArr + w.globals.seriesXvalues[realIndex] = paths.xArrj + w.globals.seriesYvalues[realIndex] = paths.yArrj + + const forecast = w.config.forecastDataPoints + if (forecast.count > 0) { + const forecastCutoff = + w.globals.seriesXvalues[realIndex][ + w.globals.seriesXvalues[realIndex].length - forecast.count - 1 + ] + const elForecastMask = graphics.drawRect( + forecastCutoff, + 0, + w.globals.gridWidth, + w.globals.gridHeight, + 0 + ) + w.globals.dom.elForecastMask.appendChild(elForecastMask.node) + + const elNonForecastMask = graphics.drawRect( + 0, + 0, + forecastCutoff, + w.globals.gridHeight, + 0 + ) + w.globals.dom.elNonForecastMask.appendChild(elNonForecastMask.node) + } + + // these elements will be shown after area path animation completes + if (!this.pointsChart) { + w.globals.delayedElements.push({ + el: this.elPointsMain.node, + index: realIndex + }) + } + + const defaultRenderedPathOptions = { + i, + realIndex, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: `apexcharts-${type}` + } + + if (type === 'area') { + let pathFill = fill.fillPath({ + seriesNumber: realIndex + }) + + for (let p = 0; p < paths.areaPaths.length; p++) { + let renderedPath = graphics.renderPaths({ + ...defaultRenderedPathOptions, + pathFrom: paths.pathFromArea, + pathTo: paths.areaPaths[p], + stroke: 'none', + strokeWidth: 0, + strokeLineCap: null, + fill: pathFill + }) + + this.elSeries.add(renderedPath) + } + } + + if (w.config.stroke.show && !this.pointsChart) { + let lineFill = null + if (type === 'line') { + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i + }) + } else { + if (w.config.stroke.fill.type === 'solid') { + lineFill = w.globals.stroke.colors[realIndex] + } else { + const prevFill = w.config.fill + w.config.fill = w.config.stroke.fill + + lineFill = fill.fillPath({ + seriesNumber: realIndex, + i + }) + w.config.fill = prevFill + } + } + + for (let p = 0; p < paths.linePaths.length; p++) { + const linePathCommonOpts = { + ...defaultRenderedPathOptions, + pathFrom: paths.pathFromLine, + pathTo: paths.linePaths[p], + stroke: lineFill, + strokeWidth: this.strokeWidth, + strokeLineCap: w.config.stroke.lineCap, + fill: 'none' + } + let renderedPath = graphics.renderPaths(linePathCommonOpts) + this.elSeries.add(renderedPath) + + if (forecast.count > 0) { + let renderedForecastPath = graphics.renderPaths(linePathCommonOpts) + + renderedForecastPath.node.setAttribute( + 'stroke-dasharray', + forecast.dashArray + ) + + if (forecast.strokeWidth) { + renderedForecastPath.node.setAttribute( + 'stroke-width', + forecast.strokeWidth + ) + } + + this.elSeries.add(renderedForecastPath) + renderedForecastPath.attr( + 'clip-path', + `url(#forecastMask${w.globals.cuid})` + ) + renderedPath.attr( + 'clip-path', + `url(#nonForecastMask${w.globals.cuid})` + ) + } + } + } + } + + _iterateOverDataPoints({ + series, + realIndex, + i, + x, + y, + pX, + pY, + pathsFrom, + linePaths, + areaPaths, + seriesIndex, + lineYPosition, + xArrj, + yArrj + }) { + const w = this.w + let graphics = new Graphics(this.ctx) + let yRatio = this.yRatio + let { prevY, linePath, areaPath, pathFromLine, pathFromArea } = pathsFrom + + const minY = Utils.isNumber(w.globals.minYArr[realIndex]) + ? w.globals.minYArr[realIndex] + : w.globals.minY + + const iterations = + w.globals.dataPoints > 1 ? w.globals.dataPoints - 1 : w.globals.dataPoints + + for (let j = 0; j < iterations; j++) { + const isNull = + typeof series[i][j + 1] === 'undefined' || series[i][j + 1] === null + + if (w.globals.isXNumeric) { + let sX = w.globals.seriesX[realIndex][j + 1] + if (typeof w.globals.seriesX[realIndex][j + 1] === 'undefined') { + /* fix #374 */ + sX = w.globals.seriesX[realIndex][iterations - 1] + } + x = (sX - w.globals.minX) / this.xRatio + } else { + x = x + this.xDivision + } + + if (w.config.chart.stacked) { + if ( + i > 0 && + w.globals.collapsedSeries.length < w.config.series.length - 1 + ) { + // a collapsed series in a stacked bar chart may provide wrong result for the next series, hence find the prevIndex of prev series which is not collapsed - fixes apexcharts.js#1372 + const prevIndex = (pi) => { + let pii = pi + for (let cpi = 0; cpi < w.globals.series.length; cpi++) { + if (w.globals.collapsedSeriesIndices.indexOf(pi) > -1) { + pii-- + break + } + } + + return pii >= 0 ? pii : 0 + } + lineYPosition = this.prevSeriesY[prevIndex(i - 1)][j + 1] + } else { + // the first series will not have prevY values + lineYPosition = this.zeroY + } + } else { + lineYPosition = this.zeroY + } + + if (isNull) { + y = + lineYPosition - + minY / yRatio[this.yaxisIndex] + + (this.isReversed ? minY / yRatio[this.yaxisIndex] : 0) * 2 + } else { + y = + lineYPosition - + series[i][j + 1] / yRatio[this.yaxisIndex] + + (this.isReversed ? series[i][j + 1] / yRatio[this.yaxisIndex] : 0) * 2 + } + + // push current X + xArrj.push(x) + + // push current Y that will be used as next series's bottom position + yArrj.push(y) + + let pointsPos = this.lineHelpers.calculatePoints({ + series, + x, + y, + realIndex, + i, + j, + prevY + }) + + let calculatedPaths = this._createPaths({ + series, + i, + realIndex, + j, + x, + y, + pX, + pY, + linePath, + areaPath, + linePaths, + areaPaths, + seriesIndex + }) + + areaPaths = calculatedPaths.areaPaths + linePaths = calculatedPaths.linePaths + pX = calculatedPaths.pX + pY = calculatedPaths.pY + areaPath = calculatedPaths.areaPath + linePath = calculatedPaths.linePath + + if (this.appendPathFrom) { + pathFromLine = pathFromLine + graphics.line(x, this.zeroY) + pathFromArea = pathFromArea + graphics.line(x, this.zeroY) + } + + this.handleNullDataPoints(series, pointsPos, i, j, realIndex) + + this._handleMarkersAndLabels({ + pointsPos, + series, + x, + y, + prevY, + i, + j, + realIndex + }) + } + + return { + yArrj, + xArrj, + pathFromArea, + areaPaths, + pathFromLine, + linePaths + } + } + + _handleMarkersAndLabels({ pointsPos, series, x, y, prevY, i, j, realIndex }) { + const w = this.w + let dataLabels = new DataLabels(this.ctx) + + if (!this.pointsChart) { + if (w.globals.series[i].length > 1) { + this.elPointsMain.node.classList.add('apexcharts-element-hidden') + } + + let elPointsWrap = this.markers.plotChartMarkers( + pointsPos, + realIndex, + j + 1 + ) + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap) + } + } else { + // scatter / bubble chart points creation + this.scatter.draw(this.elSeries, j, { + realIndex, + pointsPos, + zRatio: this.zRatio, + elParent: this.elPointsMain + }) + } + + let drawnLabels = dataLabels.drawDataLabel( + pointsPos, + realIndex, + j + 1, + null + ) + if (drawnLabels !== null) { + this.elDataLabelsWrap.add(drawnLabels) + } + } + + _createPaths({ + series, + i, + realIndex, + j, + x, + y, + pX, + pY, + linePath, + areaPath, + linePaths, + areaPaths, + seriesIndex + }) { + let w = this.w + let graphics = new Graphics(this.ctx) + + let curve = w.config.stroke.curve + const areaBottomY = this.areaBottomY + + if (Array.isArray(w.config.stroke.curve)) { + if (Array.isArray(seriesIndex)) { + curve = w.config.stroke.curve[seriesIndex[i]] + } else { + curve = w.config.stroke.curve[i] + } + } + + // logic of smooth curve derived from chartist + // CREDITS: https://gionkunz.github.io/chartist-js/ + if (curve === 'smooth') { + let length = (x - pX) * 0.35 + if (w.globals.hasNullValues) { + if (series[i][j] !== null) { + if (series[i][j + 1] !== null) { + linePath = + graphics.move(pX, pY) + + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + areaPath = + graphics.move(pX + 1, pY) + + graphics.curve(pX + length, pY, x - length, y, x + 1, y) + + graphics.line(x, areaBottomY) + + graphics.line(pX, areaBottomY) + + 'z' + } else { + linePath = graphics.move(pX, pY) + areaPath = graphics.move(pX, pY) + 'z' + } + } + + linePaths.push(linePath) + areaPaths.push(areaPath) + } else { + linePath = + linePath + graphics.curve(pX + length, pY, x - length, y, x, y) + areaPath = + areaPath + graphics.curve(pX + length, pY, x - length, y, x, y) + } + + pX = x + pY = y + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = + areaPath + + graphics.curve(pX, pY, x, y, x, areaBottomY) + + graphics.move(x, y) + + 'z' + if (!w.globals.hasNullValues) { + linePaths.push(linePath) + areaPaths.push(areaPath) + } + } + } else { + if (series[i][j + 1] === null) { + linePath = linePath + graphics.move(x, y) + + const numericOrCatX = w.globals.isXNumeric + ? (w.globals.seriesX[realIndex][j] - w.globals.minX) / this.xRatio + : x - this.xDivision + areaPath = + areaPath + + graphics.line(numericOrCatX, areaBottomY) + + graphics.move(x, y) + + 'z' + } + if (series[i][j] === null) { + linePath = linePath + graphics.move(x, y) + areaPath = areaPath + graphics.move(x, areaBottomY) + } + + if (curve === 'stepline') { + linePath = + linePath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V') + areaPath = + areaPath + graphics.line(x, null, 'H') + graphics.line(null, y, 'V') + } else if (curve === 'straight') { + linePath = linePath + graphics.line(x, y) + areaPath = areaPath + graphics.line(x, y) + } + + if (j === series[i].length - 2) { + // last loop, close path + areaPath = + areaPath + graphics.line(x, areaBottomY) + graphics.move(x, y) + 'z' + linePaths.push(linePath) + areaPaths.push(areaPath) + } + } + + return { + linePaths, + areaPaths, + pX, + pY, + linePath, + areaPath + } + } + + handleNullDataPoints(series, pointsPos, i, j, realIndex) { + const w = this.w + if ( + (series[i][j] === null && w.config.markers.showNullDataPoints) || + series[i].length === 1 + ) { + // fixes apexcharts.js#1282, #1252 + let elPointsWrap = this.markers.plotChartMarkers( + pointsPos, + realIndex, + j + 1, + this.strokeWidth - w.config.markers.strokeWidth / 2, + true + ) + if (elPointsWrap !== null) { + this.elPointsMain.add(elPointsWrap) + } + } + } +} + +export default Line diff --git a/public/assets/libs/apexcharts/src/charts/Pie.js b/public/assets/libs/apexcharts/src/charts/Pie.js new file mode 100644 index 0000000..8259e7f --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Pie.js @@ -0,0 +1,1057 @@ +import Animations from '../modules/Animations' +import Fill from '../modules/Fill' +import Utils from '../utils/Utils' +import Graphics from '../modules/Graphics' +import Filters from '../modules/Filters' +import Scales from '../modules/Scales' +import Helpers from './common/circle/Helpers' +/** + * ApexCharts Pie Class for drawing Pie / Donut Charts. + * @module Pie + **/ + +class Pie { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + const w = this.w + + this.chartType = this.w.config.chart.type + + this.initialAnim = this.w.config.chart.animations.enabled + this.dynamicAnim = + this.initialAnim && + this.w.config.chart.animations.dynamicAnimation.enabled + + this.animBeginArr = [0] + this.animDur = 0 + + this.donutDataLabels = this.w.config.plotOptions.pie.donut.labels + + this.lineColorArr = + w.globals.stroke.colors !== undefined + ? w.globals.stroke.colors + : w.globals.colors + + this.defaultSize = Math.min(w.globals.gridWidth, w.globals.gridHeight) + + this.centerY = this.defaultSize / 2 + this.centerX = w.globals.gridWidth / 2 + + if (w.config.chart.type === 'radialBar') { + this.fullAngle = 360 + } else { + this.fullAngle = Math.abs( + w.config.plotOptions.pie.endAngle - w.config.plotOptions.pie.startAngle + ) + } + this.initialAngle = w.config.plotOptions.pie.startAngle % this.fullAngle + + w.globals.radialSize = + this.defaultSize / 2.05 - + w.config.stroke.width - + (!w.config.chart.sparkline.enabled ? w.config.chart.dropShadow.blur : 0) + + this.donutSize = + (w.globals.radialSize * + parseInt(w.config.plotOptions.pie.donut.size, 10)) / + 100 + + this.maxY = 0 + this.sliceLabels = [] + this.sliceSizes = [] + + this.prevSectorAngleArr = [] // for dynamic animations + } + + draw(series) { + let self = this + let w = this.w + + const graphics = new Graphics(this.ctx) + + this.ret = graphics.group({ + class: 'apexcharts-pie' + }) + + if (w.globals.noData) return this.ret + + let total = 0 + for (let k = 0; k < series.length; k++) { + // CALCULATE THE TOTAL + total += Utils.negToZero(series[k]) + } + + let sectorAngleArr = [] + + // el to which series will be drawn + let elSeries = graphics.group() + + // prevent division by zero error if there is no data + if (total === 0) { + total = 0.00001 + } + + series.forEach((m) => { + this.maxY = Math.max(this.maxY, m) + }) + + // override maxY if user provided in config + if (w.config.yaxis[0].max) { + this.maxY = w.config.yaxis[0].max + } + + if (w.config.grid.position === 'back' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret) + } + + for (let i = 0; i < series.length; i++) { + // CALCULATE THE ANGLES + let angle = (this.fullAngle * Utils.negToZero(series[i])) / total + sectorAngleArr.push(angle) + + if (this.chartType === 'polarArea') { + sectorAngleArr[i] = this.fullAngle / series.length + this.sliceSizes.push((w.globals.radialSize * series[i]) / this.maxY) + } else { + this.sliceSizes.push(w.globals.radialSize) + } + } + + if (w.globals.dataChanged) { + let prevTotal = 0 + for (let k = 0; k < w.globals.previousPaths.length; k++) { + // CALCULATE THE PREV TOTAL + prevTotal += Utils.negToZero(w.globals.previousPaths[k]) + } + + let previousAngle + + for (let i = 0; i < w.globals.previousPaths.length; i++) { + // CALCULATE THE PREVIOUS ANGLES + previousAngle = + (this.fullAngle * Utils.negToZero(w.globals.previousPaths[i])) / + prevTotal + this.prevSectorAngleArr.push(previousAngle) + } + } + + // on small chart size after few count of resizes browser window donutSize can be negative + if (this.donutSize < 0) { + this.donutSize = 0 + } + + let scaleSize = w.config.plotOptions.pie.customScale + let halfW = w.globals.gridWidth / 2 + let halfH = w.globals.gridHeight / 2 + let translateX = halfW - (w.globals.gridWidth / 2) * scaleSize + let translateY = halfH - (w.globals.gridHeight / 2) * scaleSize + + if (this.chartType === 'donut') { + // draw the inner circle and add some text to it + const circle = graphics.drawCircle(this.donutSize) + + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: w.config.plotOptions.pie.donut.background + ? w.config.plotOptions.pie.donut.background + : 'transparent' + }) + + elSeries.add(circle) + } + + let elG = self.drawArcs(sectorAngleArr, series) + + // add slice dataLabels at the end + this.sliceLabels.forEach((s) => { + elG.add(s) + }) + + elSeries.attr({ + transform: `translate(${translateX}, ${translateY}) scale(${scaleSize})` + }) + + elSeries.add(elG) + + this.ret.add(elSeries) + + if (this.donutDataLabels.show) { + let dataLabels = this.renderInnerDataLabels(this.donutDataLabels, { + hollowSize: this.donutSize, + centerX: this.centerX, + centerY: this.centerY, + opacity: this.donutDataLabels.show, + translateX, + translateY + }) + + this.ret.add(dataLabels) + } + + if (w.config.grid.position === 'front' && this.chartType === 'polarArea') { + this.drawPolarElements(this.ret) + } + + return this.ret + } + + // core function for drawing pie arcs + drawArcs(sectorAngleArr, series) { + let w = this.w + const filters = new Filters(this.ctx) + + let graphics = new Graphics(this.ctx) + let fill = new Fill(this.ctx) + let g = graphics.group({ + class: 'apexcharts-slices' + }) + + let startAngle = this.initialAngle + let prevStartAngle = this.initialAngle + let endAngle = this.initialAngle + let prevEndAngle = this.initialAngle + + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0 + + for (let i = 0; i < sectorAngleArr.length; i++) { + let elPieArc = graphics.group({ + class: `apexcharts-series apexcharts-pie-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }) + + g.add(elPieArc) + + startAngle = endAngle + prevStartAngle = prevEndAngle + + endAngle = startAngle + sectorAngleArr[i] + prevEndAngle = prevStartAngle + this.prevSectorAngleArr[i] + + const angle = + endAngle < startAngle + ? this.fullAngle + endAngle - startAngle + : endAngle - startAngle + + let pathFill = fill.fillPath({ + seriesNumber: i, + size: this.sliceSizes[i], + value: series[i] + }) // additionally, pass size for gradient drawing in the fillPath function + + let path = this.getChangedPath(prevStartAngle, prevEndAngle) + + let elPath = graphics.drawPath({ + d: path, + stroke: Array.isArray(this.lineColorArr) + ? this.lineColorArr[i] + : this.lineColorArr, + strokeWidth: 0, + fill: pathFill, + fillOpacity: w.config.fill.opacity, + classes: `apexcharts-pie-area apexcharts-${this.chartType.toLowerCase()}-slice-${i}` + }) + + elPath.attr({ + index: 0, + j: i + }) + + filters.setSelectionFilter(elPath, 0, i) + + if (w.config.chart.dropShadow.enabled) { + const shadow = w.config.chart.dropShadow + filters.dropShadow(elPath, shadow, i) + } + + this.addListeners(elPath, this.donutDataLabels) + + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:startAngle': startAngle, + 'data:strokeWidth': this.strokeWidth, + 'data:value': series[i] + }) + + let labelPosition = { + x: 0, + y: 0 + } + + if (this.chartType === 'pie' || this.chartType === 'polarArea') { + labelPosition = Utils.polarToCartesian( + this.centerX, + this.centerY, + w.globals.radialSize / 1.25 + + w.config.plotOptions.pie.dataLabels.offset, + (startAngle + angle / 2) % this.fullAngle + ) + } else if (this.chartType === 'donut') { + labelPosition = Utils.polarToCartesian( + this.centerX, + this.centerY, + (w.globals.radialSize + this.donutSize) / 2 + + w.config.plotOptions.pie.dataLabels.offset, + (startAngle + angle / 2) % this.fullAngle + ) + } + + elPieArc.add(elPath) + + // Animation code starts + let dur = 0 + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = (angle / this.fullAngle) * w.config.chart.animations.speed + + if (dur === 0) dur = 1 + this.animDur = dur + this.animDur + this.animBeginArr.push(this.animDur) + } else { + this.animBeginArr.push(0) + } + + if (this.dynamicAnim && w.globals.dataChanged) { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle, + startAngle, + prevStartAngle, + prevEndAngle, + animateStartingPos: true, + i, + animBeginArr: this.animBeginArr, + shouldSetPrevPaths: true, + dur: w.config.chart.animations.dynamicAnimation.speed + }) + } else { + this.animatePaths(elPath, { + size: this.sliceSizes[i], + endAngle, + startAngle, + i, + totalItems: sectorAngleArr.length - 1, + animBeginArr: this.animBeginArr, + dur + }) + } + // animation code ends + + if ( + w.config.plotOptions.pie.expandOnClick && + this.chartType !== 'polarArea' + ) { + elPath.click(this.pieClicked.bind(this, i)) + } + + if ( + typeof w.globals.selectedDataPoints[0] !== 'undefined' && + w.globals.selectedDataPoints[0].indexOf(i) > -1 + ) { + this.pieClicked(i) + } + + if (w.config.dataLabels.enabled) { + let xPos = labelPosition.x + let yPos = labelPosition.y + let text = (100 * angle) / this.fullAngle + '%' + + if ( + angle !== 0 && + w.config.plotOptions.pie.dataLabels.minAngleToShowLabel < + sectorAngleArr[i] + ) { + let formatter = w.config.dataLabels.formatter + if (formatter !== undefined) { + text = formatter(w.globals.seriesPercent[i][0], { + seriesIndex: i, + w + }) + } + let foreColor = w.globals.dataLabels.style.colors[i] + + const elPieLabelWrap = graphics.group({ + class: `apexcharts-datalabels` + }) + let elPieLabel = graphics.drawText({ + x: xPos, + y: yPos, + text, + textAnchor: 'middle', + fontSize: w.config.dataLabels.style.fontSize, + fontFamily: w.config.dataLabels.style.fontFamily, + fontWeight: w.config.dataLabels.style.fontWeight, + foreColor + }) + + elPieLabelWrap.add(elPieLabel) + if (w.config.dataLabels.dropShadow.enabled) { + const textShadow = w.config.dataLabels.dropShadow + filters.dropShadow(elPieLabel, textShadow) + } + + elPieLabel.node.classList.add('apexcharts-pie-label') + if ( + w.config.chart.animations.animate && + w.globals.resized === false + ) { + elPieLabel.node.classList.add('apexcharts-pie-label-delay') + elPieLabel.node.style.animationDelay = + w.config.chart.animations.speed / 940 + 's' + } + + this.sliceLabels.push(elPieLabelWrap) + } + } + } + + return g + } + + addListeners(elPath, dataLabels) { + const graphics = new Graphics(this.ctx) + // append filters on mouseenter and mouseleave + elPath.node.addEventListener( + 'mouseenter', + graphics.pathMouseEnter.bind(this, elPath) + ) + + elPath.node.addEventListener( + 'mouseleave', + graphics.pathMouseLeave.bind(this, elPath) + ) + elPath.node.addEventListener( + 'mouseleave', + this.revertDataLabelsInner.bind(this, elPath.node, dataLabels) + ) + elPath.node.addEventListener( + 'mousedown', + graphics.pathMouseDown.bind(this, elPath) + ) + + if (!this.donutDataLabels.total.showAlways) { + elPath.node.addEventListener( + 'mouseenter', + this.printDataLabelsInner.bind(this, elPath.node, dataLabels) + ) + + elPath.node.addEventListener( + 'mousedown', + this.printDataLabelsInner.bind(this, elPath.node, dataLabels) + ) + } + } + + // This function can be used for other circle charts too + animatePaths(el, opts) { + let w = this.w + let me = this + + let angle = + opts.endAngle < opts.startAngle + ? this.fullAngle + opts.endAngle - opts.startAngle + : opts.endAngle - opts.startAngle + let prevAngle = angle + + let fromStartAngle = opts.startAngle + let toStartAngle = opts.startAngle + + if (opts.prevStartAngle !== undefined && opts.prevEndAngle !== undefined) { + fromStartAngle = opts.prevEndAngle + prevAngle = + opts.prevEndAngle < opts.prevStartAngle + ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle + : opts.prevEndAngle - opts.prevStartAngle + } + if (opts.i === w.config.series.length - 1) { + // some adjustments for the last overlapping paths + if (angle + toStartAngle > this.fullAngle) { + opts.endAngle = opts.endAngle - (angle + toStartAngle) + } else if (angle + toStartAngle < this.fullAngle) { + opts.endAngle = + opts.endAngle + (this.fullAngle - (angle + toStartAngle)) + } + } + + if (angle === this.fullAngle) angle = this.fullAngle - 0.01 + + me.animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) + } + + animateArc(el, fromStartAngle, toStartAngle, angle, prevAngle, opts) { + let me = this + const w = this.w + const animations = new Animations(this.ctx) + + let size = opts.size + + let path + + if (isNaN(fromStartAngle) || isNaN(prevAngle)) { + fromStartAngle = toStartAngle + prevAngle = angle + opts.dur = 0 + } + + let currAngle = angle + let startAngle = toStartAngle + let fromAngle = + fromStartAngle < toStartAngle + ? this.fullAngle + fromStartAngle - toStartAngle + : fromStartAngle - toStartAngle + + if (w.globals.dataChanged && opts.shouldSetPrevPaths) { + // to avoid flicker when updating, set prev path first and then animate from there + if (opts.prevEndAngle) { + path = me.getPiePath({ + me, + startAngle: opts.prevStartAngle, + angle: + opts.prevEndAngle < opts.prevStartAngle + ? this.fullAngle + opts.prevEndAngle - opts.prevStartAngle + : opts.prevEndAngle - opts.prevStartAngle, + size + }) + el.attr({ d: path }) + } + } + + if (opts.dur !== 0) { + el.animate(opts.dur, w.globals.easing, opts.animBeginArr[opts.i]) + .afterAll(function() { + if ( + me.chartType === 'pie' || + me.chartType === 'donut' || + me.chartType === 'polarArea' + ) { + this.animate(w.config.chart.animations.dynamicAnimation.speed).attr( + { + 'stroke-width': me.strokeWidth + } + ) + } + + if (opts.i === w.config.series.length - 1) { + animations.animationCompleted(el) + } + }) + .during((pos) => { + currAngle = fromAngle + (angle - fromAngle) * pos + if (opts.animateStartingPos) { + currAngle = prevAngle + (angle - prevAngle) * pos + startAngle = + fromStartAngle - + prevAngle + + (toStartAngle - (fromStartAngle - prevAngle)) * pos + } + + path = me.getPiePath({ + me, + startAngle, + angle: currAngle, + size + }) + + el.node.setAttribute('data:pathOrig', path) + + el.attr({ + d: path + }) + }) + } else { + path = me.getPiePath({ + me, + startAngle, + angle, + size + }) + + if (!opts.isTrack) { + w.globals.animationEnded = true + } + el.node.setAttribute('data:pathOrig', path) + + el.attr({ + d: path, + 'stroke-width': me.strokeWidth + }) + } + } + + pieClicked(i) { + let w = this.w + let me = this + let path + + let size = + me.sliceSizes[i] + (w.config.plotOptions.pie.expandOnClick ? 4 : 0) + let elPath = w.globals.dom.Paper.select( + `.apexcharts-${me.chartType.toLowerCase()}-slice-${i}` + ).members[0] + + if (elPath.attr('data:pieClicked') === 'true') { + elPath.attr({ + 'data:pieClicked': 'false' + }) + this.revertDataLabelsInner(elPath.node, this.donutDataLabels) + + let origPath = elPath.attr('data:pathOrig') + elPath.attr({ + d: origPath + }) + return + } else { + // reset all elems + let allEls = w.globals.dom.baseEl.getElementsByClassName( + 'apexcharts-pie-area' + ) + Array.prototype.forEach.call(allEls, (pieSlice) => { + pieSlice.setAttribute('data:pieClicked', 'false') + let origPath = pieSlice.getAttribute('data:pathOrig') + pieSlice.setAttribute('d', origPath) + }) + elPath.attr('data:pieClicked', 'true') + } + + let startAngle = parseInt(elPath.attr('data:startAngle'), 10) + let angle = parseInt(elPath.attr('data:angle'), 10) + + path = me.getPiePath({ + me, + startAngle, + angle, + size + }) + + if (angle === 360) return + + elPath.plot(path) + } + + getChangedPath(prevStartAngle, prevEndAngle) { + let path = '' + if (this.dynamicAnim && this.w.globals.dataChanged) { + path = this.getPiePath({ + me: this, + startAngle: prevStartAngle, + angle: prevEndAngle - prevStartAngle, + size: this.size + }) + } + return path + } + + getPiePath({ me, startAngle, angle, size }) { + let path + + let startDeg = startAngle + let startRadians = (Math.PI * (startDeg - 90)) / 180 + + let endDeg = angle + startAngle + // prevent overlap + if ( + Math.ceil(endDeg) >= + this.fullAngle + + (this.w.config.plotOptions.pie.startAngle % this.fullAngle) + ) { + endDeg = + this.fullAngle + + (this.w.config.plotOptions.pie.startAngle % this.fullAngle) - + 0.01 + } + if (Math.ceil(endDeg) > this.fullAngle) endDeg -= this.fullAngle + + let endRadians = (Math.PI * (endDeg - 90)) / 180 + + let x1 = me.centerX + size * Math.cos(startRadians) + let y1 = me.centerY + size * Math.sin(startRadians) + let x2 = me.centerX + size * Math.cos(endRadians) + let y2 = me.centerY + size * Math.sin(endRadians) + + let startInner = Utils.polarToCartesian( + me.centerX, + me.centerY, + me.donutSize, + endDeg + ) + let endInner = Utils.polarToCartesian( + me.centerX, + me.centerY, + me.donutSize, + startDeg + ) + + let largeArc = angle > 180 ? 1 : 0 + + const pathBeginning = ['M', x1, y1, 'A', size, size, 0, largeArc, 1, x2, y2] + + if (me.chartType === 'donut') { + path = [ + ...pathBeginning, + 'L', + startInner.x, + startInner.y, + 'A', + me.donutSize, + me.donutSize, + 0, + largeArc, + 0, + endInner.x, + endInner.y, + 'L', + x1, + y1, + 'z' + ].join(' ') + } else if (me.chartType === 'pie' || me.chartType === 'polarArea') { + path = [...pathBeginning, 'L', me.centerX, me.centerY, 'L', x1, y1].join( + ' ' + ) + } else { + path = [...pathBeginning].join(' ') + } + + return path + } + + drawPolarElements(parent) { + const w = this.w + const scale = new Scales(this.ctx) + const graphics = new Graphics(this.ctx) + const helpers = new Helpers(this.ctx) + + const gCircles = graphics.group() + const gYAxis = graphics.group() + + const yScale = scale.niceScale( + 0, + Math.ceil(this.maxY), + w.config.yaxis[0].tickAmount, + 0, + true + ) + + const yTexts = yScale.result.reverse() + let len = yScale.result.length + + this.maxY = yScale.niceMax + + let circleSize = w.globals.radialSize + let diff = circleSize / (len - 1) + + for (let i = 0; i < len - 1; i++) { + const circle = graphics.drawCircle(circleSize) + + circle.attr({ + cx: this.centerX, + cy: this.centerY, + fill: 'none', + 'stroke-width': w.config.plotOptions.polarArea.rings.strokeWidth, + stroke: w.config.plotOptions.polarArea.rings.strokeColor + }) + + if (w.config.yaxis[0].show) { + const yLabel = helpers.drawYAxisTexts( + this.centerX, + this.centerY - + circleSize + + parseInt(w.config.yaxis[0].labels.style.fontSize, 10) / 2, + i, + yTexts[i] + ) + + gYAxis.add(yLabel) + } + + gCircles.add(circle) + + circleSize = circleSize - diff + } + + this.drawSpokes(parent) + + parent.add(gCircles) + parent.add(gYAxis) + } + + renderInnerDataLabels(dataLabelsConfig, opts) { + let w = this.w + const graphics = new Graphics(this.ctx) + + let g = graphics.group({ + class: 'apexcharts-datalabels-group', + transform: `translate(${opts.translateX ? opts.translateX : 0}, ${ + opts.translateY ? opts.translateY : 0 + }) scale(${w.config.plotOptions.pie.customScale})` + }) + + const showTotal = dataLabelsConfig.total.show + + g.node.style.opacity = opts.opacity + + let x = opts.centerX + let y = opts.centerY + + let labelColor, valueColor + + if (dataLabelsConfig.name.color === undefined) { + labelColor = w.globals.colors[0] + } else { + labelColor = dataLabelsConfig.name.color + } + let labelFontSize = dataLabelsConfig.name.fontSize + let labelFontFamily = dataLabelsConfig.name.fontFamily + let labelFontWeight = dataLabelsConfig.name.fontWeight + + if (dataLabelsConfig.value.color === undefined) { + valueColor = w.config.chart.foreColor + } else { + valueColor = dataLabelsConfig.value.color + } + + let lbFormatter = dataLabelsConfig.value.formatter + let val = '' + let name = '' + + if (showTotal) { + labelColor = dataLabelsConfig.total.color + labelFontSize = dataLabelsConfig.total.fontSize + labelFontFamily = dataLabelsConfig.total.fontFamily + labelFontWeight = dataLabelsConfig.total.fontWeight + name = dataLabelsConfig.total.label + val = dataLabelsConfig.total.formatter(w) + } else { + if (w.globals.series.length === 1) { + val = lbFormatter(w.globals.series[0], w) + name = w.globals.seriesNames[0] + } + } + + if (name) { + name = dataLabelsConfig.name.formatter( + name, + dataLabelsConfig.total.show, + w + ) + } + + if (dataLabelsConfig.name.show) { + let elLabel = graphics.drawText({ + x, + y: y + parseFloat(dataLabelsConfig.name.offsetY), + text: name, + textAnchor: 'middle', + foreColor: labelColor, + fontSize: labelFontSize, + fontWeight: labelFontWeight, + fontFamily: labelFontFamily + }) + elLabel.node.classList.add('apexcharts-datalabel-label') + g.add(elLabel) + } + + if (dataLabelsConfig.value.show) { + let valOffset = dataLabelsConfig.name.show + ? parseFloat(dataLabelsConfig.value.offsetY) + 16 + : dataLabelsConfig.value.offsetY + + let elValue = graphics.drawText({ + x, + y: y + valOffset, + text: val, + textAnchor: 'middle', + foreColor: valueColor, + fontWeight: dataLabelsConfig.value.fontWeight, + fontSize: dataLabelsConfig.value.fontSize, + fontFamily: dataLabelsConfig.value.fontFamily + }) + elValue.node.classList.add('apexcharts-datalabel-value') + g.add(elValue) + } + + // for a multi-series circle chart, we need to show total value instead of first series labels + + return g + } + + /** + * + * @param {string} name - The name of the series + * @param {string} val - The value of that series + * @param {object} el - Optional el (indicates which series was hovered/clicked). If this param is not present, means we need to show total + */ + printInnerLabels(labelsConfig, name, val, el) { + const w = this.w + + let labelColor + + if (el) { + if (labelsConfig.name.color === undefined) { + labelColor = + w.globals.colors[parseInt(el.parentNode.getAttribute('rel'), 10) - 1] + } else { + labelColor = labelsConfig.name.color + } + } else { + if (w.globals.series.length > 1 && labelsConfig.total.show) { + labelColor = labelsConfig.total.color + } + } + + let elLabel = w.globals.dom.baseEl.querySelector( + '.apexcharts-datalabel-label' + ) + let elValue = w.globals.dom.baseEl.querySelector( + '.apexcharts-datalabel-value' + ) + + let lbFormatter = labelsConfig.value.formatter + val = lbFormatter(val, w) + + // we need to show Total Val - so get the formatter of it + if (!el && typeof labelsConfig.total.formatter === 'function') { + val = labelsConfig.total.formatter(w) + } + + const isTotal = name === labelsConfig.total.label + name = labelsConfig.name.formatter(name, isTotal, w) + + if (elLabel !== null) { + elLabel.textContent = name + } + + if (elValue !== null) { + elValue.textContent = val + } + if (elLabel !== null) { + elLabel.style.fill = labelColor + } + } + + printDataLabelsInner(el, dataLabelsConfig) { + let w = this.w + + let val = el.getAttribute('data:value') + let name = + w.globals.seriesNames[parseInt(el.parentNode.getAttribute('rel'), 10) - 1] + + if (w.globals.series.length > 1) { + this.printInnerLabels(dataLabelsConfig, name, val, el) + } + + let dataLabelsGroup = w.globals.dom.baseEl.querySelector( + '.apexcharts-datalabels-group' + ) + if (dataLabelsGroup !== null) { + dataLabelsGroup.style.opacity = 1 + } + } + + drawSpokes(parent) { + const w = this.w + const graphics = new Graphics(this.ctx) + const spokeConfig = w.config.plotOptions.polarArea.spokes + + if (spokeConfig.strokeWidth === 0) return + + let spokes = [] + + let angleDivision = 360 / w.globals.series.length + for (let i = 0; i < w.globals.series.length; i++) { + spokes.push( + Utils.polarToCartesian( + this.centerX, + this.centerY, + w.globals.radialSize, + w.config.plotOptions.pie.startAngle + angleDivision * i + ) + ) + } + + spokes.forEach((p, i) => { + const line = graphics.drawLine( + p.x, + p.y, + this.centerX, + this.centerY, + Array.isArray(spokeConfig.connectorColors) + ? spokeConfig.connectorColors[i] + : spokeConfig.connectorColors + ) + + parent.add(line) + }) + } + + revertDataLabelsInner(elem, dataLabelsConfig, event) { + let w = this.w + let dataLabelsGroup = w.globals.dom.baseEl.querySelector( + '.apexcharts-datalabels-group' + ) + + let sliceOut = false + const slices = w.globals.dom.baseEl.getElementsByClassName( + `apexcharts-pie-area` + ) + + const selectSlice = ({ makeSliceOut, printLabel }) => { + Array.prototype.forEach.call(slices, (s) => { + if (s.getAttribute('data:pieClicked') === 'true') { + if (makeSliceOut) { + sliceOut = true + } + if (printLabel) { + this.printDataLabelsInner(s, dataLabelsConfig) + } + } + }) + } + + selectSlice({ makeSliceOut: true, printLabel: false }) + + if (dataLabelsConfig.total.show && w.globals.series.length > 1) { + if (sliceOut && !dataLabelsConfig.total.showAlways) { + selectSlice({ makeSliceOut: false, printLabel: true }) + } else { + this.printInnerLabels( + dataLabelsConfig, + dataLabelsConfig.total.label, + dataLabelsConfig.total.formatter(w) + ) + } + } else { + selectSlice({ makeSliceOut: false, printLabel: true }) + + if (!sliceOut) { + if ( + w.globals.selectedDataPoints.length && + w.globals.series.length > 1 + ) { + if (w.globals.selectedDataPoints[0].length > 0) { + const index = w.globals.selectedDataPoints[0] + const el = w.globals.dom.baseEl.querySelector( + `.apexcharts-${this.chartType.toLowerCase()}-slice-${index}` + ) + + this.printDataLabelsInner(el, dataLabelsConfig) + } else if ( + dataLabelsGroup && + w.globals.selectedDataPoints.length && + w.globals.selectedDataPoints[0].length === 0 + ) { + dataLabelsGroup.style.opacity = 0 + } + } else { + if (dataLabelsGroup && w.globals.series.length > 1) { + dataLabelsGroup.style.opacity = 0 + } + } + } + } + } +} + +export default Pie diff --git a/public/assets/libs/apexcharts/src/charts/Radar.js b/public/assets/libs/apexcharts/src/charts/Radar.js new file mode 100644 index 0000000..21b93a6 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Radar.js @@ -0,0 +1,524 @@ +import Fill from '../modules/Fill' +import Graphics from '../modules/Graphics' +import Markers from '../modules/Markers' +import DataLabels from '../modules/DataLabels' +import Filters from '../modules/Filters' +import Utils from '../utils/Utils' +import Helpers from './common/circle/Helpers' +import CoreUtils from '../modules/CoreUtils' + +/** + * ApexCharts Radar Class for Spider/Radar Charts. + * @module Radar + **/ + +class Radar { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.chartType = this.w.config.chart.type + + this.initialAnim = this.w.config.chart.animations.enabled + this.dynamicAnim = + this.initialAnim && + this.w.config.chart.animations.dynamicAnimation.enabled + + this.animDur = 0 + + const w = this.w + this.graphics = new Graphics(this.ctx) + + this.lineColorArr = + w.globals.stroke.colors !== undefined + ? w.globals.stroke.colors + : w.globals.colors + + this.defaultSize = + w.globals.svgHeight < w.globals.svgWidth + ? w.globals.gridHeight + w.globals.goldenPadding * 1.5 + : w.globals.gridWidth + + this.isLog = w.config.yaxis[0].logarithmic + + this.coreUtils = new CoreUtils(this.ctx) + this.maxValue = this.isLog + ? this.coreUtils.getLogVal(w.globals.maxY, 0) + : w.globals.maxY + this.minValue = this.isLog + ? this.coreUtils.getLogVal(this.w.globals.minY, 0) + : w.globals.minY + + this.polygons = w.config.plotOptions.radar.polygons + + this.strokeWidth = w.config.stroke.show ? w.config.stroke.width : 0 + + this.size = + this.defaultSize / 2.1 - this.strokeWidth - w.config.chart.dropShadow.blur + + if (w.config.xaxis.labels.show) { + this.size = this.size - w.globals.xAxisLabelsWidth / 1.75 + } + + if (w.config.plotOptions.radar.size !== undefined) { + this.size = w.config.plotOptions.radar.size + } + + this.dataRadiusOfPercent = [] + this.dataRadius = [] + this.angleArr = [] + + this.yaxisLabelsTextsPos = [] + } + + draw(series) { + let w = this.w + const fill = new Fill(this.ctx) + + const allSeries = [] + const dataLabels = new DataLabels(this.ctx) + + if (series.length) { + this.dataPointsLen = series[w.globals.maxValsInArrayIndex].length + } + this.disAngle = (Math.PI * 2) / this.dataPointsLen + + let halfW = w.globals.gridWidth / 2 + let halfH = w.globals.gridHeight / 2 + let translateX = halfW + w.config.plotOptions.radar.offsetX + let translateY = halfH + w.config.plotOptions.radar.offsetY + + let ret = this.graphics.group({ + class: 'apexcharts-radar-series apexcharts-plot-series', + transform: `translate(${translateX || 0}, ${translateY || 0})` + }) + + let dataPointsPos = [] + let elPointsMain = null + let elDataPointsMain = null + + this.yaxisLabels = this.graphics.group({ + class: 'apexcharts-yaxis' + }) + + series.forEach((s, i) => { + let longestSeries = s.length === w.globals.dataPoints + + // el to which series will be drawn + let elSeries = this.graphics.group().attr({ + class: `apexcharts-series`, + 'data:longestSeries': longestSeries, + seriesName: Utils.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }) + + this.dataRadiusOfPercent[i] = [] + this.dataRadius[i] = [] + this.angleArr[i] = [] + + s.forEach((dv, j) => { + const range = Math.abs(this.maxValue - this.minValue) + dv = dv + Math.abs(this.minValue) + + if (this.isLog) { + dv = this.coreUtils.getLogVal(dv, 0) + } + + this.dataRadiusOfPercent[i][j] = dv / range + + this.dataRadius[i][j] = this.dataRadiusOfPercent[i][j] * this.size + this.angleArr[i][j] = j * this.disAngle + }) + + dataPointsPos = this.getDataPointsPos( + this.dataRadius[i], + this.angleArr[i] + ) + const paths = this.createPaths(dataPointsPos, { + x: 0, + y: 0 + }) + + // points + elPointsMain = this.graphics.group({ + class: 'apexcharts-series-markers-wrap apexcharts-element-hidden' + }) + + // datapoints + elDataPointsMain = this.graphics.group({ + class: `apexcharts-datalabels`, + 'data:realIndex': i + }) + + w.globals.delayedElements.push({ + el: elPointsMain.node, + index: i + }) + + const defaultRenderedPathOptions = { + i, + realIndex: i, + animationDelay: i, + initialSpeed: w.config.chart.animations.speed, + dataChangeSpeed: w.config.chart.animations.dynamicAnimation.speed, + className: `apexcharts-radar`, + shouldClipToGrid: false, + bindEventsOnPaths: false, + stroke: w.globals.stroke.colors[i], + strokeLineCap: w.config.stroke.lineCap + } + + let pathFrom = null + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.getPreviousPath(i) + } + + for (let p = 0; p < paths.linePathsTo.length; p++) { + let renderedLinePath = this.graphics.renderPaths({ + ...defaultRenderedPathOptions, + pathFrom: pathFrom === null ? paths.linePathsFrom[p] : pathFrom, + pathTo: paths.linePathsTo[p], + strokeWidth: Array.isArray(this.strokeWidth) + ? this.strokeWidth[i] + : this.strokeWidth, + fill: 'none', + drawShadow: false + }) + + elSeries.add(renderedLinePath) + + let pathFill = fill.fillPath({ + seriesNumber: i + }) + + let renderedAreaPath = this.graphics.renderPaths({ + ...defaultRenderedPathOptions, + pathFrom: pathFrom === null ? paths.areaPathsFrom[p] : pathFrom, + pathTo: paths.areaPathsTo[p], + strokeWidth: 0, + fill: pathFill, + drawShadow: false + }) + + if (w.config.chart.dropShadow.enabled) { + const filters = new Filters(this.ctx) + + const shadow = w.config.chart.dropShadow + filters.dropShadow( + renderedAreaPath, + Object.assign({}, shadow, { noUserSpaceOnUse: true }), + i + ) + } + + elSeries.add(renderedAreaPath) + } + + s.forEach((sj, j) => { + let markers = new Markers(this.ctx) + + let opts = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex: j + }) + + let point = this.graphics.drawMarker( + dataPointsPos[j].x, + dataPointsPos[j].y, + opts + ) + + point.attr('rel', j) + point.attr('j', j) + point.attr('index', i) + point.node.setAttribute('default-marker-size', opts.pSize) + + let elPointsWrap = this.graphics.group({ + class: 'apexcharts-series-markers' + }) + + if (elPointsWrap) { + elPointsWrap.add(point) + } + + elPointsMain.add(elPointsWrap) + + elSeries.add(elPointsMain) + + const dataLabelsConfig = w.config.dataLabels + + if (dataLabelsConfig.enabled) { + let text = dataLabelsConfig.formatter(w.globals.series[i][j], { + seriesIndex: i, + dataPointIndex: j, + w + }) + + dataLabels.plotDataLabelsText({ + x: dataPointsPos[j].x, + y: dataPointsPos[j].y, + text, + textAnchor: 'middle', + i, + j: i, + parent: elDataPointsMain, + offsetCorrection: false, + dataLabelsConfig: { + ...dataLabelsConfig + } + }) + } + elSeries.add(elDataPointsMain) + }) + + allSeries.push(elSeries) + }) + + this.drawPolygons({ + parent: ret + }) + + if (w.config.xaxis.labels.show) { + const xaxisTexts = this.drawXAxisTexts() + ret.add(xaxisTexts) + } + + allSeries.forEach((elS) => { + ret.add(elS) + }) + + ret.add(this.yaxisLabels) + + return ret + } + + drawPolygons(opts) { + const w = this.w + const { parent } = opts + const helpers = new Helpers(this.ctx) + + const yaxisTexts = w.globals.yAxisScale[0].result.reverse() + const layers = yaxisTexts.length + + let radiusSizes = [] + let layerDis = this.size / (layers - 1) + for (let i = 0; i < layers; i++) { + radiusSizes[i] = layerDis * i + } + radiusSizes.reverse() + + let polygonStrings = [] + let lines = [] + + radiusSizes.forEach((radiusSize, r) => { + const polygon = Utils.getPolygonPos(radiusSize, this.dataPointsLen) + let string = '' + + polygon.forEach((p, i) => { + if (r === 0) { + const line = this.graphics.drawLine( + p.x, + p.y, + 0, + 0, + Array.isArray(this.polygons.connectorColors) + ? this.polygons.connectorColors[i] + : this.polygons.connectorColors + ) + + lines.push(line) + } + + if (i === 0) { + this.yaxisLabelsTextsPos.push({ + x: p.x, + y: p.y + }) + } + + string += p.x + ',' + p.y + ' ' + }) + + polygonStrings.push(string) + }) + + polygonStrings.forEach((p, i) => { + const strokeColors = this.polygons.strokeColors + const strokeWidth = this.polygons.strokeWidth + const polygon = this.graphics.drawPolygon( + p, + Array.isArray(strokeColors) ? strokeColors[i] : strokeColors, + Array.isArray(strokeWidth) ? strokeWidth[i] : strokeWidth, + w.globals.radarPolygons.fill.colors[i] + ) + parent.add(polygon) + }) + + lines.forEach((l) => { + parent.add(l) + }) + + if (w.config.yaxis[0].show) { + this.yaxisLabelsTextsPos.forEach((p, i) => { + const yText = helpers.drawYAxisTexts(p.x, p.y, i, yaxisTexts[i]) + this.yaxisLabels.add(yText) + }) + } + } + + drawXAxisTexts() { + const w = this.w + + const xaxisLabelsConfig = w.config.xaxis.labels + let elXAxisWrap = this.graphics.group({ + class: 'apexcharts-xaxis' + }) + + let polygonPos = Utils.getPolygonPos(this.size, this.dataPointsLen) + + w.globals.labels.forEach((label, i) => { + let formatter = w.config.xaxis.labels.formatter + let dataLabels = new DataLabels(this.ctx) + + if (polygonPos[i]) { + let textPos = this.getTextPos(polygonPos[i], this.size) + + let text = formatter(label, { + seriesIndex: -1, + dataPointIndex: i, + w + }) + + dataLabels.plotDataLabelsText({ + x: textPos.newX, + y: textPos.newY, + text, + textAnchor: textPos.textAnchor, + i, + j: i, + parent: elXAxisWrap, + color: + Array.isArray(xaxisLabelsConfig.style.colors) && + xaxisLabelsConfig.style.colors[i] + ? xaxisLabelsConfig.style.colors[i] + : '#a8a8a8', + dataLabelsConfig: { + textAnchor: textPos.textAnchor, + dropShadow: { enabled: false }, + ...xaxisLabelsConfig + }, + offsetCorrection: false + }) + } + }) + + return elXAxisWrap + } + + createPaths(pos, origin) { + let linePathsTo = [] + let linePathsFrom = [] + let areaPathsTo = [] + let areaPathsFrom = [] + + if (pos.length) { + linePathsFrom = [this.graphics.move(origin.x, origin.y)] + areaPathsFrom = [this.graphics.move(origin.x, origin.y)] + + let linePathTo = this.graphics.move(pos[0].x, pos[0].y) + let areaPathTo = this.graphics.move(pos[0].x, pos[0].y) + + pos.forEach((p, i) => { + linePathTo += this.graphics.line(p.x, p.y) + areaPathTo += this.graphics.line(p.x, p.y) + if (i === pos.length - 1) { + linePathTo += 'Z' + areaPathTo += 'Z' + } + }) + + linePathsTo.push(linePathTo) + areaPathsTo.push(areaPathTo) + } + + return { + linePathsFrom, + linePathsTo, + areaPathsFrom, + areaPathsTo + } + } + + getTextPos(pos, polygonSize) { + let limit = 10 + let textAnchor = 'middle' + + let newX = pos.x + let newY = pos.y + + if (Math.abs(pos.x) >= limit) { + if (pos.x > 0) { + textAnchor = 'start' + newX += 10 + } else if (pos.x < 0) { + textAnchor = 'end' + newX -= 10 + } + } else { + textAnchor = 'middle' + } + if (Math.abs(pos.y) >= polygonSize - limit) { + if (pos.y < 0) { + newY -= 10 + } else if (pos.y > 0) { + newY += 10 + } + } + + return { + textAnchor, + newX, + newY + } + } + + getPreviousPath(realIndex) { + let w = this.w + let pathFrom = null + for (let pp = 0; pp < w.globals.previousPaths.length; pp++) { + let gpp = w.globals.previousPaths[pp] + + if ( + gpp.paths.length > 0 && + parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10) + ) { + if (typeof w.globals.previousPaths[pp].paths[0] !== 'undefined') { + pathFrom = w.globals.previousPaths[pp].paths[0].d + } + } + } + return pathFrom + } + + getDataPointsPos( + dataRadiusArr, + angleArr, + dataPointsLen = this.dataPointsLen + ) { + dataRadiusArr = dataRadiusArr || [] + angleArr = angleArr || [] + let dataPointsPosArray = [] + for (let j = 0; j < dataPointsLen; j++) { + let curPointPos = {} + curPointPos.x = dataRadiusArr[j] * Math.sin(angleArr[j]) + curPointPos.y = -dataRadiusArr[j] * Math.cos(angleArr[j]) + dataPointsPosArray.push(curPointPos) + } + return dataPointsPosArray + } +} + +export default Radar diff --git a/public/assets/libs/apexcharts/src/charts/Radial.js b/public/assets/libs/apexcharts/src/charts/Radial.js new file mode 100644 index 0000000..caed41e --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Radial.js @@ -0,0 +1,469 @@ +import Pie from './Pie' +import Utils from '../utils/Utils' +import Fill from '../modules/Fill' +import Graphics from '../modules/Graphics' +import Filters from '../modules/Filters' + +/** + * ApexCharts Radial Class for drawing Circle / Semi Circle Charts. + * @module Radial + **/ + +class Radial extends Pie { + constructor(ctx) { + super(ctx) + + this.ctx = ctx + this.w = ctx.w + this.animBeginArr = [0] + this.animDur = 0 + + const w = this.w + this.startAngle = w.config.plotOptions.radialBar.startAngle + this.endAngle = w.config.plotOptions.radialBar.endAngle + + this.totalAngle = Math.abs( + w.config.plotOptions.radialBar.endAngle - + w.config.plotOptions.radialBar.startAngle + ) + + this.trackStartAngle = w.config.plotOptions.radialBar.track.startAngle + this.trackEndAngle = w.config.plotOptions.radialBar.track.endAngle + + this.donutDataLabels = this.w.config.plotOptions.radialBar.dataLabels + this.radialDataLabels = this.donutDataLabels // make a copy for easy reference + + if (!this.trackStartAngle) this.trackStartAngle = this.startAngle + if (!this.trackEndAngle) this.trackEndAngle = this.endAngle + + if (this.endAngle === 360) this.endAngle = 359.99 + + this.margin = parseInt(w.config.plotOptions.radialBar.track.margin, 10) + } + + draw(series) { + let w = this.w + const graphics = new Graphics(this.ctx) + + let ret = graphics.group({ + class: 'apexcharts-radialbar' + }) + + if (w.globals.noData) return ret + + let elSeries = graphics.group() + + let centerY = this.defaultSize / 2 + let centerX = w.globals.gridWidth / 2 + + let size = this.defaultSize / 2.05 + if (!w.config.chart.sparkline.enabled) { + size = size - w.config.stroke.width - w.config.chart.dropShadow.blur + } + let colorArr = w.globals.fill.colors + + if (w.config.plotOptions.radialBar.track.show) { + let elTracks = this.drawTracks({ + size, + centerX, + centerY, + colorArr, + series + }) + elSeries.add(elTracks) + } + + let elG = this.drawArcs({ + size, + centerX, + centerY, + colorArr, + series + }) + + let totalAngle = 360 + + if (w.config.plotOptions.radialBar.startAngle < 0) { + totalAngle = this.totalAngle + } + + let angleRatio = (360 - totalAngle) / 360 + w.globals.radialSize = size - size * angleRatio + + if (this.radialDataLabels.value.show) { + let offset = Math.max( + this.radialDataLabels.value.offsetY, + this.radialDataLabels.name.offsetY + ) + w.globals.radialSize += offset * angleRatio + } + + elSeries.add(elG.g) + + if (w.config.plotOptions.radialBar.hollow.position === 'front') { + elG.g.add(elG.elHollow) + if (elG.dataLabels) { + elG.g.add(elG.dataLabels) + } + } + + ret.add(elSeries) + + return ret + } + + drawTracks(opts) { + let w = this.w + const graphics = new Graphics(this.ctx) + + let g = graphics.group({ + class: 'apexcharts-tracks' + }) + + let filters = new Filters(this.ctx) + let fill = new Fill(this.ctx) + + let strokeWidth = this.getStrokeWidth(opts) + + opts.size = opts.size - strokeWidth / 2 + + for (let i = 0; i < opts.series.length; i++) { + let elRadialBarTrack = graphics.group({ + class: 'apexcharts-radialbar-track apexcharts-track' + }) + g.add(elRadialBarTrack) + + elRadialBarTrack.attr({ + rel: i + 1 + }) + + opts.size = opts.size - strokeWidth - this.margin + + const trackConfig = w.config.plotOptions.radialBar.track + let pathFill = fill.fillPath({ + seriesNumber: 0, + size: opts.size, + fillColors: Array.isArray(trackConfig.background) + ? trackConfig.background[i] + : trackConfig.background, + solid: true + }) + + let startAngle = this.trackStartAngle + let endAngle = this.trackEndAngle + + if (Math.abs(endAngle) + Math.abs(startAngle) >= 360) + endAngle = 360 - Math.abs(this.startAngle) - 0.1 + + let elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth: + (strokeWidth * parseInt(trackConfig.strokeWidth, 10)) / 100, + fill: 'none', + strokeOpacity: trackConfig.opacity, + classes: 'apexcharts-radialbar-area' + }) + + if (trackConfig.dropShadow.enabled) { + const shadow = trackConfig.dropShadow + filters.dropShadow(elPath, shadow) + } + + elRadialBarTrack.add(elPath) + + elPath.attr('id', 'apexcharts-radialbarTrack-' + i) + + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle, + startAngle, + size: opts.size, + i, + totalItems: 2, + animBeginArr: 0, + dur: 0, + isTrack: true, + easing: w.globals.easing + }) + } + + return g + } + + drawArcs(opts) { + let w = this.w + // size, donutSize, centerX, centerY, colorArr, lineColorArr, sectorAngleArr, series + + let graphics = new Graphics(this.ctx) + let fill = new Fill(this.ctx) + let filters = new Filters(this.ctx) + let g = graphics.group() + + let strokeWidth = this.getStrokeWidth(opts) + opts.size = opts.size - strokeWidth / 2 + + let hollowFillID = w.config.plotOptions.radialBar.hollow.background + let hollowSize = + opts.size - + strokeWidth * opts.series.length - + this.margin * opts.series.length - + (strokeWidth * + parseInt(w.config.plotOptions.radialBar.track.strokeWidth, 10)) / + 100 / + 2 + + let hollowRadius = hollowSize - w.config.plotOptions.radialBar.hollow.margin + + if (w.config.plotOptions.radialBar.hollow.image !== undefined) { + hollowFillID = this.drawHollowImage(opts, g, hollowSize, hollowFillID) + } + + let elHollow = this.drawHollow({ + size: hollowRadius, + centerX: opts.centerX, + centerY: opts.centerY, + fill: hollowFillID ? hollowFillID : 'transparent' + }) + + if (w.config.plotOptions.radialBar.hollow.dropShadow.enabled) { + const shadow = w.config.plotOptions.radialBar.hollow.dropShadow + filters.dropShadow(elHollow, shadow) + } + + let shown = 1 + if (!this.radialDataLabels.total.show && w.globals.series.length > 1) { + shown = 0 + } + + let dataLabels = null + + if (this.radialDataLabels.show) { + dataLabels = this.renderInnerDataLabels(this.radialDataLabels, { + hollowSize, + centerX: opts.centerX, + centerY: opts.centerY, + opacity: shown + }) + } + + if (w.config.plotOptions.radialBar.hollow.position === 'back') { + g.add(elHollow) + if (dataLabels) { + g.add(dataLabels) + } + } + + let reverseLoop = false + if (w.config.plotOptions.radialBar.inverseOrder) { + reverseLoop = true + } + + for ( + let i = reverseLoop ? opts.series.length - 1 : 0; + reverseLoop ? i >= 0 : i < opts.series.length; + reverseLoop ? i-- : i++ + ) { + let elRadialBarArc = graphics.group({ + class: `apexcharts-series apexcharts-radial-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[i]) + }) + g.add(elRadialBarArc) + + elRadialBarArc.attr({ + rel: i + 1, + 'data:realIndex': i + }) + + this.ctx.series.addCollapsedClassToSeries(elRadialBarArc, i) + + opts.size = opts.size - strokeWidth - this.margin + + let pathFill = fill.fillPath({ + seriesNumber: i, + size: opts.size, + value: opts.series[i] + }) + + let startAngle = this.startAngle + let prevStartAngle + + // if data exceeds 100, make it 100 + const dataValue = + Utils.negToZero(opts.series[i] > 100 ? 100 : opts.series[i]) / 100 + + let endAngle = Math.round(this.totalAngle * dataValue) + this.startAngle + + let prevEndAngle + if (w.globals.dataChanged) { + prevStartAngle = this.startAngle + prevEndAngle = + Math.round( + (this.totalAngle * Utils.negToZero(w.globals.previousPaths[i])) / + 100 + ) + prevStartAngle + } + + const currFullAngle = Math.abs(endAngle) + Math.abs(startAngle) + if (currFullAngle >= 360) { + endAngle = endAngle - 0.01 + } + + const prevFullAngle = Math.abs(prevEndAngle) + Math.abs(prevStartAngle) + if (prevFullAngle >= 360) { + prevEndAngle = prevEndAngle - 0.01 + } + + let angle = endAngle - startAngle + + const dashArray = Array.isArray(w.config.stroke.dashArray) + ? w.config.stroke.dashArray[i] + : w.config.stroke.dashArray + + let elPath = graphics.drawPath({ + d: '', + stroke: pathFill, + strokeWidth, + fill: 'none', + fillOpacity: w.config.fill.opacity, + classes: 'apexcharts-radialbar-area apexcharts-radialbar-slice-' + i, + strokeDashArray: dashArray + }) + + Graphics.setAttrs(elPath.node, { + 'data:angle': angle, + 'data:value': opts.series[i] + }) + + if (w.config.chart.dropShadow.enabled) { + const shadow = w.config.chart.dropShadow + filters.dropShadow(elPath, shadow, i) + } + filters.setSelectionFilter(elPath, 0, i) + + this.addListeners(elPath, this.radialDataLabels) + + elRadialBarArc.add(elPath) + + elPath.attr({ + index: 0, + j: i + }) + + let dur = 0 + if (this.initialAnim && !w.globals.resized && !w.globals.dataChanged) { + dur = w.config.chart.animations.speed + } + + if (w.globals.dataChanged) { + dur = w.config.chart.animations.dynamicAnimation.speed + } + this.animDur = dur / (opts.series.length * 1.2) + this.animDur + this.animBeginArr.push(this.animDur) + + this.animatePaths(elPath, { + centerX: opts.centerX, + centerY: opts.centerY, + endAngle, + startAngle, + prevEndAngle, + prevStartAngle, + size: opts.size, + i, + totalItems: 2, + animBeginArr: this.animBeginArr, + dur, + shouldSetPrevPaths: true, + easing: w.globals.easing + }) + } + + return { + g, + elHollow, + dataLabels + } + } + + drawHollow(opts) { + const graphics = new Graphics(this.ctx) + + let circle = graphics.drawCircle(opts.size * 2) + + circle.attr({ + class: 'apexcharts-radialbar-hollow', + cx: opts.centerX, + cy: opts.centerY, + r: opts.size, + fill: opts.fill + }) + + return circle + } + + drawHollowImage(opts, g, hollowSize, hollowFillID) { + const w = this.w + let fill = new Fill(this.ctx) + + let randID = Utils.randomId() + let hollowFillImg = w.config.plotOptions.radialBar.hollow.image + + if (w.config.plotOptions.radialBar.hollow.imageClipped) { + fill.clippedImgArea({ + width: hollowSize, + height: hollowSize, + image: hollowFillImg, + patternID: `pattern${w.globals.cuid}${randID}` + }) + hollowFillID = `url(#pattern${w.globals.cuid}${randID})` + } else { + const imgWidth = w.config.plotOptions.radialBar.hollow.imageWidth + const imgHeight = w.config.plotOptions.radialBar.hollow.imageHeight + if (imgWidth === undefined && imgHeight === undefined) { + let image = w.globals.dom.Paper.image(hollowFillImg).loaded(function( + loader + ) { + this.move( + opts.centerX - + loader.width / 2 + + w.config.plotOptions.radialBar.hollow.imageOffsetX, + opts.centerY - + loader.height / 2 + + w.config.plotOptions.radialBar.hollow.imageOffsetY + ) + }) + g.add(image) + } else { + let image = w.globals.dom.Paper.image(hollowFillImg).loaded(function( + loader + ) { + this.move( + opts.centerX - + imgWidth / 2 + + w.config.plotOptions.radialBar.hollow.imageOffsetX, + opts.centerY - + imgHeight / 2 + + w.config.plotOptions.radialBar.hollow.imageOffsetY + ) + this.size(imgWidth, imgHeight) + }) + g.add(image) + } + } + return hollowFillID + } + + getStrokeWidth(opts) { + const w = this.w + return ( + (opts.size * + (100 - parseInt(w.config.plotOptions.radialBar.hollow.size, 10))) / + 100 / + (opts.series.length + 1) - + this.margin + ) + } +} + +export default Radial diff --git a/public/assets/libs/apexcharts/src/charts/RangeBar.js b/public/assets/libs/apexcharts/src/charts/RangeBar.js new file mode 100644 index 0000000..cdfb6bc --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/RangeBar.js @@ -0,0 +1,454 @@ +import Bar from './Bar' +import Graphics from '../modules/Graphics' +import Utils from '../utils/Utils' +import DateTime from '../utils/DateTime' + +/** + * ApexCharts RangeBar Class responsible for drawing Range/Timeline Bars. + * + * @module RangeBar + **/ + +class RangeBar extends Bar { + draw(series, seriesIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + + this.rangeBarOptions = this.w.config.plotOptions.rangeBar + + this.series = series + this.seriesRangeStart = w.globals.seriesRangeStart + this.seriesRangeEnd = w.globals.seriesRangeEnd + + this.barHelpers.initVariables(series) + + let ret = graphics.group({ + class: 'apexcharts-rangebar-series apexcharts-plot-series' + }) + + for (let i = 0; i < series.length; i++) { + let x, + y, + xDivision, // xDivision is the GRIDWIDTH divided by number of datapoints (columns) + yDivision, // yDivision is the GRIDHEIGHT divided by number of datapoints (bars) + zeroH, // zeroH is the baseline where 0 meets y axis + zeroW // zeroW is the baseline where 0 meets x axis + + let realIndex = w.globals.comboCharts ? seriesIndex[i] : i + + // el to which series will be drawn + let elSeries = graphics.group({ + class: `apexcharts-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[realIndex]), + rel: i + 1, + 'data:realIndex': realIndex + }) + + this.ctx.series.addCollapsedClassToSeries(elSeries, realIndex) + + if (series[i].length > 0) { + this.visibleI = this.visibleI + 1 + } + + let barHeight = 0 + let barWidth = 0 + + if (this.yRatio.length > 1) { + this.yaxisIndex = realIndex + } + + let initPositions = this.barHelpers.initialPositions() + + y = initPositions.y + zeroW = initPositions.zeroW + + x = initPositions.x + barWidth = initPositions.barWidth + xDivision = initPositions.xDivision + zeroH = initPositions.zeroH + + // eldatalabels + let elDataLabelsWrap = graphics.group({ + class: 'apexcharts-datalabels', + 'data:realIndex': realIndex + }) + + let elGoalsMarkers = graphics.group({ + class: 'apexcharts-rangebar-goals-markers', + style: `pointer-events: none` + }) + + for (let j = 0; j < w.globals.dataPoints; j++) { + const strokeWidth = this.barHelpers.getStrokeWidth(i, j, realIndex) + + const y1 = this.seriesRangeStart[i][j] + const y2 = this.seriesRangeEnd[i][j] + + let paths = null + let barYPosition = null + const params = { x, y, strokeWidth, elSeries } + + yDivision = initPositions.yDivision + barHeight = initPositions.barHeight + + if (this.isHorizontal) { + barYPosition = y + barHeight * this.visibleI + + let seriesLen = this.seriesLen + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1 + } + + let srty = (yDivision - barHeight * seriesLen) / 2 + + if (typeof w.config.series[i].data[j] === 'undefined') { + // no data exists for further indexes, hence we need to get out the innr loop. + // As we are iterating over total datapoints, there is a possiblity the series might not have data for j index + break + } + + if (w.config.series[i].data[j].x) { + let positions = this.detectOverlappingBars({ + i, + j, + barYPosition, + srty, + barHeight, + yDivision, + initPositions + }) + + barHeight = positions.barHeight + barYPosition = positions.barYPosition + } + + paths = this.drawRangeBarPaths({ + indexes: { i, j, realIndex }, + barHeight, + barYPosition, + zeroW, + yDivision, + y1, + y2, + ...params + }) + + barWidth = paths.barWidth + } else { + paths = this.drawRangeColumnPaths({ + indexes: { i, j, realIndex }, + zeroH, + barWidth, + xDivision, + ...params + }) + + barHeight = paths.barHeight + } + + const barGoalLine = this.barHelpers.drawGoalLine({ + barXPosition: paths.barXPosition, + barYPosition, + goalX: paths.goalX, + goalY: paths.goalY, + barHeight, + barWidth + }) + + if (barGoalLine) { + elGoalsMarkers.add(barGoalLine) + } + + y = paths.y + x = paths.x + + let pathFill = this.barHelpers.getPathFillColor(series, i, j, realIndex) + + let lineFill = w.globals.stroke.colors[realIndex] + + this.renderSeries({ + realIndex, + pathFill, + lineFill, + j, + i, + x, + y, + y1, + y2, + pathFrom: paths.pathFrom, + pathTo: paths.pathTo, + strokeWidth, + elSeries, + series, + barHeight, + barYPosition, + barWidth, + elDataLabelsWrap, + elGoalsMarkers, + visibleSeries: this.visibleI, + type: 'rangebar' + }) + } + + ret.add(elSeries) + } + + return ret + } + + detectOverlappingBars({ + i, + j, + barYPosition, + srty, + barHeight, + yDivision, + initPositions + }) { + const w = this.w + let overlaps = [] + let rangeName = w.config.series[i].data[j].rangeName + + const labelX = w.config.series[i].data[j].x + const rowIndex = w.globals.labels.indexOf(labelX) + const overlappedIndex = w.globals.seriesRangeBar[i].findIndex( + (tx) => tx.x === labelX && tx.overlaps.length > 0 + ) + + if (w.config.plotOptions.bar.rangeBarGroupRows) { + barYPosition = srty + yDivision * rowIndex + } else { + barYPosition = srty + barHeight * this.visibleI + yDivision * rowIndex + } + + if (overlappedIndex > -1 && !w.config.plotOptions.bar.rangeBarOverlap) { + overlaps = w.globals.seriesRangeBar[i][overlappedIndex].overlaps + + if (overlaps.indexOf(rangeName) > -1) { + barHeight = initPositions.barHeight / overlaps.length + + barYPosition = + barHeight * this.visibleI + + (yDivision * (100 - parseInt(this.barOptions.barHeight, 10))) / + 100 / + 2 + + barHeight * (this.visibleI + overlaps.indexOf(rangeName)) + + yDivision * rowIndex + } + } + + return { + barYPosition, + barHeight + } + } + + drawRangeColumnPaths({ + indexes, + x, + strokeWidth, + xDivision, + barWidth, + zeroH + }) { + let w = this.w + + let i = indexes.i + let j = indexes.j + + const yRatio = this.yRatio[this.yaxisIndex] + let realIndex = indexes.realIndex + + const range = this.getRangeValue(realIndex, j) + + let y1 = Math.min(range.start, range.end) + let y2 = Math.max(range.start, range.end) + + if (w.globals.isXNumeric) { + x = + (w.globals.seriesX[i][j] - w.globals.minX) / this.xRatio - barWidth / 2 + } + + let barXPosition = x + barWidth * this.visibleI + + if ( + typeof this.series[i][j] === 'undefined' || + this.series[i][j] === null + ) { + y1 = zeroH + } else { + y1 = zeroH - y1 / yRatio + y2 = zeroH - y2 / yRatio + } + const barHeight = Math.abs(y2 - y1) + + const paths = this.barHelpers.getColumnPaths({ + barXPosition, + barWidth, + y1, + y2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + realIndex: indexes.realIndex, + i: realIndex, + j, + w + }) + + if (!w.globals.isXNumeric) { + x = x + xDivision + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barHeight, + x, + y: y2, + goalY: this.barHelpers.getGoalValues('y', null, zeroH, i, j), + barXPosition + } + } + + drawRangeBarPaths({ + indexes, + y, + y1, + y2, + yDivision, + barHeight, + barYPosition, + zeroW + }) { + let w = this.w + + const x1 = zeroW + y1 / this.invertedYRatio + const x2 = zeroW + y2 / this.invertedYRatio + + const barWidth = Math.abs(x2 - x1) + + const paths = this.barHelpers.getBarpaths({ + barYPosition, + barHeight, + x1, + x2, + strokeWidth: this.strokeWidth, + series: this.seriesRangeEnd, + i: indexes.realIndex, + realIndex: indexes.realIndex, + j: indexes.j, + w + }) + + if (!w.globals.isXNumeric) { + y = y + yDivision + } + + return { + pathTo: paths.pathTo, + pathFrom: paths.pathFrom, + barWidth, + x: x2, + goalX: this.barHelpers.getGoalValues( + 'x', + zeroW, + null, + indexes.realIndex, + indexes.j + ), + y + } + } + + getRangeValue(i, j) { + const w = this.w + return { + start: w.globals.seriesRangeStart[i][j], + end: w.globals.seriesRangeEnd[i][j] + } + } + + getTooltipValues({ ctx, seriesIndex, dataPointIndex, y1, y2, w }) { + let start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex] + let end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex] + let ylabel = w.globals.labels[dataPointIndex] + let seriesName = w.config.series[seriesIndex].name + ? w.config.series[seriesIndex].name + : '' + const yLbFormatter = w.config.tooltip.y.formatter + const yLbTitleFormatter = w.config.tooltip.y.title.formatter + + const opts = { + w, + seriesIndex, + dataPointIndex, + start, + end + } + + if (typeof yLbTitleFormatter === 'function') { + seriesName = yLbTitleFormatter(seriesName, opts) + } + + if (Number.isFinite(y1) && Number.isFinite(y2)) { + start = y1 + end = y2 + + if (w.config.series[seriesIndex].data[dataPointIndex].x) { + ylabel = w.config.series[seriesIndex].data[dataPointIndex].x + ':' + } + + if (typeof yLbFormatter === 'function') { + ylabel = yLbFormatter(ylabel, opts) + } + } + + let startVal = '' + let endVal = '' + + const color = w.globals.colors[seriesIndex] + if (w.config.tooltip.x.formatter === undefined) { + if (w.config.xaxis.type === 'datetime') { + let datetimeObj = new DateTime(ctx) + startVal = datetimeObj.formatDate( + datetimeObj.getDate(start), + w.config.tooltip.x.format + ) + endVal = datetimeObj.formatDate( + datetimeObj.getDate(end), + w.config.tooltip.x.format + ) + } else { + startVal = start + endVal = end + } + } else { + startVal = w.config.tooltip.x.formatter(start) + endVal = w.config.tooltip.x.formatter(end) + } + + return { start, end, startVal, endVal, ylabel, color, seriesName } + } + + buildCustomTooltipHTML({ color, seriesName, ylabel, start, end }) { + return ( + '
    ' + + '
    ' + + (seriesName ? seriesName : '') + + '
    ' + + '
    ' + + ylabel + + ' ' + + start + + ' - ' + + end + + '
    ' + + '
    ' + ) + } +} + +export default RangeBar diff --git a/public/assets/libs/apexcharts/src/charts/Scatter.js b/public/assets/libs/apexcharts/src/charts/Scatter.js new file mode 100644 index 0000000..9171da2 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Scatter.js @@ -0,0 +1,267 @@ +import Animations from '../modules/Animations' +import Fill from '../modules/Fill' +import Filters from '../modules/Filters' +import Graphics from '../modules/Graphics' +import Markers from '../modules/Markers' + +/** + * ApexCharts Scatter Class. + * This Class also handles bubbles chart as currently there is no major difference in drawing them, + * @module Scatter + **/ +export default class Scatter { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.initialAnim = this.w.config.chart.animations.enabled + this.dynamicAnim = + this.initialAnim && + this.w.config.chart.animations.dynamicAnimation.enabled + } + + draw(elSeries, j, opts) { + let w = this.w + + let graphics = new Graphics(this.ctx) + + let realIndex = opts.realIndex + let pointsPos = opts.pointsPos + let zRatio = opts.zRatio + let elPointsMain = opts.elParent + + let elPointsWrap = graphics.group({ + class: `apexcharts-series-markers apexcharts-series-${w.config.chart.type}` + }) + + elPointsWrap.attr('clip-path', `url(#gridRectMarkerMask${w.globals.cuid})`) + + if (Array.isArray(pointsPos.x)) { + for (let q = 0; q < pointsPos.x.length; q++) { + let dataPointIndex = j + 1 + let shouldDraw = true + + // a small hack as we have 2 points for the first val to connect it + if (j === 0 && q === 0) dataPointIndex = 0 + if (j === 0 && q === 1) dataPointIndex = 1 + + let radius = 0 + let finishRadius = w.globals.markers.size[realIndex] + + if (zRatio !== Infinity) { + // means we have a bubble + finishRadius = w.globals.seriesZ[realIndex][dataPointIndex] / zRatio + + const bubble = w.config.plotOptions.bubble + if (bubble.minBubbleRadius && finishRadius < bubble.minBubbleRadius) { + finishRadius = bubble.minBubbleRadius + } + + if (bubble.maxBubbleRadius && finishRadius > bubble.maxBubbleRadius) { + finishRadius = bubble.maxBubbleRadius + } + } + + if (!w.config.chart.animations.enabled) { + radius = finishRadius + } + + let x = pointsPos.x[q] + let y = pointsPos.y[q] + + radius = radius || 0 + + if ( + y === null || + typeof w.globals.series[realIndex][dataPointIndex] === 'undefined' + ) { + shouldDraw = false + } + + if (shouldDraw) { + const point = this.drawPoint( + x, + y, + radius, + finishRadius, + realIndex, + dataPointIndex, + j + ) + elPointsWrap.add(point) + } + + elPointsMain.add(elPointsWrap) + } + } + } + + drawPoint(x, y, radius, finishRadius, realIndex, dataPointIndex, j) { + const w = this.w + + let i = realIndex + let anim = new Animations(this.ctx) + let filters = new Filters(this.ctx) + let fill = new Fill(this.ctx) + let markers = new Markers(this.ctx) + const graphics = new Graphics(this.ctx) + + const markerConfig = markers.getMarkerConfig({ + cssClass: 'apexcharts-marker', + seriesIndex: i, + dataPointIndex, + finishRadius: + w.config.chart.type === 'bubble' || + (w.globals.comboCharts && + w.config.series[realIndex] && + w.config.series[realIndex].type === 'bubble') + ? finishRadius + : null + }) + + finishRadius = markerConfig.pSize + + let pathFillCircle = fill.fillPath({ + seriesNumber: realIndex, + dataPointIndex, + color: markerConfig.pointFillColor, + patternUnits: 'objectBoundingBox', + value: w.globals.series[realIndex][j] + }) + + let el + if (markerConfig.shape === 'circle') { + el = graphics.drawCircle(radius) + } else if ( + markerConfig.shape === 'square' || + markerConfig.shape === 'rect' + ) { + el = graphics.drawRect( + 0, + 0, + markerConfig.width - markerConfig.pointStrokeWidth / 2, + markerConfig.height - markerConfig.pointStrokeWidth / 2, + markerConfig.pRadius + ) + } + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + pathFillCircle = w.config.series[i].data[dataPointIndex].fillColor + } + } + + el.attr({ + x: x - markerConfig.width / 2 - markerConfig.pointStrokeWidth / 2, + y: y - markerConfig.height / 2 - markerConfig.pointStrokeWidth / 2, + cx: x, + cy: y, + fill: pathFillCircle, + 'fill-opacity': markerConfig.pointFillOpacity, + stroke: markerConfig.pointStrokeColor, + r: finishRadius, + 'stroke-width': markerConfig.pointStrokeWidth, + 'stroke-dasharray': markerConfig.pointStrokeDashArray, + 'stroke-opacity': markerConfig.pointStrokeOpacity + }) + + if (w.config.chart.dropShadow.enabled) { + const dropShadow = w.config.chart.dropShadow + filters.dropShadow(el, dropShadow, realIndex) + } + + if (this.initialAnim && !w.globals.dataChanged && !w.globals.resized) { + let speed = w.config.chart.animations.speed + + anim.animateMarker( + el, + 0, + markerConfig.shape === 'circle' + ? finishRadius + : { width: markerConfig.width, height: markerConfig.height }, + speed, + w.globals.easing, + () => { + window.setTimeout(() => { + anim.animationCompleted(el) + }, 100) + } + ) + } else { + w.globals.animationEnded = true + } + + if (w.globals.dataChanged && markerConfig.shape === 'circle') { + if (this.dynamicAnim) { + let speed = w.config.chart.animations.dynamicAnimation.speed + let prevX, prevY, prevR + + let prevPathJ = null + + prevPathJ = + w.globals.previousPaths[realIndex] && + w.globals.previousPaths[realIndex][j] + + if (typeof prevPathJ !== 'undefined' && prevPathJ !== null) { + // series containing less elements will ignore these values and revert to 0 + prevX = prevPathJ.x + prevY = prevPathJ.y + prevR = + typeof prevPathJ.r !== 'undefined' ? prevPathJ.r : finishRadius + } + + for (let cs = 0; cs < w.globals.collapsedSeries.length; cs++) { + if (w.globals.collapsedSeries[cs].index === realIndex) { + speed = 1 + finishRadius = 0 + } + } + + if (x === 0 && y === 0) finishRadius = 0 + + anim.animateCircle( + el, + { + cx: prevX, + cy: prevY, + r: prevR + }, + { + cx: x, + cy: y, + r: finishRadius + }, + speed, + w.globals.easing + ) + } else { + el.attr({ + r: finishRadius + }) + } + } + + el.attr({ + rel: dataPointIndex, + j: dataPointIndex, + index: realIndex, + 'default-marker-size': finishRadius + }) + + filters.setSelectionFilter(el, realIndex, dataPointIndex) + markers.addEvents(el) + + el.node.classList.add('apexcharts-marker') + + return el + } + + centerTextInBubble(y) { + let w = this.w + y = y + parseInt(w.config.dataLabels.style.fontSize, 10) / 4 + + return { + y + } + } +} diff --git a/public/assets/libs/apexcharts/src/charts/Treemap.js b/public/assets/libs/apexcharts/src/charts/Treemap.js new file mode 100644 index 0000000..dede195 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/Treemap.js @@ -0,0 +1,302 @@ +import '../libs/Treemap-squared' +import Graphics from '../modules/Graphics' +import Animations from '../modules/Animations' +import Fill from '../modules/Fill' +import Helpers from './common/treemap/Helpers' +import Filters from '../modules/Filters' + +import Utils from '../utils/Utils' + +/** + * ApexCharts TreemapChart Class. + * @module TreemapChart + **/ + +export default class TreemapChart { + constructor(ctx, xyRatios) { + this.ctx = ctx + this.w = ctx.w + + this.strokeWidth = this.w.config.stroke.width + this.helpers = new Helpers(ctx) + this.dynamicAnim = this.w.config.chart.animations.dynamicAnimation + + this.labels = [] + } + + draw(series) { + let w = this.w + const graphics = new Graphics(this.ctx) + const fill = new Fill(this.ctx) + + let ret = graphics.group({ + class: 'apexcharts-treemap' + }) + + if (w.globals.noData) return ret + + let ser = [] + series.forEach((s) => { + let d = s.map((v) => { + return Math.abs(v) + }) + ser.push(d) + }) + + this.negRange = this.helpers.checkColorRange() + + w.config.series.forEach((s, i) => { + s.data.forEach((l) => { + if (!Array.isArray(this.labels[i])) this.labels[i] = [] + this.labels[i].push(l.x) + }) + }) + + const nodes = window.TreemapSquared.generate( + ser, + w.globals.gridWidth, + w.globals.gridHeight + ) + + nodes.forEach((node, i) => { + let elSeries = graphics.group({ + class: `apexcharts-series apexcharts-treemap-series`, + seriesName: Utils.escapeString(w.globals.seriesNames[i]), + rel: i + 1, + 'data:realIndex': i + }) + + if (w.config.chart.dropShadow.enabled) { + const shadow = w.config.chart.dropShadow + const filters = new Filters(this.ctx) + filters.dropShadow(ret, shadow, i) + } + + let elDataLabelWrap = graphics.group({ + class: 'apexcharts-data-labels' + }) + + node.forEach((r, j) => { + const x1 = r[0] + const y1 = r[1] + const x2 = r[2] + const y2 = r[3] + let elRect = graphics.drawRect( + x1, + y1, + x2 - x1, + y2 - y1, + 0, + '#fff', + 1, + this.strokeWidth, + w.config.plotOptions.treemap.useFillColorAsStroke + ? color + : w.globals.stroke.colors[i] + ) + elRect.attr({ + cx: x1, + cy: y1, + index: i, + i, + j, + width: x2 - x1, + height: y2 - y1 + }) + + let colorProps = this.helpers.getShadeColor( + w.config.chart.type, + i, + j, + this.negRange + ) + let color = colorProps.color + + if ( + typeof w.config.series[i].data[j] !== 'undefined' && + w.config.series[i].data[j].fillColor + ) { + color = w.config.series[i].data[j].fillColor + } + let pathFill = fill.fillPath({ + color, + seriesNumber: i, + dataPointIndex: j + }) + + elRect.node.classList.add('apexcharts-treemap-rect') + + elRect.attr({ + fill: pathFill + }) + + this.helpers.addListeners(elRect) + + let fromRect = { + x: x1 + (x2 - x1) / 2, + y: y1 + (y2 - y1) / 2, + width: 0, + height: 0 + } + let toRect = { + x: x1, + y: y1, + width: x2 - x1, + height: y2 - y1 + } + + if (w.config.chart.animations.enabled && !w.globals.dataChanged) { + let speed = 1 + if (!w.globals.resized) { + speed = w.config.chart.animations.speed + } + this.animateTreemap(elRect, fromRect, toRect, speed) + } + if (w.globals.dataChanged) { + let speed = 1 + if (this.dynamicAnim.enabled && w.globals.shouldAnimate) { + speed = this.dynamicAnim.speed + + if ( + w.globals.previousPaths[i] && + w.globals.previousPaths[i][j] && + w.globals.previousPaths[i][j].rect + ) { + fromRect = w.globals.previousPaths[i][j].rect + } + + this.animateTreemap(elRect, fromRect, toRect, speed) + } + } + + const fontSize = this.getFontSize(r) + + let formattedText = w.config.dataLabels.formatter(this.labels[i][j], { + value: w.globals.series[i][j], + seriesIndex: i, + dataPointIndex: j, + w + }) + let dataLabels = this.helpers.calculateDataLabels({ + text: formattedText, + x: (x1 + x2) / 2, + y: (y1 + y2) / 2 + this.strokeWidth / 2 + fontSize / 3, + i, + j, + colorProps, + fontSize, + series + }) + if (w.config.dataLabels.enabled && dataLabels) { + this.rotateToFitLabel(dataLabels, formattedText, x1, y1, x2, y2) + } + elSeries.add(elRect) + + if (dataLabels !== null) { + elSeries.add(dataLabels) + } + }) + elSeries.add(elDataLabelWrap) + + ret.add(elSeries) + }) + + return ret + } + + // This calculates a font-size based upon + // average label length and the size of the box the label is + // going into. The maximum font size is set in chart config. + getFontSize(coordinates) { + const w = this.w + + // total length of labels (i.e [["Italy"],["Spain", "Greece"]] -> 16) + function totalLabelLength(arr) { + let i, + total = 0 + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += totalLabelLength(arr[i]) + } + } else { + for (i = 0; i < arr.length; i++) { + total += arr[i].length + } + } + return total + } + + // count of labels (i.e [["Italy"],["Spain", "Greece"]] -> 3) + function countLabels(arr) { + let i, + total = 0 + if (Array.isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += countLabels(arr[i]) + } + } else { + for (i = 0; i < arr.length; i++) { + total += 1 + } + } + return total + } + let averagelabelsize = + totalLabelLength(this.labels) / countLabels(this.labels) + + function fontSize(width, height) { + // the font size should be proportional to the size of the box (and the value) + // otherwise you can end up creating a visual distortion where two boxes of identical + // size have different sized labels, and thus make it look as if the two boxes + // represent different sizes + let area = width * height + let arearoot = Math.pow(area, 0.5) + return Math.min( + arearoot / averagelabelsize, + parseInt(w.config.dataLabels.style.fontSize, 10) + ) + } + + return fontSize( + coordinates[2] - coordinates[0], + coordinates[3] - coordinates[1] + ) + } + + rotateToFitLabel(elText, text, x1, y1, x2, y2) { + const graphics = new Graphics(this.ctx) + const textRect = graphics.getTextRects(text) + //if the label fits better sideways then rotate it + if (textRect.width + 5 > x2 - x1 && textRect.width <= y2 - y1) { + let labelRotatingCenter = graphics.rotateAroundCenter(elText.node) + + elText.node.setAttribute( + 'transform', + `rotate(-90 ${labelRotatingCenter.x} ${labelRotatingCenter.y})` + ) + } + } + + animateTreemap(el, fromRect, toRect, speed) { + const animations = new Animations(this.ctx) + animations.animateRect( + el, + { + x: fromRect.x, + y: fromRect.y, + width: fromRect.width, + height: fromRect.height + }, + { + x: toRect.x, + y: toRect.y, + width: toRect.width, + height: toRect.height + }, + speed, + () => { + animations.animationCompleted(el) + } + ) + } +} diff --git a/public/assets/libs/apexcharts/src/charts/common/bar/DataLabels.js b/public/assets/libs/apexcharts/src/charts/common/bar/DataLabels.js new file mode 100644 index 0000000..833245c --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/common/bar/DataLabels.js @@ -0,0 +1,442 @@ +import Graphics from '../../../modules/Graphics' +import DataLabels from '../../../modules/DataLabels' + +export default class BarDataLabels { + constructor(barCtx) { + this.w = barCtx.w + this.barCtx = barCtx + } + /** handleBarDataLabels is used to calculate the positions for the data-labels + * It also sets the element's data attr for bars and calls drawCalculatedBarDataLabels() + * After calculating, it also calls the function to draw data labels + * @memberof Bar + * @param {object} {barProps} most of the bar properties used throughout the bar + * drawing function + * @return {object} dataLabels node-element which you can append later + **/ + handleBarDataLabels(opts) { + let { + x, + y, + y1, + y2, + i, + j, + realIndex, + series, + barHeight, + barWidth, + barYPosition, + visibleSeries, + renderedPath + } = opts + let w = this.w + let graphics = new Graphics(this.barCtx.ctx) + + let strokeWidth = Array.isArray(this.barCtx.strokeWidth) + ? this.barCtx.strokeWidth[realIndex] + : this.barCtx.strokeWidth + + let bcx = x + parseFloat(barWidth * visibleSeries) + let bcy = y + parseFloat(barHeight * visibleSeries) + + if (w.globals.isXNumeric && !w.globals.isBarHorizontal) { + bcx = x + parseFloat(barWidth * (visibleSeries + 1)) + bcy = y + parseFloat(barHeight * (visibleSeries + 1)) - strokeWidth + } + + let dataLabels = null + let dataLabelsX = x + let dataLabelsY = y + let dataLabelsPos = {} + let dataLabelsConfig = w.config.dataLabels + let barDataLabelsConfig = this.barCtx.barOptions.dataLabels + + if (typeof barYPosition !== 'undefined' && this.barCtx.isRangeBar) { + bcy = barYPosition + dataLabelsY = barYPosition + } + + const offX = dataLabelsConfig.offsetX + const offY = dataLabelsConfig.offsetY + + let textRects = { + width: 0, + height: 0 + } + if (w.config.dataLabels.enabled) { + const yLabel = this.barCtx.series[i][j] + + textRects = graphics.getTextRects( + w.globals.yLabelFormatters[0](yLabel), + parseFloat(dataLabelsConfig.style.fontSize) + ) + } + + const params = { + x, + y, + i, + j, + renderedPath, + bcx, + bcy, + barHeight, + barWidth, + textRects, + strokeWidth, + dataLabelsX, + dataLabelsY, + barDataLabelsConfig, + offX, + offY + } + + if (this.barCtx.isHorizontal) { + dataLabelsPos = this.calculateBarsDataLabelsPosition(params) + } else { + dataLabelsPos = this.calculateColumnsDataLabelsPosition(params) + } + + renderedPath.attr({ + cy: dataLabelsPos.bcy, + cx: dataLabelsPos.bcx, + j, + val: series[i][j], + barHeight, + barWidth + }) + + dataLabels = this.drawCalculatedDataLabels({ + x: dataLabelsPos.dataLabelsX, + y: dataLabelsPos.dataLabelsY, + val: this.barCtx.isRangeBar ? [y1, y2] : series[i][j], + i: realIndex, + j, + barWidth, + barHeight, + textRects, + dataLabelsConfig + }) + + return dataLabels + } + + calculateColumnsDataLabelsPosition(opts) { + const w = this.w + let { + i, + j, + y, + bcx, + barWidth, + barHeight, + textRects, + dataLabelsY, + barDataLabelsConfig, + strokeWidth, + offX, + offY + } = opts + + let dataLabelsX + barHeight = Math.abs(barHeight) + + let vertical = + w.config.plotOptions.bar.dataLabels.orientation === 'vertical' + + bcx = bcx - strokeWidth / 2 + + let dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints + if (w.globals.isXNumeric) { + dataLabelsX = bcx - barWidth / 2 + offX + } else { + dataLabelsX = bcx - dataPointsDividedWidth + barWidth / 2 + offX + } + + if (vertical) { + const offsetDLX = 2 + dataLabelsX = + dataLabelsX + textRects.height / 2 - strokeWidth / 2 - offsetDLX + } + + let valIsNegative = this.barCtx.series[i][j] < 0 + + let newY = y + if (this.barCtx.isReversed) { + newY = y - barHeight + (valIsNegative ? barHeight * 2 : 0) + y = y - barHeight + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight / 2 + offY + } else { + dataLabelsY = newY + barHeight / 2 - offY + } + } else { + if (valIsNegative) { + dataLabelsY = newY - barHeight / 2 + textRects.height / 2 + offY + } else { + dataLabelsY = newY + barHeight / 2 + textRects.height / 2 - offY + } + } + break + case 'bottom': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + barHeight + offY + } else { + dataLabelsY = newY + barHeight - offY + } + } else { + if (valIsNegative) { + dataLabelsY = + newY - barHeight + textRects.height + strokeWidth + offY + } else { + dataLabelsY = + newY + barHeight - textRects.height / 2 + strokeWidth - offY + } + } + break + case 'top': + if (vertical) { + if (valIsNegative) { + dataLabelsY = newY + offY + } else { + dataLabelsY = newY - offY + } + } else { + if (valIsNegative) { + dataLabelsY = newY - textRects.height / 2 - offY + } else { + dataLabelsY = newY + textRects.height + offY + } + } + break + } + + if (!w.config.chart.stacked) { + if (dataLabelsY < 0) { + dataLabelsY = 0 + strokeWidth + } else if (dataLabelsY + textRects.height / 3 > w.globals.gridHeight) { + dataLabelsY = w.globals.gridHeight - strokeWidth + } + } + + return { + bcx, + bcy: y, + dataLabelsX, + dataLabelsY + } + } + + calculateBarsDataLabelsPosition(opts) { + const w = this.w + let { + x, + i, + j, + bcy, + barHeight, + barWidth, + textRects, + dataLabelsX, + strokeWidth, + barDataLabelsConfig, + offX, + offY + } = opts + + let dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints + + barWidth = Math.abs(barWidth) + + let dataLabelsY = + bcy - + (this.barCtx.isRangeBar ? 0 : dataPointsDividedHeight) + + barHeight / 2 + + textRects.height / 2 + + offY - + 3 + + let valIsNegative = this.barCtx.series[i][j] < 0 + + let newX = x + if (this.barCtx.isReversed) { + newX = x + barWidth - (valIsNegative ? barWidth * 2 : 0) + x = w.globals.gridWidth - barWidth + } + + switch (barDataLabelsConfig.position) { + case 'center': + if (valIsNegative) { + dataLabelsX = newX + barWidth / 2 - offX + } else { + dataLabelsX = + Math.max(textRects.width / 2, newX - barWidth / 2) + offX + } + break + case 'bottom': + if (valIsNegative) { + dataLabelsX = + newX + + barWidth - + strokeWidth - + Math.round(textRects.width / 2) - + offX + } else { + dataLabelsX = + newX - + barWidth + + strokeWidth + + Math.round(textRects.width / 2) + + offX + } + break + case 'top': + if (valIsNegative) { + dataLabelsX = + newX - strokeWidth + Math.round(textRects.width / 2) - offX + } else { + dataLabelsX = + newX - strokeWidth - Math.round(textRects.width / 2) + offX + } + break + } + + if (!w.config.chart.stacked) { + if (dataLabelsX < 0) { + dataLabelsX = dataLabelsX + textRects.width + strokeWidth + } else if (dataLabelsX + textRects.width / 2 > w.globals.gridWidth) { + dataLabelsX = w.globals.gridWidth - textRects.width - strokeWidth + } + } + + return { + bcx: x, + bcy, + dataLabelsX, + dataLabelsY + } + } + + drawCalculatedDataLabels({ + x, + y, + val, + i, + j, + textRects, + barHeight, + barWidth, + dataLabelsConfig + }) { + const w = this.w + let rotate = 'rotate(0)' + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') + rotate = `rotate(-90, ${x}, ${y})` + + const dataLabels = new DataLabels(this.barCtx.ctx) + const graphics = new Graphics(this.barCtx.ctx) + const formatter = dataLabelsConfig.formatter + + let elDataLabelsWrap = null + + const isSeriesNotCollapsed = + w.globals.collapsedSeriesIndices.indexOf(i) > -1 + + if (dataLabelsConfig.enabled && !isSeriesNotCollapsed) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels', + transform: rotate + }) + + let text = '' + if (typeof val !== 'undefined') { + text = formatter(val, { + seriesIndex: i, + dataPointIndex: j, + w + }) + } + + let valIsNegative = w.globals.series[i][j] < 0 + let position = w.config.plotOptions.bar.dataLabels.position + if (w.config.plotOptions.bar.dataLabels.orientation === 'vertical') { + if (position === 'top') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end' + else dataLabelsConfig.textAnchor = 'start' + } + if (position === 'center') { + dataLabelsConfig.textAnchor = 'middle' + } + if (position === 'bottom') { + if (valIsNegative) dataLabelsConfig.textAnchor = 'end' + else dataLabelsConfig.textAnchor = 'start' + } + } + + if ( + this.barCtx.isRangeBar && + this.barCtx.barOptions.dataLabels.hideOverflowingLabels + ) { + // hide the datalabel if it cannot fit into the rect + const txRect = graphics.getTextRects( + text, + parseFloat(dataLabelsConfig.style.fontSize) + ) + if (barWidth < txRect.width) { + text = '' + } + } + + if ( + w.config.chart.stacked && + this.barCtx.barOptions.dataLabels.hideOverflowingLabels + ) { + // if there is not enough space to draw the label in the bar/column rect, check hideOverflowingLabels property to prevent overflowing on wrong rect + // Note: This issue is only seen in stacked charts + if (this.barCtx.isHorizontal) { + if (textRects.width / 1.6 > Math.abs(barWidth)) { + text = '' + } + } else { + if (textRects.height / 1.6 > Math.abs(barHeight)) { + text = '' + } + } + } + + let modifiedDataLabelsConfig = { + ...dataLabelsConfig + } + if (this.barCtx.isHorizontal) { + if (val < 0) { + if (dataLabelsConfig.textAnchor === 'start') { + modifiedDataLabelsConfig.textAnchor = 'end' + } else if (dataLabelsConfig.textAnchor === 'end') { + modifiedDataLabelsConfig.textAnchor = 'start' + } + } + } + + dataLabels.plotDataLabelsText({ + x, + y, + text, + i, + j, + parent: elDataLabelsWrap, + dataLabelsConfig: modifiedDataLabelsConfig, + alwaysDrawDataLabel: true, + offsetCorrection: true + }) + } + + return elDataLabelsWrap + } +} diff --git a/public/assets/libs/apexcharts/src/charts/common/bar/Helpers.js b/public/assets/libs/apexcharts/src/charts/common/bar/Helpers.js new file mode 100644 index 0000000..7ab8010 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/common/bar/Helpers.js @@ -0,0 +1,638 @@ +import Fill from '../../../modules/Fill' +import Graphics from '../../../modules/Graphics' +import Series from '../../../modules/Series' + +export default class Helpers { + constructor(barCtx) { + this.w = barCtx.w + this.barCtx = barCtx + } + + initVariables(series) { + const w = this.w + this.barCtx.series = series + this.barCtx.totalItems = 0 + this.barCtx.seriesLen = 0 + this.barCtx.visibleI = -1 // visible Series + this.barCtx.visibleItems = 1 // number of visible bars after user zoomed in/out + + for (let sl = 0; sl < series.length; sl++) { + if (series[sl].length > 0) { + this.barCtx.seriesLen = this.barCtx.seriesLen + 1 + this.barCtx.totalItems += series[sl].length + } + if (w.globals.isXNumeric) { + // get max visible items + for (let j = 0; j < series[sl].length; j++) { + if ( + w.globals.seriesX[sl][j] > w.globals.minX && + w.globals.seriesX[sl][j] < w.globals.maxX + ) { + this.barCtx.visibleItems++ + } + } + } else { + this.barCtx.visibleItems = w.globals.dataPoints + } + } + + if (this.barCtx.seriesLen === 0) { + // A small adjustment when combo charts are used + this.barCtx.seriesLen = 1 + } + this.barCtx.zeroSerieses = [] + this.barCtx.radiusOnSeriesNumber = series.length - 1 // which series to draw ending shape on + + if (!w.globals.comboCharts) { + this.checkZeroSeries({ series }) + } + } + + initialPositions() { + let w = this.w + let x, y, yDivision, xDivision, barHeight, barWidth, zeroH, zeroW + + let dataPoints = w.globals.dataPoints + if (this.barCtx.isRangeBar) { + // timeline rangebar chart + dataPoints = w.globals.labels.length + } + + let seriesLen = this.barCtx.seriesLen + if (w.config.plotOptions.bar.rangeBarGroupRows) { + seriesLen = 1 + } + + if (this.barCtx.isHorizontal) { + // height divided into equal parts + yDivision = w.globals.gridHeight / dataPoints + barHeight = yDivision / seriesLen + + if (w.globals.isXNumeric) { + yDivision = w.globals.gridHeight / this.barCtx.totalItems + barHeight = yDivision / this.barCtx.seriesLen + } + + barHeight = + (barHeight * parseInt(this.barCtx.barOptions.barHeight, 10)) / 100 + + zeroW = + this.barCtx.baseLineInvertedY + + w.globals.padHorizontal + + (this.barCtx.isReversed ? w.globals.gridWidth : 0) - + (this.barCtx.isReversed ? this.barCtx.baseLineInvertedY * 2 : 0) + + y = (yDivision - barHeight * this.barCtx.seriesLen) / 2 + } else { + // width divided into equal parts + xDivision = w.globals.gridWidth / this.barCtx.visibleItems + if (w.config.xaxis.convertedCatToNumeric) { + xDivision = w.globals.gridWidth / w.globals.dataPoints + } + barWidth = + ((xDivision / this.barCtx.seriesLen) * + parseInt(this.barCtx.barOptions.columnWidth, 10)) / + 100 + + if (w.globals.isXNumeric) { + // max barwidth should be equal to minXDiff to avoid overlap + let xRatio = this.barCtx.xRatio + if (w.config.xaxis.convertedCatToNumeric) { + xRatio = this.barCtx.initialXRatio + } + if ( + w.globals.minXDiff && + w.globals.minXDiff !== 0.5 && + w.globals.minXDiff / xRatio > 0 + ) { + xDivision = w.globals.minXDiff / xRatio + } + + barWidth = + ((xDivision / this.barCtx.seriesLen) * + parseInt(this.barCtx.barOptions.columnWidth, 10)) / + 100 + + if (barWidth < 1) { + barWidth = 1 + } + } + + zeroH = + w.globals.gridHeight - + this.barCtx.baseLineY[this.barCtx.yaxisIndex] - + (this.barCtx.isReversed ? w.globals.gridHeight : 0) + + (this.barCtx.isReversed + ? this.barCtx.baseLineY[this.barCtx.yaxisIndex] * 2 + : 0) + + x = + w.globals.padHorizontal + + (xDivision - barWidth * this.barCtx.seriesLen) / 2 + } + + return { + x, + y, + yDivision, + xDivision, + barHeight, + barWidth, + zeroH, + zeroW + } + } + + getPathFillColor(series, i, j, realIndex) { + const w = this.w + let fill = new Fill(this.barCtx.ctx) + + let fillColor = null + let seriesNumber = this.barCtx.barOptions.distributed ? j : i + + if (this.barCtx.barOptions.colors.ranges.length > 0) { + const colorRange = this.barCtx.barOptions.colors.ranges + colorRange.map((range) => { + if (series[i][j] >= range.from && series[i][j] <= range.to) { + fillColor = range.color + } + }) + } + + if (w.config.series[i].data[j] && w.config.series[i].data[j].fillColor) { + fillColor = w.config.series[i].data[j].fillColor + } + + let pathFill = fill.fillPath({ + seriesNumber: this.barCtx.barOptions.distributed + ? seriesNumber + : realIndex, + dataPointIndex: j, + color: fillColor, + value: series[i][j] + }) + + return pathFill + } + + getStrokeWidth(i, j, realIndex) { + let strokeWidth = 0 + const w = this.w + + if ( + typeof this.barCtx.series[i][j] === 'undefined' || + this.barCtx.series[i][j] === null + ) { + this.barCtx.isNullValue = true + } else { + this.barCtx.isNullValue = false + } + if (w.config.stroke.show) { + if (!this.barCtx.isNullValue) { + strokeWidth = Array.isArray(this.barCtx.strokeWidth) + ? this.barCtx.strokeWidth[realIndex] + : this.barCtx.strokeWidth + } + } + return strokeWidth + } + + barBackground({ j, i, x1, x2, y1, y2, elSeries }) { + const w = this.w + const graphics = new Graphics(this.barCtx.ctx) + + const sr = new Series(this.barCtx.ctx) + let activeSeriesIndex = sr.getActiveConfigSeriesIndex() + + if ( + this.barCtx.barOptions.colors.backgroundBarColors.length > 0 && + activeSeriesIndex === i + ) { + if (j >= this.barCtx.barOptions.colors.backgroundBarColors.length) { + j %= this.barCtx.barOptions.colors.backgroundBarColors.length + } + + let bcolor = this.barCtx.barOptions.colors.backgroundBarColors[j] + let rect = graphics.drawRect( + typeof x1 !== 'undefined' ? x1 : 0, + typeof y1 !== 'undefined' ? y1 : 0, + typeof x2 !== 'undefined' ? x2 : w.globals.gridWidth, + typeof y2 !== 'undefined' ? y2 : w.globals.gridHeight, + this.barCtx.barOptions.colors.backgroundBarRadius, + bcolor, + this.barCtx.barOptions.colors.backgroundBarOpacity + ) + elSeries.add(rect) + rect.node.classList.add('apexcharts-backgroundBar') + } + } + + getColumnPaths({ + barWidth, + barXPosition, + yRatio, + y1, + y2, + strokeWidth, + series, + realIndex, + i, + j, + w + }) { + const graphics = new Graphics(this.barCtx.ctx) + strokeWidth = Array.isArray(strokeWidth) + ? strokeWidth[realIndex] + : strokeWidth + if (!strokeWidth) strokeWidth = 0 + + let shapeOpts = { + barWidth, + strokeWidth, + yRatio, + barXPosition, + y1, + y2 + } + let newPath = this.getRoundedBars(w, shapeOpts, series, i, j) + + const x1 = barXPosition + const x2 = barXPosition + barWidth + + let pathTo = graphics.move(x1, y1) + let pathFrom = graphics.move(x1, y1) + + const sl = graphics.line(x2 - strokeWidth, y1) + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false) + } + + pathTo = + pathTo + + graphics.line(x1, newPath.y2) + + newPath.pathWithRadius + + graphics.line(x2 - strokeWidth, newPath.y2) + + sl + + sl + + 'z' + + // the lines in pathFrom are repeated to equal it to the points of pathTo + // this is to avoid weird animation (bug in svg.js) + pathFrom = + pathFrom + + graphics.line(x1, y1) + + sl + + sl + + sl + + sl + + sl + + graphics.line(x1, y1) + + if (w.config.chart.stacked) { + this.barCtx.yArrj.push(newPath.y2) + this.barCtx.yArrjF.push(Math.abs(y1 - newPath.y2)) + this.barCtx.yArrjVal.push(this.barCtx.series[i][j]) + } + + return { + pathTo, + pathFrom + } + } + + getBarpaths({ + barYPosition, + barHeight, + x1, + x2, + strokeWidth, + series, + realIndex, + i, + j, + w + }) { + const graphics = new Graphics(this.barCtx.ctx) + strokeWidth = Array.isArray(strokeWidth) + ? strokeWidth[realIndex] + : strokeWidth + if (!strokeWidth) strokeWidth = 0 + + let shapeOpts = { + barHeight, + strokeWidth, + barYPosition, + x2, + x1 + } + + let newPath = this.getRoundedBars(w, shapeOpts, series, i, j) + + let pathTo = graphics.move(x1, barYPosition) + let pathFrom = graphics.move(x1, barYPosition) + + if (w.globals.previousPaths.length > 0) { + pathFrom = this.barCtx.getPreviousPath(realIndex, j, false) + } + + const y1 = barYPosition + const y2 = barYPosition + barHeight + + const sl = graphics.line(x1, y2 - strokeWidth) + pathTo = + pathTo + + graphics.line(newPath.x2, y1) + + newPath.pathWithRadius + + graphics.line(newPath.x2, y2 - strokeWidth) + + sl + + sl + + 'z' + + pathFrom = + pathFrom + + graphics.line(x1, y1) + + sl + + sl + + sl + + sl + + sl + + graphics.line(x1, y1) + + if (w.config.chart.stacked) { + this.barCtx.xArrj.push(newPath.x2) + this.barCtx.xArrjF.push(Math.abs(x1 - newPath.x2)) + this.barCtx.xArrjVal.push(this.barCtx.series[i][j]) + } + return { + pathTo, + pathFrom + } + } + + /** getRoundedBars draws border radius for bars/columns + * @memberof Bar + * @param {object} w - chart context + * @param {object} opts - consists several properties like barHeight/barWidth + * @param {array} series - global primary series + * @param {int} i - current iterating series's index + * @param {int} j - series's j of i + * @return {object} pathWithRadius - ending shape path string + * newY/newX - which is calculated from existing x/y based on rounded border + **/ + getRoundedBars(w, opts, series, i, j) { + let graphics = new Graphics(this.barCtx.ctx) + let radius = 0 + + const borderRadius = w.config.plotOptions.bar.borderRadius + const borderRadiusIsArray = Array.isArray(borderRadius) + if (borderRadiusIsArray) { + const radiusIndex = + i > borderRadius.length - 1 ? borderRadius.length - 1 : i + radius = borderRadius[radiusIndex] + } else { + radius = borderRadius + } + + if ( + w.config.chart.stacked && + series.length > 1 && + i !== this.barCtx.radiusOnSeriesNumber && + !borderRadiusIsArray + ) { + radius = 0 + } + + if (this.barCtx.isHorizontal) { + let pathWithRadius = '' + let x2 = opts.x2 + + if (Math.abs(opts.x1 - opts.x2) < radius) { + radius = Math.abs(opts.x1 - opts.x2) + } + + if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) { + let inverse = this.barCtx.isReversed + ? series[i][j] > 0 + : series[i][j] < 0 + + if (inverse) radius = radius * -1 + + x2 = x2 - radius + + pathWithRadius = + graphics.quadraticCurve( + x2 + radius, + opts.barYPosition, + x2 + radius, + opts.barYPosition + (!inverse ? radius : radius * -1) + ) + + graphics.line( + x2 + radius, + opts.barYPosition + + opts.barHeight - + opts.strokeWidth - + (!inverse ? radius : radius * -1) + ) + + graphics.quadraticCurve( + x2 + radius, + opts.barYPosition + opts.barHeight - opts.strokeWidth, + x2, + opts.barYPosition + opts.barHeight - opts.strokeWidth + ) + } + + return { + pathWithRadius, + x2 + } + } else { + let pathWithRadius = '' + let y2 = opts.y2 + + if (Math.abs(opts.y1 - opts.y2) < radius) { + radius = Math.abs(opts.y1 - opts.y2) + } + + if (typeof series[i][j] !== 'undefined' || series[i][j] !== null) { + let inverse = series[i][j] < 0 + + if (inverse) radius = radius * -1 + + y2 = y2 + radius + + pathWithRadius = + graphics.quadraticCurve( + opts.barXPosition, + y2 - radius, + opts.barXPosition + (!inverse ? radius : radius * -1), + y2 - radius + ) + + graphics.line( + opts.barXPosition + + opts.barWidth - + opts.strokeWidth - + (!inverse ? radius : radius * -1), + y2 - radius + ) + + graphics.quadraticCurve( + opts.barXPosition + opts.barWidth - opts.strokeWidth, + y2 - radius, + opts.barXPosition + opts.barWidth - opts.strokeWidth, + y2 + ) + } + + return { + pathWithRadius, + y2 + } + } + } + + checkZeroSeries({ series }) { + let w = this.w + for (let zs = 0; zs < series.length; zs++) { + let total = 0 + for ( + let zsj = 0; + zsj < series[w.globals.maxValsInArrayIndex].length; + zsj++ + ) { + total += series[zs][zsj] + } + if (total === 0) { + this.barCtx.zeroSerieses.push(zs) + } + } + + // After getting all zeroserieses, we need to ensure whether radiusOnSeriesNumber is not in that zeroseries array + for (let s = series.length - 1; s >= 0; s--) { + if ( + this.barCtx.zeroSerieses.indexOf(s) > -1 && + s === this.radiusOnSeriesNumber + ) { + this.barCtx.radiusOnSeriesNumber -= 1 + } + } + + for (let s = series.length - 1; s >= 0; s--) { + if ( + w.globals.collapsedSeriesIndices.indexOf( + this.barCtx.radiusOnSeriesNumber + ) > -1 + ) { + this.barCtx.radiusOnSeriesNumber -= 1 + } + } + } + + getXForValue(value, zeroW, zeroPositionForNull = true) { + let xForVal = zeroPositionForNull ? zeroW : null + if (typeof value !== 'undefined' && value !== null) { + xForVal = + zeroW + + value / this.barCtx.invertedYRatio - + (this.barCtx.isReversed ? value / this.barCtx.invertedYRatio : 0) * 2 + } + return xForVal + } + + getYForValue(value, zeroH, zeroPositionForNull = true) { + let yForVal = zeroPositionForNull ? zeroH : null + if (typeof value !== 'undefined' && value !== null) { + yForVal = + zeroH - + value / this.barCtx.yRatio[this.barCtx.yaxisIndex] + + (this.barCtx.isReversed + ? value / this.barCtx.yRatio[this.barCtx.yaxisIndex] + : 0) * + 2 + } + return yForVal + } + + getGoalValues(type, zeroW, zeroH, i, j) { + const w = this.w + + let goals = [] + if ( + w.globals.seriesGoals[i] && + w.globals.seriesGoals[i][j] && + Array.isArray(w.globals.seriesGoals[i][j]) + ) { + w.globals.seriesGoals[i][j].forEach((goal) => { + goals.push({ + [type]: + type === 'x' + ? this.getXForValue(goal.value, zeroW, false) + : this.getYForValue(goal.value, zeroH, false), + attrs: goal + }) + }) + } + return goals + } + + drawGoalLine({ + barXPosition, + barYPosition, + goalX, + goalY, + barWidth, + barHeight + }) { + let graphics = new Graphics(this.barCtx.ctx) + const lineGroup = graphics.group({ + className: 'apexcharts-bar-goals-groups' + }) + + let line = null + if (this.barCtx.isHorizontal) { + if (Array.isArray(goalX)) { + goalX.forEach((goal) => { + let sHeight = + typeof goal.attrs.strokeHeight !== 'undefined' + ? goal.attrs.strokeHeight + : barHeight / 2 + let y = barYPosition + sHeight + barHeight / 2 + + line = graphics.drawLine( + goal.x, + y - sHeight * 2, + goal.x, + y, + goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, + goal.attrs.strokeDashArray, + goal.attrs.strokeWidth ? goal.attrs.strokeWidth : 2, + goal.attrs.strokeLineCap + ) + lineGroup.add(line) + }) + } + } else { + if (Array.isArray(goalY)) { + goalY.forEach((goal) => { + let sWidth = + typeof goal.attrs.strokeWidth !== 'undefined' + ? goal.attrs.strokeWidth + : barWidth / 2 + let x = barXPosition + sWidth + barWidth / 2 + + line = graphics.drawLine( + x - sWidth * 2, + goal.y, + x, + goal.y, + goal.attrs.strokeColor ? goal.attrs.strokeColor : undefined, + goal.attrs.strokeDashArray, + goal.attrs.strokeHeight ? goal.attrs.strokeHeight : 2, + goal.attrs.strokeLineCap + ) + lineGroup.add(line) + }) + } + } + + return lineGroup + } +} diff --git a/public/assets/libs/apexcharts/src/charts/common/circle/Helpers.js b/public/assets/libs/apexcharts/src/charts/common/circle/Helpers.js new file mode 100644 index 0000000..522a353 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/common/circle/Helpers.js @@ -0,0 +1,30 @@ +import Graphics from '../../../modules/Graphics' + +export default class CircularChartsHelpers { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + drawYAxisTexts(x, y, i, text) { + const w = this.w + + const yaxisConfig = w.config.yaxis[0] + const formatter = w.globals.yLabelFormatters[0] + + const graphics = new Graphics(this.ctx) + const yaxisLabel = graphics.drawText({ + x: x + yaxisConfig.labels.offsetX, + y: y + yaxisConfig.labels.offsetY, + text: formatter(text, i), + textAnchor: 'middle', + fontSize: yaxisConfig.labels.style.fontSize, + fontFamily: yaxisConfig.labels.style.fontFamily, + foreColor: Array.isArray(yaxisConfig.labels.style.colors) + ? yaxisConfig.labels.style.colors[i] + : yaxisConfig.labels.style.colors + }) + + return yaxisLabel + } +} diff --git a/public/assets/libs/apexcharts/src/charts/common/line/Helpers.js b/public/assets/libs/apexcharts/src/charts/common/line/Helpers.js new file mode 100644 index 0000000..4aec0af --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/common/line/Helpers.js @@ -0,0 +1,149 @@ +import CoreUtils from '../../../modules/CoreUtils' +import Utils from '../../../utils/Utils' + +export default class Helpers { + constructor(lineCtx) { + this.w = lineCtx.w + this.lineCtx = lineCtx + } + + sameValueSeriesFix(i, series) { + const w = this.w + + if ( + w.config.chart.type === 'line' && + (w.config.fill.type === 'gradient' || + w.config.fill.type[i] === 'gradient') + ) { + const coreUtils = new CoreUtils(this.lineCtx.ctx, w) + + // a small adjustment to allow gradient line to draw correctly for all same values + /* #fix https://github.com/apexcharts/apexcharts.js/issues/358 */ + if (coreUtils.seriesHaveSameValues(i)) { + let gSeries = series[i].slice() + gSeries[gSeries.length - 1] = gSeries[gSeries.length - 1] + 0.000001 + series[i] = gSeries + } + } + return series + } + + calculatePoints({ series, realIndex, x, y, i, j, prevY }) { + let w = this.w + + let ptX = [] + let ptY = [] + + if (j === 0) { + let xPT1st = + this.lineCtx.categoryAxisCorrection + w.config.markers.offsetX + // the first point for line series + // we need to check whether it's not a time series, because a time series may + // start from the middle of the x axis + if (w.globals.isXNumeric) { + xPT1st = + (w.globals.seriesX[realIndex][0] - w.globals.minX) / + this.lineCtx.xRatio + + w.config.markers.offsetX + } + + // push 2 points for the first data values + ptX.push(xPT1st) + ptY.push( + Utils.isNumber(series[i][0]) ? prevY + w.config.markers.offsetY : null + ) + ptX.push(x + w.config.markers.offsetX) + ptY.push( + Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null + ) + } else { + ptX.push(x + w.config.markers.offsetX) + ptY.push( + Utils.isNumber(series[i][j + 1]) ? y + w.config.markers.offsetY : null + ) + } + + let pointsPos = { + x: ptX, + y: ptY + } + + return pointsPos + } + + checkPreviousPaths({ pathFromLine, pathFromArea, realIndex }) { + let w = this.w + + for (let pp = 0; pp < w.globals.previousPaths.length; pp++) { + let gpp = w.globals.previousPaths[pp] + + if ( + (gpp.type === 'line' || gpp.type === 'area') && + gpp.paths.length > 0 && + parseInt(gpp.realIndex, 10) === parseInt(realIndex, 10) + ) { + if (gpp.type === 'line') { + this.lineCtx.appendPathFrom = false + pathFromLine = w.globals.previousPaths[pp].paths[0].d + } else if (gpp.type === 'area') { + this.lineCtx.appendPathFrom = false + pathFromArea = w.globals.previousPaths[pp].paths[0].d + + if (w.config.stroke.show && w.globals.previousPaths[pp].paths[1]) { + pathFromLine = w.globals.previousPaths[pp].paths[1].d + } + } + } + } + + return { + pathFromLine, + pathFromArea + } + } + + determineFirstPrevY({ i, series, prevY, lineYPosition }) { + let w = this.w + if (typeof series[i][0] !== 'undefined') { + if (w.config.chart.stacked) { + if (i > 0) { + // 1st y value of previous series + lineYPosition = this.lineCtx.prevSeriesY[i - 1][0] + } else { + // the first series will not have prevY values + lineYPosition = this.lineCtx.zeroY + } + } else { + lineYPosition = this.lineCtx.zeroY + } + prevY = + lineYPosition - + series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + + (this.lineCtx.isReversed + ? series[i][0] / this.lineCtx.yRatio[this.lineCtx.yaxisIndex] + : 0) * + 2 + } else { + // the first value in the current series is null + if ( + w.config.chart.stacked && + i > 0 && + typeof series[i][0] === 'undefined' + ) { + // check for undefined value (undefined value will occur when we clear the series while user clicks on legend to hide serieses) + for (let s = i - 1; s >= 0; s--) { + // for loop to get to 1st previous value until we get it + if (series[s][0] !== null && typeof series[s][0] !== 'undefined') { + lineYPosition = this.lineCtx.prevSeriesY[s][0] + prevY = lineYPosition + break + } + } + } + } + return { + prevY, + lineYPosition + } + } +} diff --git a/public/assets/libs/apexcharts/src/charts/common/treemap/Helpers.js b/public/assets/libs/apexcharts/src/charts/common/treemap/Helpers.js new file mode 100644 index 0000000..c518cc7 --- /dev/null +++ b/public/assets/libs/apexcharts/src/charts/common/treemap/Helpers.js @@ -0,0 +1,192 @@ +import Utils from '../../../utils/Utils' +import Graphics from '../../../modules/Graphics' +import DataLabels from '../../../modules/DataLabels' + +export default class TreemapHelpers { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + checkColorRange() { + const w = this.w + + let negRange = false + let chartOpts = w.config.plotOptions[w.config.chart.type] + + if (chartOpts.colorScale.ranges.length > 0) { + chartOpts.colorScale.ranges.map((range, index) => { + if (range.from <= 0) { + negRange = true + } + }) + } + return negRange + } + + getShadeColor(chartType, i, j, negRange) { + const w = this.w + + let colorShadePercent = 1 + let shadeIntensity = w.config.plotOptions[chartType].shadeIntensity + + const colorProps = this.determineColor(chartType, i, j) + + if (w.globals.hasNegs || negRange) { + if (w.config.plotOptions[chartType].reverseNegativeShade) { + if (colorProps.percent < 0) { + colorShadePercent = + (colorProps.percent / 100) * (shadeIntensity * 1.25) + } else { + colorShadePercent = + (1 - colorProps.percent / 100) * (shadeIntensity * 1.25) + } + } else { + if (colorProps.percent <= 0) { + colorShadePercent = + 1 - (1 + colorProps.percent / 100) * shadeIntensity + } else { + colorShadePercent = (1 - colorProps.percent / 100) * shadeIntensity + } + } + } else { + colorShadePercent = 1 - colorProps.percent / 100 + if (chartType === 'treemap') { + colorShadePercent = + (1 - colorProps.percent / 100) * (shadeIntensity * 1.25) + } + } + + let color = colorProps.color + let utils = new Utils() + + if (w.config.plotOptions[chartType].enableShades) { + if (this.w.config.theme.mode === 'dark') { + color = Utils.hexToRgba( + utils.shadeColor(colorShadePercent * -1, colorProps.color), + w.config.fill.opacity + ) + } else { + color = Utils.hexToRgba( + utils.shadeColor(colorShadePercent, colorProps.color), + w.config.fill.opacity + ) + } + } + + return { color, colorProps } + } + + determineColor(chartType, i, j) { + const w = this.w + + let val = w.globals.series[i][j] + + let chartOpts = w.config.plotOptions[chartType] + + let seriesNumber = chartOpts.colorScale.inverse ? j : i + + if (chartOpts.distributed && w.config.chart.type === 'treemap') { + seriesNumber = j + } + + let color = w.globals.colors[seriesNumber] + let foreColor = null + let min = Math.min(...w.globals.series[i]) + let max = Math.max(...w.globals.series[i]) + + if (!chartOpts.distributed && chartType === 'heatmap') { + min = w.globals.minY + max = w.globals.maxY + } + + if (typeof chartOpts.colorScale.min !== 'undefined') { + min = + chartOpts.colorScale.min < w.globals.minY + ? chartOpts.colorScale.min + : w.globals.minY + max = + chartOpts.colorScale.max > w.globals.maxY + ? chartOpts.colorScale.max + : w.globals.maxY + } + + let total = Math.abs(max) + Math.abs(min) + + let percent = (100 * val) / (total === 0 ? total - 0.000001 : total) + + if (chartOpts.colorScale.ranges.length > 0) { + const colorRange = chartOpts.colorScale.ranges + colorRange.map((range, index) => { + if (val >= range.from && val <= range.to) { + color = range.color + foreColor = range.foreColor ? range.foreColor : null + min = range.from + max = range.to + let rTotal = Math.abs(max) + Math.abs(min) + percent = (100 * val) / (rTotal === 0 ? rTotal - 0.000001 : rTotal) + } + }) + } + + return { + color, + foreColor, + percent + } + } + + calculateDataLabels({ text, x, y, i, j, colorProps, fontSize }) { + let w = this.w + let dataLabelsConfig = w.config.dataLabels + + const graphics = new Graphics(this.ctx) + + let dataLabels = new DataLabels(this.ctx) + + let elDataLabelsWrap = null + + if (dataLabelsConfig.enabled) { + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }) + + const offX = dataLabelsConfig.offsetX + const offY = dataLabelsConfig.offsetY + + let dataLabelsX = x + offX + let dataLabelsY = + y + parseFloat(dataLabelsConfig.style.fontSize) / 3 + offY + + dataLabels.plotDataLabelsText({ + x: dataLabelsX, + y: dataLabelsY, + text, + i, + j, + color: colorProps.foreColor, + parent: elDataLabelsWrap, + fontSize, + dataLabelsConfig + }) + } + + return elDataLabelsWrap + } + + addListeners(elRect) { + const graphics = new Graphics(this.ctx) + elRect.node.addEventListener( + 'mouseenter', + graphics.pathMouseEnter.bind(this, elRect) + ) + elRect.node.addEventListener( + 'mouseleave', + graphics.pathMouseLeave.bind(this, elRect) + ) + elRect.node.addEventListener( + 'mousedown', + graphics.pathMouseDown.bind(this, elRect) + ) + } +} diff --git a/public/assets/libs/apexcharts/src/libs/Treemap-squared.js b/public/assets/libs/apexcharts/src/libs/Treemap-squared.js new file mode 100644 index 0000000..a9ae841 --- /dev/null +++ b/public/assets/libs/apexcharts/src/libs/Treemap-squared.js @@ -0,0 +1,290 @@ +/* + * treemap-squarify.js - open source implementation of squarified treemaps + * + * Treemap Squared 0.5 - Treemap Charting library + * + * https://github.com/imranghory/treemap-squared/ + * + * Copyright (c) 2012 Imran Ghory (imranghory@gmail.com) + * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. + * + * + * Implementation of the squarify treemap algorithm described in: + * + * Bruls, Mark; Huizing, Kees; van Wijk, Jarke J. (2000), "Squarified treemaps" + * in de Leeuw, W.; van Liere, R., Data Visualization 2000: + * Proc. Joint Eurographics and IEEE TCVG Symp. on Visualization, Springer-Verlag, pp. 33–42. + * + * Paper is available online at: http://www.win.tue.nl/~vanwijk/stm.pdf + * + * The code in this file is completeley decoupled from the drawing code so it should be trivial + * to port it to any other vector drawing library. Given an array of datapoints this library returns + * an array of cartesian coordinates that represent the rectangles that make up the treemap. + * + * The library also supports multidimensional data (nested treemaps) and performs normalization on the data. + * + * See the README file for more details. + */ + +window.TreemapSquared = {} +;(function() { + 'use strict' + window.TreemapSquared.generate = (function() { + function Container(xoffset, yoffset, width, height) { + this.xoffset = xoffset // offset from the the top left hand corner + this.yoffset = yoffset // ditto + this.height = height + this.width = width + + this.shortestEdge = function() { + return Math.min(this.height, this.width) + } + + // getCoordinates - for a row of boxes which we've placed + // return an array of their cartesian coordinates + this.getCoordinates = function(row) { + let coordinates = [] + let subxoffset = this.xoffset, + subyoffset = this.yoffset //our offset within the container + let areawidth = sumArray(row) / this.height + let areaheight = sumArray(row) / this.width + let i + + if (this.width >= this.height) { + for (i = 0; i < row.length; i++) { + coordinates.push([ + subxoffset, + subyoffset, + subxoffset + areawidth, + subyoffset + row[i] / areawidth + ]) + subyoffset = subyoffset + row[i] / areawidth + } + } else { + for (i = 0; i < row.length; i++) { + coordinates.push([ + subxoffset, + subyoffset, + subxoffset + row[i] / areaheight, + subyoffset + areaheight + ]) + subxoffset = subxoffset + row[i] / areaheight + } + } + return coordinates + } + + // cutArea - once we've placed some boxes into an row we then need to identify the remaining area, + // this function takes the area of the boxes we've placed and calculates the location and + // dimensions of the remaining space and returns a container box defined by the remaining area + this.cutArea = function(area) { + let newcontainer + + if (this.width >= this.height) { + let areawidth = area / this.height + let newwidth = this.width - areawidth + newcontainer = new Container( + this.xoffset + areawidth, + this.yoffset, + newwidth, + this.height + ) + } else { + let areaheight = area / this.width + let newheight = this.height - areaheight + newcontainer = new Container( + this.xoffset, + this.yoffset + areaheight, + this.width, + newheight + ) + } + return newcontainer + } + } + + // normalize - the Bruls algorithm assumes we're passing in areas that nicely fit into our + // container box, this method takes our raw data and normalizes the data values into + // area values so that this assumption is valid. + function normalize(data, area) { + let normalizeddata = [] + let sum = sumArray(data) + let multiplier = area / sum + let i + + for (i = 0; i < data.length; i++) { + normalizeddata[i] = data[i] * multiplier + } + return normalizeddata + } + + // treemapMultidimensional - takes multidimensional data (aka [[23,11],[11,32]] - nested array) + // and recursively calls itself using treemapSingledimensional + // to create a patchwork of treemaps and merge them + function treemapMultidimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset + + let mergeddata = [] + let mergedtreemap + let results = [] + let i + + if (isArray(data[0])) { + // if we've got more dimensions of depth + for (i = 0; i < data.length; i++) { + mergeddata[i] = sumMultidimensionalArray(data[i]) + } + mergedtreemap = treemapSingledimensional( + mergeddata, + width, + height, + xoffset, + yoffset + ) + + for (i = 0; i < data.length; i++) { + results.push( + treemapMultidimensional( + data[i], + mergedtreemap[i][2] - mergedtreemap[i][0], + mergedtreemap[i][3] - mergedtreemap[i][1], + mergedtreemap[i][0], + mergedtreemap[i][1] + ) + ) + } + } else { + results = treemapSingledimensional( + data, + width, + height, + xoffset, + yoffset + ) + } + return results + } + + // treemapSingledimensional - simple wrapper around squarify + function treemapSingledimensional(data, width, height, xoffset, yoffset) { + xoffset = typeof xoffset === 'undefined' ? 0 : xoffset + yoffset = typeof yoffset === 'undefined' ? 0 : yoffset + + let rawtreemap = squarify( + normalize(data, width * height), + [], + new Container(xoffset, yoffset, width, height), + [] + ) + return flattenTreemap(rawtreemap) + } + + // flattenTreemap - squarify implementation returns an array of arrays of coordinates + // because we have a new array everytime we switch to building a new row + // this converts it into an array of coordinates. + function flattenTreemap(rawtreemap) { + let flattreemap = [] + let i, j + + for (i = 0; i < rawtreemap.length; i++) { + for (j = 0; j < rawtreemap[i].length; j++) { + flattreemap.push(rawtreemap[i][j]) + } + } + return flattreemap + } + + // squarify - as per the Bruls paper + // plus coordinates stack and containers so we get + // usable data out of it + function squarify(data, currentrow, container, stack) { + let length + let nextdatapoint + let newcontainer + + if (data.length === 0) { + stack.push(container.getCoordinates(currentrow)) + return + } + + length = container.shortestEdge() + nextdatapoint = data[0] + + if (improvesRatio(currentrow, nextdatapoint, length)) { + currentrow.push(nextdatapoint) + squarify(data.slice(1), currentrow, container, stack) + } else { + newcontainer = container.cutArea(sumArray(currentrow), stack) + stack.push(container.getCoordinates(currentrow)) + squarify(data, [], newcontainer, stack) + } + return stack + } + + // improveRatio - implements the worse calculation and comparision as given in Bruls + // (note the error in the original paper; fixed here) + function improvesRatio(currentrow, nextnode, length) { + let newrow + + if (currentrow.length === 0) { + return true + } + + newrow = currentrow.slice() + newrow.push(nextnode) + + let currentratio = calculateRatio(currentrow, length) + let newratio = calculateRatio(newrow, length) + + // the pseudocode in the Bruls paper has the direction of the comparison + // wrong, this is the correct one. + return currentratio >= newratio + } + + // calculateRatio - calculates the maximum width to height ratio of the + // boxes in this row + function calculateRatio(row, length) { + let min = Math.min.apply(Math, row) + let max = Math.max.apply(Math, row) + let sum = sumArray(row) + return Math.max( + (Math.pow(length, 2) * max) / Math.pow(sum, 2), + Math.pow(sum, 2) / (Math.pow(length, 2) * min) + ) + } + + // isArray - checks if arr is an array + function isArray(arr) { + return arr && arr.constructor === Array + } + + // sumArray - sums a single dimensional array + function sumArray(arr) { + let sum = 0 + let i + + for (i = 0; i < arr.length; i++) { + sum += arr[i] + } + return sum + } + + // sumMultidimensionalArray - sums the values in a nested array (aka [[0,1],[[2,3]]]) + function sumMultidimensionalArray(arr) { + let i, + total = 0 + + if (isArray(arr[0])) { + for (i = 0; i < arr.length; i++) { + total += sumMultidimensionalArray(arr[i]) + } + } else { + total = sumArray(arr) + } + return total + } + + return treemapMultidimensional + })() +})() diff --git a/public/assets/libs/apexcharts/src/locales/ar.json b/public/assets/libs/apexcharts/src/locales/ar.json new file mode 100644 index 0000000..f13eab3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ar.json @@ -0,0 +1,63 @@ +{ +"name": "ar", +"options": { +"months": [ +"يناير", +"فبراير", +"مارس", +"أبريل", +"مايو", +"يونيو", +"يوليو", +"أغسطس", +"سبتمبر", +"أكتوبر", +"نوفمبر", +"ديسمبر" +], +"shortMonths": [ +"يناير", +"فبراير", +"مارس", +"أبريل", +"مايو", +"يونيو", +"يوليو", +"أغسطس", +"سبتمبر", +"أكتوبر", +"نوفمبر", +"ديسمبر" +], +"days": [ +"الأحد", +"الإثنين", +"الثلاثاء", +"الأربعاء", +"الخميس", +"الجمعة", +"السبت" +], +"shortDays": [ +"أحد", +"إثنين", +"ثلاثاء", +"أربعاء", +"خميس", +"جمعة", +"سبت" +], +"toolbar": { +"exportToSVG": "تحميل بصيغة SVG", +"exportToPNG": "تحميل بصيغة PNG", +"exportToCSV": "تحميل بصيغة CSV", +"menu": "القائمة", +"selection": "تحديد", +"selectionZoom": "تكبير التحديد", +"zoomIn": "تكبير", +"zoomOut": "تصغير", +"pan": "تحريك", +"reset": "إعادة التعيين" +} +} +} diff --git a/public/assets/libs/apexcharts/src/locales/ca.json b/public/assets/libs/apexcharts/src/locales/ca.json new file mode 100644 index 0000000..cef7d1a --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ca.json @@ -0,0 +1,55 @@ +{ + "name": "ca", + "options": { + "months": [ + "Gener", + "Febrer", + "Març", + "Abril", + "Maig", + "Juny", + "Juliol", + "Agost", + "Setembre", + "Octubre", + "Novembre", + "Desembre" + ], + "shortMonths": [ + "Gen.", + "Febr.", + "Març", + "Abr.", + "Maig", + "Juny", + "Jul.", + "Ag.", + "Set.", + "Oct.", + "Nov.", + "Des." + ], + "days": [ + "Diumenge", + "Dilluns", + "Dimarts", + "Dimecres", + "Dijous", + "Divendres", + "Dissabte" + ], + "shortDays": ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"], + "toolbar": { + "exportToSVG": "Descarregar SVG", + "exportToPNG": "Descarregar PNG", + "exportToCSV": "Descarregar CSV", + "menu": "Menú", + "selection": "Seleccionar", + "selectionZoom": "Seleccionar Zoom", + "zoomIn": "Augmentar", + "zoomOut": "Disminuir", + "pan": "Navegació", + "reset": "Reiniciar Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/cs.json b/public/assets/libs/apexcharts/src/locales/cs.json new file mode 100644 index 0000000..b8d9d40 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/cs.json @@ -0,0 +1,55 @@ +{ + "name": "cs", + "options": { + "months": [ + "Leden", + "Únor", + "Březen", + "Duben", + "Květen", + "Červen", + "Červenec", + "Srpen", + "Září", + "Říjen", + "Listopad", + "Prosinec" + ], + "shortMonths": [ + "Led", + "Úno", + "Bře", + "Dub", + "Kvě", + "Čvn", + "Čvc", + "Srp", + "Zář", + "Říj", + "Lis", + "Pro" + ], + "days": [ + "Neděle", + "Pondělí", + "Úterý", + "Středa", + "Čtvrtek", + "Pátek", + "Sobota" + ], + "shortDays": ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"], + "toolbar": { + "exportToSVG": "Stáhnout SVG", + "exportToPNG": "Stáhnout PNG", + "exportToCSV": "Stáhnout CSV", + "menu": "Menu", + "selection": "Vybrat", + "selectionZoom": "Zoom: Vybrat", + "zoomIn": "Zoom: Přiblížit", + "zoomOut": "Zoom: Oddálit", + "pan": "Přesouvat", + "reset": "Resetovat" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/de.json b/public/assets/libs/apexcharts/src/locales/de.json new file mode 100644 index 0000000..af625e3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/de.json @@ -0,0 +1,55 @@ +{ + "name": "de", + "options": { + "months": [ + "Januar", + "Februar", + "März", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Dezember" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mär", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dez" + ], + "days": [ + "Sonntag", + "Montag", + "Dienstag", + "Mittwoch", + "Donnerstag", + "Freitag", + "Samstag" + ], + "shortDays": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], + "toolbar": { + "exportToSVG": "SVG speichern", + "exportToPNG": "PNG speichern", + "exportToCSV": "CSV speichern", + "menu": "Menü", + "selection": "Auswahl", + "selectionZoom": "Auswahl vergrößern", + "zoomIn": "Vergrößern", + "zoomOut": "Verkleinern", + "pan": "Verschieben", + "reset": "Zoom zurücksetzen" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/el.json b/public/assets/libs/apexcharts/src/locales/el.json new file mode 100644 index 0000000..e547e54 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/el.json @@ -0,0 +1,55 @@ +{ + "name": "el", + "options": { + "months": [ + "Ιανουάριος", + "Φεβρουάριος", + "Μάρτιος", + "Απρίλιος", + "Μάιος", + "Ιούνιος", + "Ιούλιος", + "Αύγουστος", + "Σεπτέμβριος", + "Οκτώβριος", + "Νοέμβριος", + "Δεκέμβριος" + ], + "shortMonths": [ + "Ιαν", + "Φευ", + "Μαρ", + "Απρ", + "Μάι", + "Ιουν", + "Ιουλ", + "Αυγ", + "Σεπ", + "Οκτ", + "Νοε", + "Δεκ" + ], + "days": [ + "Κυριακή", + "Δευτέρα", + "Τρίτη", + "Τετάρτη", + "Πέμπτη", + "Παρασκευή", + "Σάββατο" + ], + "shortDays": ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"], + "toolbar": { + "exportToSVG": "Λήψη SVG", + "exportToPNG": "Λήψη PNG", + "exportToCSV": "Λήψη CSV", + "menu": "Menu", + "selection": "Επιλογή", + "selectionZoom": "Μεγένθυση βάση επιλογής", + "zoomIn": "Μεγένθυνση", + "zoomOut": "Σμίκρυνση", + "pan": "Μετατόπιση", + "reset": "Επαναφορά μεγένθυνσης" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/en.json b/public/assets/libs/apexcharts/src/locales/en.json new file mode 100644 index 0000000..7b12481 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/en.json @@ -0,0 +1,55 @@ +{ + "name": "en", + "options": { + "months": [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec" + ], + "days": [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ], + "shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + "toolbar": { + "exportToSVG": "Download SVG", + "exportToPNG": "Download PNG", + "exportToCSV": "Download CSV", + "menu": "Menu", + "selection": "Selection", + "selectionZoom": "Selection Zoom", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "pan": "Panning", + "reset": "Reset Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/es.json b/public/assets/libs/apexcharts/src/locales/es.json new file mode 100644 index 0000000..8c465f6 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/es.json @@ -0,0 +1,55 @@ +{ + "name": "es", + "options": { + "months": [ + "Enero", + "Febrero", + "Marzo", + "Abril", + "Mayo", + "Junio", + "Julio", + "Agosto", + "Septiembre", + "Octubre", + "Noviembre", + "Diciembre" + ], + "shortMonths": [ + "Ene", + "Feb", + "Mar", + "Abr", + "May", + "Jun", + "Jul", + "Ago", + "Sep", + "Oct", + "Nov", + "Dic" + ], + "days": [ + "Domingo", + "Lunes", + "Martes", + "Miércoles", + "Jueves", + "Viernes", + "Sábado" + ], + "shortDays": ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"], + "toolbar": { + "exportToSVG": "Descargar SVG", + "exportToPNG": "Descargar PNG", + "exportToCSV": "Descargar CSV", + "menu": "Menu", + "selection": "Seleccionar", + "selectionZoom": "Seleccionar Zoom", + "zoomIn": "Aumentar", + "zoomOut": "Disminuir", + "pan": "Navegación", + "reset": "Reiniciar Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/et.json b/public/assets/libs/apexcharts/src/locales/et.json new file mode 100644 index 0000000..5aa5248 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/et.json @@ -0,0 +1,63 @@ +{ + "name": "et", + "options": { + "months": [ + "jaanuar", + "veebruar", + "märts", + "aprill", + "mai", + "juuni", + "juuli", + "august", + "september", + "oktoober", + "november", + "detsember" + ], + "shortMonths": [ + "jaan", + "veebr", + "märts", + "apr", + "mai", + "juuni", + "juuli", + "aug", + "sept", + "okt", + "nov", + "dets" + ], + "days": [ + "pühapäev", + "esmaspäev", + "teisipäev", + "kolmapäev", + "neljapäev", + "reede", + "laupäev" + ], + "shortDays": [ + "P", + "E", + "T", + "K", + "N", + "R", + "L" + ], + "toolbar": { + "exportToSVG": "Lae alla SVG", + "exportToPNG": "Lae alla PNG", + "exportToCSV": "Lae alla CSV", + "menu": "Menüü", + "selection": "Valik", + "selectionZoom": "Valiku suum", + "zoomIn": "Suurenda", + "zoomOut": "Vähenda", + "pan": "Panoraamimine", + "reset": "Lähtesta suum" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/fa.json b/public/assets/libs/apexcharts/src/locales/fa.json new file mode 100644 index 0000000..a4c38f7 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/fa.json @@ -0,0 +1,55 @@ +{ + "name": "fa", + "options": { + "months": [ + "فروردین", + "اردیبهشت", + "خرداد", + "تیر", + "مرداد", + "شهریور", + "مهر", + "آبان", + "آذر", + "دی", + "بهمن", + "اسفند" + ], + "shortMonths": [ + "فرو", + "ارد", + "خرد", + "تیر", + "مرد", + "شهر", + "مهر", + "آبا", + "آذر", + "دی", + "بهمـ", + "اسفـ" + ], + "days": [ + "یکشنبه", + "دوشنبه", + "سه شنبه", + "چهارشنبه", + "پنجشنبه", + "جمعه", + "شنبه" + ], + "shortDays": ["ی", "د", "س", "چ", "پ", "ج", "ش"], + "toolbar": { + "exportToSVG": "دانلود SVG", + "exportToPNG": "دانلود PNG", + "exportToCSV": "دانلود CSV", + "menu": "منو", + "selection": "انتخاب", + "selectionZoom": "بزرگنمایی انتخابی", + "zoomIn": "بزرگنمایی", + "zoomOut": "کوچکنمایی", + "pan": "پیمایش", + "reset": "بازنشانی بزرگنمایی" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/fi.json b/public/assets/libs/apexcharts/src/locales/fi.json new file mode 100644 index 0000000..73df095 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/fi.json @@ -0,0 +1,55 @@ +{ + "name": "fi", + "options": { + "months": [ + "Tammikuu", + "Helmikuu", + "Maaliskuu", + "Huhtikuu", + "Toukokuu", + "Kesäkuu", + "Heinäkuu", + "Elokuu", + "Syyskuu", + "Lokakuu", + "Marraskuu", + "Joulukuu" + ], + "shortMonths": [ + "Tammi", + "Helmi", + "Maalis", + "Huhti", + "Touko", + "Kesä", + "Heinä", + "Elo", + "Syys", + "Loka", + "Marras", + "Joulu" + ], + "days": [ + "Sunnuntai", + "Maanantai", + "Tiistai", + "Keskiviikko", + "Torstai", + "Perjantai", + "Lauantai" + ], + "shortDays": ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"], + "toolbar": { + "exportToSVG": "Lataa SVG", + "exportToPNG": "Lataa PNG", + "exportToCSV": "Lataa CSV", + "menu": "Valikko", + "selection": "Valinta", + "selectionZoom": "Valinnan zoomaus", + "zoomIn": "Lähennä", + "zoomOut": "Loitonna", + "pan": "Panoroi", + "reset": "Nollaa zoomaus" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/fr.json b/public/assets/libs/apexcharts/src/locales/fr.json new file mode 100644 index 0000000..959ce0b --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/fr.json @@ -0,0 +1,55 @@ +{ + "name": "fr", + "options": { + "months": [ + "janvier", + "février", + "mars", + "avril", + "mai", + "juin", + "juillet", + "août", + "septembre", + "octobre", + "novembre", + "décembre" + ], + "shortMonths": [ + "janv.", + "févr.", + "mars", + "avr.", + "mai", + "juin", + "juill.", + "août", + "sept.", + "oct.", + "nov.", + "déc." + ], + "days": [ + "dimanche", + "lundi", + "mardi", + "mercredi", + "jeudi", + "vendredi", + "samedi" + ], + "shortDays": ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], + "toolbar": { + "exportToSVG": "Télécharger au format SVG", + "exportToPNG": "Télécharger au format PNG", + "exportToCSV": "Télécharger au format CSV", + "menu": "Menu", + "selection": "Sélection", + "selectionZoom": "Sélection et zoom", + "zoomIn": "Zoomer", + "zoomOut": "Dézoomer", + "pan": "Navigation", + "reset": "Réinitialiser le zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/he.json b/public/assets/libs/apexcharts/src/locales/he.json new file mode 100644 index 0000000..bafff3e --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/he.json @@ -0,0 +1,55 @@ +{ + "name": "he", + "options": { + "months": [ + "ינואר", + "פברואר", + "מרץ", + "אפריל", + "מאי", + "יוני", + "יולי", + "אוגוסט", + "ספטמבר", + "אוקטובר", + "נובמבר", + "דצמבר" + ], + "shortMonths": [ + "ינו׳", + "פבר׳", + "מרץ", + "אפר׳", + "מאי", + "יוני", + "יולי", + "אוג׳", + "ספט׳", + "אוק׳", + "נוב׳", + "דצמ׳" + ], + "days": [ + "ראשון", + "שני", + "שלישי", + "רביעי", + "חמישי", + "שישי", + "שבת" + ], + "shortDays": ["א׳", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳"], + "toolbar": { + "exportToSVG": "הורד SVG", + "exportToPNG": "הורד PNG", + "exportToCSV": "הורד CSV", + "menu": "תפריט", + "selection": "בחירה", + "selectionZoom": "זום בחירה", + "zoomIn": "הגדלה", + "zoomOut": "הקטנה", + "pan": "הזזה", + "reset": "איפוס תצוגה" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/hi.json b/public/assets/libs/apexcharts/src/locales/hi.json new file mode 100644 index 0000000..2191342 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/hi.json @@ -0,0 +1,55 @@ +{ + "name": "hi", + "options": { + "months": [ + "जनवरी", + "फ़रवरी", + "मार्च", + "अप्रैल", + "मई", + "जून", + "जुलाई", + "अगस्त", + "सितंबर", + "अक्टूबर", + "नवंबर", + "दिसंबर" + ], + "shortMonths": [ + "जनवरी", + "फ़रवरी", + "मार्च", + "अप्रैल", + "मई", + "जून", + "जुलाई", + "अगस्त", + "सितंबर", + "अक्टूबर", + "नवंबर", + "दिसंबर" + ], + "days": [ + "रविवार", + "सोमवार", + "मंगलवार", + "बुधवार", + "गुरुवार", + "शुक्रवार", + "शनिवार" + ], + "shortDays": ["रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि"], + "toolbar": { + "exportToSVG": "निर्यात SVG", + "exportToPNG": "निर्यात PNG", + "exportToCSV": "निर्यात CSV", + "menu": "सूची", + "selection": "चयन", + "selectionZoom": "ज़ूम करना", + "zoomIn": "ज़ूम इन", + "zoomOut": "ज़ूम आउट", + "pan": "पैनिंग", + "reset": "फिर से कायम करना" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/hr.json b/public/assets/libs/apexcharts/src/locales/hr.json new file mode 100644 index 0000000..52ab2fc --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/hr.json @@ -0,0 +1,55 @@ +{ + "name": "hr", + "options": { + "months": [ + "Siječanj", + "Veljača", + "Ožujak", + "Travanj", + "Svibanj", + "Lipanj", + "Srpanj", + "Kolovoz", + "Rujan", + "Listopad", + "Studeni", + "Prosinac" + ], + "shortMonths": [ + "Sij", + "Velj", + "Ožu", + "Tra", + "Svi", + "Lip", + "Srp", + "Kol", + "Ruj", + "Lis", + "Stu", + "Pro" + ], + "days": [ + "Nedjelja", + "Ponedjeljak", + "Utorak", + "Srijeda", + "Četvrtak", + "Petak", + "Subota" + ], + "shortDays": ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"], + "toolbar": { + "exportToSVG": "Preuzmi SVG", + "exportToPNG": "Preuzmi PNG", + "exportToCSV": "Preuzmi CSV", + "menu": "Izbornik", + "selection": "Odabir", + "selectionZoom": "Odabirno povećanje", + "zoomIn": "Uvećajte prikaz", + "zoomOut": "Umanjite prikaz", + "pan": "Pomicanje", + "reset": "Povratak na zadani prikaz" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/hu.json b/public/assets/libs/apexcharts/src/locales/hu.json new file mode 100644 index 0000000..04142a0 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/hu.json @@ -0,0 +1,64 @@ +{ + "name": "hu", + "options": { + "months": [ + "január", + "február", + "március", + "április", + "május", + "június", + "július", + "augusztus", + "szeptember", + "október", + "november", + "december" + ], + "shortMonths": [ + "jan", + "feb", + "mar", + "ápr", + "máj", + "jún", + "júl", + "aug", + "szept", + "okt", + "nov", + "dec" + ], + "days": [ + "hétfő", + "kedd", + "szerda", + "csütörtök", + "péntek", + "szombat", + "vasárnap" + ], + "shortDays": [ + "H", + "K", + "Sze", + "Cs", + "P", + "Szo", + "V" + ], + "toolbar": { + "exportToSVG": "Exportálás SVG-be", + "exportToPNG": "Exportálás PNG-be", + "exportToCSV": "Exportálás CSV-be", + "menu": "Fő ajánlat", + "download": "SVG letöltése", + "selection": "Kiválasztás", + "selectionZoom": "Nagyító kiválasztása", + "zoomIn": "Nagyítás", + "zoomOut": "Kicsinyítés", + "pan": "Képcsúsztatás", + "reset": "Nagyító visszaállítása" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/hy.json b/public/assets/libs/apexcharts/src/locales/hy.json new file mode 100644 index 0000000..cdbe469 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/hy.json @@ -0,0 +1,55 @@ +{ + "name": "hy", + "options": { + "months": [ + "Հունվար", + "Փետրվար", + "Մարտ", + "Ապրիլ", + "Մայիս", + "Հունիս", + "Հուլիս", + "Օգոստոս", + "Սեպտեմբեր", + "Հոկտեմբեր", + "Նոյեմբեր", + "Դեկտեմբեր" + ], + "shortMonths": [ + "Հնվ", + "Փտվ", + "Մրտ", + "Ապր", + "Մյս", + "Հնս", + "Հլիս", + "Օգս", + "Սեպ", + "Հոկ", + "Նոյ", + "Դեկ" + ], + "days": [ + "Կիրակի", + "Երկուշաբթի", + "Երեքշաբթի", + "Չորեքշաբթի", + "Հինգշաբթի", + "Ուրբաթ", + "Շաբաթ" + ], + "shortDays": ["Կիր", "Երկ", "Երք", "Չրք", "Հնգ", "Ուրբ", "Շբթ"], + "toolbar": { + "exportToSVG": "Բեռնել SVG", + "exportToPNG": "Բեռնել PNG", + "exportToCSV": "Բեռնել CSV", + "menu": "Մենյու", + "selection": "Ընտրված", + "selectionZoom": "Ընտրված հատվածի խոշորացում", + "zoomIn": "Խոշորացնել", + "zoomOut": "Մանրացնել", + "pan": "Տեղափոխում", + "reset": "Բերել սկզբնական վիճակի" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/id.json b/public/assets/libs/apexcharts/src/locales/id.json new file mode 100644 index 0000000..52a34b6 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/id.json @@ -0,0 +1,47 @@ +{ + "name": "id", + "options": { + "months": [ + "Januari", + "Februari", + "Maret", + "April", + "Mei", + "Juni", + "Juli", + "Agustus", + "September", + "Oktober", + "November", + "Desember" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mei", + "Jun", + "Jul", + "Agu", + "Sep", + "Okt", + "Nov", + "Des" + ], + "days": ["Minggu", "Senin", "Selasa", "Rabu", "kamis", "Jumat", "Sabtu"], + "shortDays": ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], + "toolbar": { + "exportToSVG": "Unduh SVG", + "exportToPNG": "Unduh PNG", + "exportToCSV": "Unduh CSV", + "menu": "Menu", + "selection": "Pilihan", + "selectionZoom": "Perbesar Pilihan", + "zoomIn": "Perbesar", + "zoomOut": "Perkecil", + "pan": "Geser", + "reset": "Atur Ulang Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/it.json b/public/assets/libs/apexcharts/src/locales/it.json new file mode 100644 index 0000000..7facfea --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/it.json @@ -0,0 +1,55 @@ +{ + "name": "it", + "options": { + "months": [ + "Gennaio", + "Febbraio", + "Marzo", + "Aprile", + "Maggio", + "Giugno", + "Luglio", + "Agosto", + "Settembre", + "Ottobre", + "Novembre", + "Dicembre" + ], + "shortMonths": [ + "Gen", + "Feb", + "Mar", + "Apr", + "Mag", + "Giu", + "Lug", + "Ago", + "Set", + "Ott", + "Nov", + "Dic" + ], + "days": [ + "Domenica", + "Lunedì", + "Martedì", + "Mercoledì", + "Giovedì", + "Venerdì", + "Sabato" + ], + "shortDays": ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"], + "toolbar": { + "exportToSVG": "Scarica SVG", + "exportToPNG": "Scarica PNG", + "exportToCSV": "Scarica CSV", + "menu": "Menu", + "selection": "Selezione", + "selectionZoom": "Seleziona Zoom", + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "pan": "Sposta", + "reset": "Reimposta Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/ja.json b/public/assets/libs/apexcharts/src/locales/ja.json new file mode 100644 index 0000000..2b3af52 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ja.json @@ -0,0 +1,55 @@ +{ + "name": "ja", + "options": { + "months": [ + "1月", + "2月", + "3月", + "4月", + "5月", + "6月", + "7月", + "8月", + "9月", + "10月", + "11月", + "12月" + ], + "shortMonths": [ + "1月", + "2月", + "3月", + "4月", + "5月", + "6月", + "7月", + "8月", + "9月", + "10月", + "11月", + "12月" + ], + "days": [ + "日曜日", + "月曜日", + "火曜日", + "水曜日", + "木曜日", + "金曜日", + "土曜日" + ], + "shortDays": ["日", "月", "火", "水", "木", "金", "土"], + "toolbar": { + "exportToSVG": "SVGダウンロード", + "exportToPNG": "PNGダウンロード", + "exportToCSV": "CSVダウンロード", + "menu": "メニュー", + "selection": "選択", + "selectionZoom": "選択ズーム", + "zoomIn": "拡大", + "zoomOut": "縮小", + "pan": "パン", + "reset": "ズームリセット" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/ka.json b/public/assets/libs/apexcharts/src/locales/ka.json new file mode 100644 index 0000000..b3c8a0f --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ka.json @@ -0,0 +1,55 @@ +{ + "name": "ka", + "options": { + "months": [ + "იანვარი", + "თებერვალი", + "მარტი", + "აპრილი", + "მაისი", + "ივნისი", + "ივლისი", + "აგვისტო", + "სექტემბერი", + "ოქტომბერი", + "ნოემბერი", + "დეკემბერი" + ], + "shortMonths": [ + "იან", + "თებ", + "მარ", + "აპრ", + "მაი", + "ივნ", + "ივლ", + "აგვ", + "სექ", + "ოქტ", + "ნოე", + "დეკ" + ], + "days": [ + "კვირა", + "ორშაბათი", + "სამშაბათი", + "ოთხშაბათი", + "ხუთშაბათი", + "პარასკევი", + "შაბათი" + ], + "shortDays": ["კვი", "ორშ", "სამ", "ოთხ", "ხუთ", "პარ", "შაბ"], + "toolbar": { + "exportToSVG": "გადმოქაჩე SVG", + "exportToPNG": "გადმოქაჩე PNG", + "exportToCSV": "გადმოქაჩე CSV", + "menu": "მენიუ", + "selection": "არჩევა", + "selectionZoom": "არჩეულის გადიდება", + "zoomIn": "გადიდება", + "zoomOut": "დაპატარაება", + "pan": "გადაჩოჩება", + "reset": "გადიდების გაუქმება" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/ko.json b/public/assets/libs/apexcharts/src/locales/ko.json new file mode 100644 index 0000000..181196d --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ko.json @@ -0,0 +1,55 @@ +{ + "name": "ko", + "options": { + "months": [ + "1월", + "2월", + "3월", + "4월", + "5월", + "6월", + "7월", + "8월", + "9월", + "10월", + "11월", + "12월" + ], + "shortMonths": [ + "1월", + "2월", + "3월", + "4월", + "5월", + "6월", + "7월", + "8월", + "9월", + "10월", + "11월", + "12월" + ], + "days": [ + "일요일", + "월요일", + "화요일", + "수요일", + "목요일", + "금요일", + "토요일" + ], + "shortDays": ["일", "월", "화", "수", "목", "금", "토"], + "toolbar": { + "exportToSVG": "SVG 다운로드", + "exportToPNG": "PNG 다운로드", + "exportToCSV": "CSV 다운로드", + "menu": "메뉴", + "selection": "선택", + "selectionZoom": "선택영역 확대", + "zoomIn": "확대", + "zoomOut": "축소", + "pan": "패닝", + "reset": "원래대로" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/lt.json b/public/assets/libs/apexcharts/src/locales/lt.json new file mode 100644 index 0000000..4ed1520 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/lt.json @@ -0,0 +1,55 @@ +{ + "name": "lt", + "options": { + "months": [ + "Sausis", + "Vasaris", + "Kovas", + "Balandis", + "Gegužė", + "Birželis", + "Liepa", + "Rugpjūtis", + "Rugsėjis", + "Spalis", + "Lapkritis", + "Gruodis" + ], + "shortMonths": [ + "Sau", + "Vas", + "Kov", + "Bal", + "Geg", + "Bir", + "Lie", + "Rgp", + "Rgs", + "Spl", + "Lap", + "Grd" + ], + "days": [ + "Sekmadienis", + "Pirmadienis", + "Antradienis", + "Trečiadienis", + "Ketvirtadienis", + "Penktadienis", + "Šeštadienis" + ], + "shortDays": ["Sk", "Per", "An", "Tr", "Kt", "Pn", "Št"], + "toolbar": { + "exportToSVG": "Atsisiųsti SVG", + "exportToPNG": "Atsisiųsti PNG", + "exportToCSV": "Atsisiųsti CSV", + "menu": "Menu", + "selection": "Pasirinkimas", + "selectionZoom": "Zoom: Pasirinkimas", + "zoomIn": "Zoom: Priartinti", + "zoomOut": "Zoom: Atitolinti", + "pan": "Perkėlimas", + "reset": "Atstatyti" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/lv.json b/public/assets/libs/apexcharts/src/locales/lv.json new file mode 100644 index 0000000..8a845dd --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/lv.json @@ -0,0 +1,64 @@ +{ + "name": "lv", + "options": { + "months": [ + "janvāris", + "februāris", + "marts", + "aprīlis", + "maijs", + "jūnijs", + "jūlijs", + "augusts", + "septembris", + "oktobris", + "novembris", + "decembris" + ], + "shortMonths": [ + "janv", + "febr", + "marts", + "apr", + "maijs", + "jūn", + "jūl", + "aug", + "sept", + "okt", + "nov", + "dec" + ], + "days": [ + "svētdiena", + "pirmdiena", + "otrdiena", + "trešdiena", + "ceturtdiena", + "piektdiena", + "sestdiena" + ], + "shortDays": [ + "Sv", + "P", + "O", + "T", + "C", + "P", + "S" + ], + "toolbar": { + "exportToSVG": "Lejuplādēt SVG", + "exportToPNG": "Lejuplādēt PNG", + "exportToCSV": "Lejuplādēt CSV", + "menu": "Izvēlne", + "selection": "Atlase", + "selectionZoom": "Pietuvināt atlasi", + "zoomIn": "Pietuvināt", + "zoomOut": "Attālināt", + "pan": "Pārvietoties diagrammā", + "reset": "Atiestatīt pietuvinājumu" + } + } +} + diff --git a/public/assets/libs/apexcharts/src/locales/nb.json b/public/assets/libs/apexcharts/src/locales/nb.json new file mode 100644 index 0000000..3339d2c --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/nb.json @@ -0,0 +1,55 @@ +{ + "name": "nb", + "options": { + "months": [ + "Januar", + "Februar", + "Mars", + "April", + "Mai", + "Juni", + "Juli", + "August", + "September", + "Oktober", + "November", + "Desember" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Mai", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Des" + ], + "days": [ + "Søndag", + "Mandag", + "Tirsdag", + "Onsdag", + "Torsdag", + "Fredag", + "Lørdag" + ], + "shortDays": ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"], + "toolbar": { + "exportToSVG": "Last ned SVG", + "exportToPNG": "Last ned PNG", + "exportToCSV": "Last ned CSV", + "menu": "Menu", + "selection": "Velg", + "selectionZoom": "Zoom: Velg", + "zoomIn": "Zoome inn", + "zoomOut": "Zoome ut", + "pan": "Skyving", + "reset": "Start på nytt" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/nl.json b/public/assets/libs/apexcharts/src/locales/nl.json new file mode 100644 index 0000000..0c2126a --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/nl.json @@ -0,0 +1,55 @@ +{ + "name": "nl", + "options": { + "months": [ + "Januari", + "Februari", + "Maart", + "April", + "Mei", + "Juni", + "Juli", + "Augustus", + "September", + "Oktober", + "November", + "December" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mrt", + "Apr", + "Mei", + "Jun", + "Jul", + "Aug", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "days": [ + "Zondag", + "Maandag", + "Dinsdag", + "Woensdag", + "Donderdag", + "Vrijdag", + "Zaterdag" + ], + "shortDays": ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"], + "toolbar": { + "exportToSVG": "Download SVG", + "exportToPNG": "Download PNG", + "exportToCSV": "Download CSV", + "menu": "Menu", + "selection": "Selectie", + "selectionZoom": "Zoom selectie", + "zoomIn": "Zoom in", + "zoomOut": "Zoom out", + "pan": "Verplaatsen", + "reset": "Standaardwaarden" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/pl.json b/public/assets/libs/apexcharts/src/locales/pl.json new file mode 100644 index 0000000..3df3c16 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/pl.json @@ -0,0 +1,55 @@ +{ + "name": "pl", + "options": { + "months": [ + "Styczeń", + "Luty", + "Marzec", + "Kwiecień", + "Maj", + "Czerwiec", + "Lipiec", + "Sierpień", + "Wrzesień", + "Październik", + "Listopad", + "Grudzień" + ], + "shortMonths": [ + "Sty", + "Lut", + "Mar", + "Kwi", + "Maj", + "Cze", + "Lip", + "Sie", + "Wrz", + "Paź", + "Lis", + "Gru" + ], + "days": [ + "Niedziela", + "Poniedziałek", + "Wtorek", + "Środa", + "Czwartek", + "Piątek", + "Sobota" + ], + "shortDays": ["Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "Sb"], + "toolbar": { + "exportToSVG": "Pobierz SVG", + "exportToPNG": "Pobierz PNG", + "exportToCSV": "Pobierz CSV", + "menu": "Menu", + "selection": "Wybieranie", + "selectionZoom": "Zoom: Wybieranie", + "zoomIn": "Zoom: Przybliż", + "zoomOut": "Zoom: Oddal", + "pan": "Przesuwanie", + "reset": "Resetuj" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/pt-br.json b/public/assets/libs/apexcharts/src/locales/pt-br.json new file mode 100644 index 0000000..a2932fc --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/pt-br.json @@ -0,0 +1,55 @@ +{ + "name": "pt-br", + "options": { + "months": [ + "Janeiro", + "Fevereiro", + "Março", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro" + ], + "shortMonths": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "Out", + "Nov", + "Dez" + ], + "days": [ + "Domingo", + "Segunda", + "Terça", + "Quarta", + "Quinta", + "Sexta", + "Sábado" + ], + "shortDays": ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"], + "toolbar": { + "exportToSVG": "Baixar SVG", + "exportToPNG": "Baixar PNG", + "exportToCSV": "Baixar CSV", + "menu": "Menu", + "selection": "Selecionar", + "selectionZoom": "Selecionar Zoom", + "zoomIn": "Aumentar", + "zoomOut": "Diminuir", + "pan": "Navegação", + "reset": "Reiniciar Zoom" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/pt.json b/public/assets/libs/apexcharts/src/locales/pt.json new file mode 100644 index 0000000..3f93db3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/pt.json @@ -0,0 +1,55 @@ +{ + "name": "pt", + "options": { + "months": [ + "Janeiro", + "Fevereiro", + "Março", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro" + ], + "shortMonths": [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ag", + "Set", + "Out", + "Nov", + "Dez" + ], + "days": [ + "Domingo", + "Segunda-feira", + "Terça-feira", + "Quarta-feira", + "Quinta-feira", + "Sexta-feira", + "Sábado" + ], + "shortDays": ["Do", "Se", "Te", "Qa", "Qi", "Sx", "Sa"], + "toolbar": { + "exportToSVG": "Baixar SVG", + "exportToPNG": "Baixar PNG", + "exportToCSV": "Baixar CSV", + "menu": "Menu", + "selection": "Selecionar", + "selectionZoom": "Zoom: Selecionar", + "zoomIn": "Zoom: Aumentar", + "zoomOut": "Zoom: Diminuir", + "pan": "Deslocamento", + "reset": "Redefinir" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/rs.json b/public/assets/libs/apexcharts/src/locales/rs.json new file mode 100644 index 0000000..c4fff61 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/rs.json @@ -0,0 +1,55 @@ +{ + "name": "rs", + "options": { + "months": [ + "Januar", + "Februar", + "Mart", + "April", + "Maj", + "Jun", + "Jul", + "Avgust", + "Septembar", + "Oktobar", + "Novembar", + "Decembar" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Maj", + "Jun", + "Jul", + "Avg", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "days": [ + "Nedelja", + "Ponedeljak", + "Utorak", + "Sreda", + "Četvrtak", + "Petak", + "Subota" + ], + "shortDays": ["Ned", "Pon", "Uto", "Sre", "Čet", "Pet", "Sub"], + "toolbar": { + "exportToSVG": "Preuzmi SVG", + "exportToPNG": "Preuzmi PNG", + "exportToCSV": "Preuzmi CSV", + "menu": "Meni", + "selection": "Odabir", + "selectionZoom": "Odabirno povećanje", + "zoomIn": "Uvećajte prikaz", + "zoomOut": "Umanjite prikaz", + "pan": "Pomeranje", + "reset": "Resetuj prikaz" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/ru.json b/public/assets/libs/apexcharts/src/locales/ru.json new file mode 100644 index 0000000..55f3a0c --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ru.json @@ -0,0 +1,55 @@ +{ + "name": "ru", + "options": { + "months": [ + "Январь", + "Февраль", + "Март", + "Апрель", + "Май", + "Июнь", + "Июль", + "Август", + "Сентябрь", + "Октябрь", + "Ноябрь", + "Декабрь" + ], + "shortMonths": [ + "Янв", + "Фев", + "Мар", + "Апр", + "Май", + "Июн", + "Июл", + "Авг", + "Сен", + "Окт", + "Ноя", + "Дек" + ], + "days": [ + "Воскресенье", + "Понедельник", + "Вторник", + "Среда", + "Четверг", + "Пятница", + "Суббота" + ], + "shortDays": ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], + "toolbar": { + "exportToSVG": "Сохранить SVG", + "exportToPNG": "Сохранить PNG", + "exportToCSV": "Сохранить CSV", + "menu": "Меню", + "selection": "Выбор", + "selectionZoom": "Выбор с увеличением", + "zoomIn": "Увеличить", + "zoomOut": "Уменьшить", + "pan": "Перемещение", + "reset": "Сбросить увеличение" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/se.json b/public/assets/libs/apexcharts/src/locales/se.json new file mode 100644 index 0000000..e9409e5 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/se.json @@ -0,0 +1,55 @@ +{ + "name": "se", + "options": { + "months": [ + "Januari", + "Februari", + "Mars", + "April", + "Maj", + "Juni", + "Juli", + "Augusti", + "September", + "Oktober", + "November", + "December" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Maj", + "Juni", + "Juli", + "Aug", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "days": [ + "Söndag", + "Måndag", + "Tisdag", + "Onsdag", + "Torsdag", + "Fredag", + "Lördag" + ], + "shortDays": ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"], + "toolbar": { + "exportToSVG": "Ladda SVG", + "exportToPNG": "Ladda PNG", + "exportToCSV": "Ladda CSV", + "menu": "Meny", + "selection": "Selektion", + "selectionZoom": "Val av zoom", + "zoomIn": "Zooma in", + "zoomOut": "Zooma ut", + "pan": "Panorering", + "reset": "Återställ zoomning" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/sk.json b/public/assets/libs/apexcharts/src/locales/sk.json new file mode 100644 index 0000000..03e69aa --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/sk.json @@ -0,0 +1,55 @@ +{ + "name": "sk", + "options": { + "months": [ + "Január", + "Február", + "Marec", + "Apríl", + "Máj", + "Jún", + "Júl", + "August", + "September", + "Október", + "November", + "December" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Máj", + "Jún", + "Júl", + "Aug", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "days": [ + "Nedeľa", + "Pondelok", + "Utorok", + "Streda", + "Štvrtok", + "Piatok", + "Sobota" + ], + "shortDays": ["Ne", "Po", "Ut", "St", "Št", "Pi", "So"], + "toolbar": { + "exportToSVG": "Stiahnuť SVG", + "exportToPNG": "Stiahnuť PNG", + "exportToCSV": "Stiahnuť CSV", + "menu": "Menu", + "selection": "Vyberanie", + "selectionZoom": "Zoom: Vyberanie", + "zoomIn": "Zoom: Priblížiť", + "zoomOut": "Zoom: Vzdialiť", + "pan": "Presúvanie", + "reset": "Resetovať" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/sl.json b/public/assets/libs/apexcharts/src/locales/sl.json new file mode 100644 index 0000000..793ff56 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/sl.json @@ -0,0 +1,55 @@ +{ + "name": "sl", + "options": { + "months": [ + "Januar", + "Februar", + "Marec", + "April", + "Maj", + "Junij", + "Julij", + "Avgust", + "Septemer", + "Oktober", + "November", + "December" + ], + "shortMonths": [ + "Jan", + "Feb", + "Mar", + "Apr", + "Maj", + "Jun", + "Jul", + "Avg", + "Sep", + "Okt", + "Nov", + "Dec" + ], + "days": [ + "Nedelja", + "Ponedeljek", + "Torek", + "Sreda", + "Četrtek", + "Petek", + "Sobota" + ], + "shortDays": ["Ne", "Po", "To", "Sr", "Če", "Pe", "So"], + "toolbar": { + "exportToSVG": "Prenesi SVG", + "exportToPNG": "Prenesi PNG", + "exportToCSV": "Prenesi CSV", + "menu": "Menu", + "selection": "Izbiranje", + "selectionZoom": "Zoom: Izbira", + "zoomIn": "Zoom: Približaj", + "zoomOut": "Zoom: Oddalji", + "pan": "Pomikanje", + "reset": "Resetiraj" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/sq.json b/public/assets/libs/apexcharts/src/locales/sq.json new file mode 100644 index 0000000..a478591 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/sq.json @@ -0,0 +1,55 @@ +{ + "name": "sq", + "options": { + "months": [ + "Janar", + "Shkurt", + "Mars", + "Prill", + "Maj", + "Qershor", + "Korrik", + "Gusht", + "Shtator", + "Tetor", + "Nëntor", + "Dhjetor" + ], + "shortMonths": [ + "Jan", + "Shk", + "Mar", + "Pr", + "Maj", + "Qer", + "Korr", + "Gush", + "Sht", + "Tet", + "Nën", + "Dhj" + ], + "days": [ + "e Dielë", + "e Hënë", + "e Martë", + "e Mërkurë", + "e Enjte", + "e Premte", + "e Shtunë" + ], + "shortDays": ["Die", "Hën", "Mar", "Mër", "Enj", "Pre", "Sht"], + "toolbar": { + "exportToSVG": "Shkarko SVG", + "exportToPNG": "Shkarko PNG", + "exportToCSV": "Shkarko CSV", + "menu": "Menu", + "selection": "Seleksiono", + "selectionZoom": "Seleksiono Zmadhim", + "zoomIn": "Zmadho", + "zoomOut": "Zvogëlo", + "pan": "Spostoje", + "reset": "Rikthe dimensionin" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/th.json b/public/assets/libs/apexcharts/src/locales/th.json new file mode 100644 index 0000000..2b3b109 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/th.json @@ -0,0 +1,55 @@ +{ + "name": "th", + "options": { + "months": [ + "มกราคม", + "กุมภาพันธ์", + "มีนาคม", + "เมษายน", + "พฤษภาคม", + "มิถุนายน", + "กรกฎาคม", + "สิงหาคม", + "กันยายน", + "ตุลาคม", + "พฤศจิกายน", + "ธันวาคม" + ], + "shortMonths": [ + "ม.ค.", + "ก.พ.", + "มี.ค.", + "เม.ย.", + "พ.ค.", + "มิ.ย.", + "ก.ค.", + "ส.ค.", + "ก.ย.", + "ต.ค.", + "พ.ย.", + "ธ.ค." + ], + "days": [ + "อาทิตย์", + "จันทร์", + "อังคาร", + "พุธ", + "พฤหัสบดี", + "ศุกร์", + "เสาร์" + ], + "shortDays": ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส"], + "toolbar": { + "exportToSVG": "ดาวน์โหลด SVG", + "exportToPNG": "ดาวน์โหลด PNG", + "exportToCSV": "ดาวน์โหลด CSV", + "menu": "เมนู", + "selection": "เลือก", + "selectionZoom": "เลือกจุดที่จะซูม", + "zoomIn": "ซูมเข้า", + "zoomOut": "ซูมออก", + "pan": "ปรากฎว่า", + "reset": "รีเซ็ตการซูม" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/tr.json b/public/assets/libs/apexcharts/src/locales/tr.json new file mode 100644 index 0000000..dda01e8 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/tr.json @@ -0,0 +1,55 @@ +{ + "name": "tr", + "options": { + "months": [ + "Ocak", + "Şubat", + "Mart", + "Nisan", + "Mayıs", + "Haziran", + "Temmuz", + "Ağustos", + "Eylül", + "Ekim", + "Kasım", + "Aralık" + ], + "shortMonths": [ + "Oca", + "Şub", + "Mar", + "Nis", + "May", + "Haz", + "Tem", + "Ağu", + "Eyl", + "Eki", + "Kas", + "Ara" + ], + "days": [ + "Pazar", + "Pazartesi", + "Salı", + "Çarşamba", + "Perşembe", + "Cuma", + "Cumartesi" + ], + "shortDays": ["Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt"], + "toolbar": { + "exportToSVG": "SVG İndir", + "exportToPNG": "PNG İndir", + "exportToCSV": "CSV İndir", + "menu": "Menü", + "selection": "Seçim", + "selectionZoom": "Seçim Yakınlaştır", + "zoomIn": "Yakınlaştır", + "zoomOut": "Uzaklaştır", + "pan": "Kaydır", + "reset": "Yakınlaştırmayı Sıfırla" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/ua.json b/public/assets/libs/apexcharts/src/locales/ua.json new file mode 100644 index 0000000..d6f81de --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/ua.json @@ -0,0 +1,55 @@ +{ + "name": "ua", + "options": { + "months": [ + "Січень", + "Лютий", + "Березень", + "Квітень", + "Травень", + "Червень", + "Липень", + "Серпень", + "Вересень", + "Жовтень", + "Листопад", + "Грудень" + ], + "shortMonths": [ + "Січ", + "Лют", + "Бер", + "Кві", + "Тра", + "Чер", + "Лип", + "Сер", + "Вер", + "Жов", + "Лис", + "Гру" + ], + "days": [ + "Неділя", + "Понеділок", + "Вівторок", + "Середа", + "Четвер", + "П'ятниця", + "Субота" + ], + "shortDays": ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], + "toolbar": { + "exportToSVG": "Зберегти SVG", + "exportToPNG": "Зберегти PNG", + "exportToCSV": "Зберегти CSV", + "menu": "Меню", + "selection": "Вибір", + "selectionZoom": "Вибір із збільшенням", + "zoomIn": "Збільшити", + "zoomOut": "Зменшити", + "pan": "Переміщення", + "reset": "Скинути збільшення" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/zh-cn.json b/public/assets/libs/apexcharts/src/locales/zh-cn.json new file mode 100644 index 0000000..8944659 --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/zh-cn.json @@ -0,0 +1,55 @@ +{ + "name": "zh-cn", + "options": { + "months": [ + "一月", + "二月", + "三月", + "四月", + "五月", + "六月", + "七月", + "八月", + "九月", + "十月", + "十一月", + "十二月" + ], + "shortMonths": [ + "一月", + "二月", + "三月", + "四月", + "五月", + "六月", + "七月", + "八月", + "九月", + "十月", + "十一月", + "十二月" + ], + "days": [ + "星期天", + "星期一", + "星期二", + "星期三", + "星期四", + "星期五", + "星期六" + ], + "shortDays": ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], + "toolbar": { + "exportToSVG": "下载 SVG", + "exportToPNG": "下载 PNG", + "exportToCSV": "下载 CSV", + "menu": "菜单", + "selection": "选择", + "selectionZoom": "选择缩放", + "zoomIn": "放大", + "zoomOut": "缩小", + "pan": "平移", + "reset": "重置缩放" + } + } +} diff --git a/public/assets/libs/apexcharts/src/locales/zh-tw.json b/public/assets/libs/apexcharts/src/locales/zh-tw.json new file mode 100644 index 0000000..8e3bd1e --- /dev/null +++ b/public/assets/libs/apexcharts/src/locales/zh-tw.json @@ -0,0 +1,55 @@ +{ + "name": "zh-tw", + "options": { + "months": [ + "一月", + "二月", + "三月", + "四月", + "五月", + "六月", + "七月", + "八月", + "九月", + "十月", + "十一月", + "十二月" + ], + "shortMonths": [ + "一月", + "二月", + "三月", + "四月", + "五月", + "六月", + "七月", + "八月", + "九月", + "十月", + "十一月", + "十二月" + ], + "days": [ + "星期日", + "星期一", + "星期二", + "星期三", + "星期四", + "星期五", + "星期六" + ], + "shortDays": ["週日", "週一", "週二", "週三", "週四", "週五", "週六"], + "toolbar": { + "exportToSVG": "下載 SVG", + "exportToPNG": "下載 PNG", + "exportToCSV": "下載 CSV", + "menu": "菜單", + "selection": "選擇", + "selectionZoom": "選擇縮放", + "zoomIn": "放大", + "zoomOut": "縮小", + "pan": "平移", + "reset": "重置縮放" + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Animations.js b/public/assets/libs/apexcharts/src/modules/Animations.js new file mode 100644 index 0000000..6f28d63 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Animations.js @@ -0,0 +1,261 @@ +import Utils from '../utils/Utils' + +/** + * ApexCharts Animation Class. + * + * @module Animations + **/ + +export default class Animations { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.setEasingFunctions() + } + + setEasingFunctions() { + let easing + + if (this.w.globals.easing) return + + const userDefinedEasing = this.w.config.chart.animations.easing + + switch (userDefinedEasing) { + case 'linear': { + easing = '-' + break + } + case 'easein': { + easing = '<' + break + } + case 'easeout': { + easing = '>' + break + } + case 'easeinout': { + easing = '<>' + break + } + case 'swing': { + easing = (pos) => { + let s = 1.70158 + let ret = (pos -= 1) * pos * ((s + 1) * pos + s) + 1 + return ret + } + break + } + case 'bounce': { + easing = (pos) => { + let ret = '' + if (pos < 1 / 2.75) { + ret = 7.5625 * pos * pos + } else if (pos < 2 / 2.75) { + ret = 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75 + } else if (pos < 2.5 / 2.75) { + ret = 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375 + } else { + ret = 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375 + } + return ret + } + break + } + case 'elastic': { + easing = (pos) => { + if (pos === !!pos) return pos + return ( + Math.pow(2, -10 * pos) * + Math.sin(((pos - 0.075) * (2 * Math.PI)) / 0.3) + + 1 + ) + } + break + } + + default: { + easing = '<>' + } + } + + this.w.globals.easing = easing + } + + animateLine(el, from, to, speed) { + el.attr(from) + .animate(speed) + .attr(to) + } + + /* + ** Animate radius of a circle element + */ + animateMarker(el, from, to, speed, easing, cb) { + if (!from) from = 0 + + el.attr({ + r: from, + width: from, + height: from + }) + .animate(speed, easing) + .attr({ + r: to, + width: to.width, + height: to.height + }) + .afterAll(() => { + cb() + }) + } + + /* + ** Animate radius and position of a circle element + */ + animateCircle(el, from, to, speed, easing) { + el.attr({ + r: from.r, + cx: from.cx, + cy: from.cy + }) + .animate(speed, easing) + .attr({ + r: to.r, + cx: to.cx, + cy: to.cy + }) + } + + /* + ** Animate rect properties + */ + animateRect(el, from, to, speed, fn) { + el.attr(from) + .animate(speed) + .attr(to) + .afterAll(() => fn()) + } + + animatePathsGradually(params) { + let { el, realIndex, j, fill, pathFrom, pathTo, speed, delay } = params + + let me = this + let w = this.w + + let delayFactor = 0 + + if (w.config.chart.animations.animateGradually.enabled) { + delayFactor = w.config.chart.animations.animateGradually.delay + } + + if ( + w.config.chart.animations.dynamicAnimation.enabled && + w.globals.dataChanged && + w.config.chart.type !== 'bar' + ) { + // disabled due to this bug - https://github.com/apexcharts/vue-apexcharts/issues/75 + delayFactor = 0 + } + me.morphSVG( + el, + realIndex, + j, + w.config.chart.type === 'line' && !w.globals.comboCharts + ? 'stroke' + : fill, + pathFrom, + pathTo, + speed, + delay * delayFactor + ) + } + + showDelayedElements() { + this.w.globals.delayedElements.forEach((d) => { + const ele = d.el + ele.classList.remove('apexcharts-element-hidden') + }) + } + + animationCompleted(el) { + const w = this.w + if (w.globals.animationEnded) return + + w.globals.animationEnded = true + this.showDelayedElements() + + if (typeof w.config.chart.events.animationEnd === 'function') { + w.config.chart.events.animationEnd(this.ctx, { el, w }) + } + } + + // SVG.js animation for morphing one path to another + morphSVG(el, realIndex, j, fill, pathFrom, pathTo, speed, delay) { + let w = this.w + + if (!pathFrom) { + pathFrom = el.attr('pathFrom') + } + + if (!pathTo) { + pathTo = el.attr('pathTo') + } + + const disableAnimationForCorrupPath = (path) => { + if (w.config.chart.type === 'radar') { + // radar chart drops the path to bottom and hence a corrup path looks ugly + // therefore, disable animation for such a case + speed = 1 + } + return `M 0 ${w.globals.gridHeight}` + } + + if ( + !pathFrom || + pathFrom.indexOf('undefined') > -1 || + pathFrom.indexOf('NaN') > -1 + ) { + pathFrom = disableAnimationForCorrupPath() + } + + if ( + !pathTo || + pathTo.indexOf('undefined') > -1 || + pathTo.indexOf('NaN') > -1 + ) { + pathTo = disableAnimationForCorrupPath() + } + if (!w.globals.shouldAnimate) { + speed = 1 + } + + el.plot(pathFrom) + .animate(1, w.globals.easing, delay) + .plot(pathFrom) + .animate(speed, w.globals.easing, delay) + .plot(pathTo) + .afterAll(() => { + // a flag to indicate that the original mount function can return true now as animation finished here + + if (Utils.isNumber(j)) { + if ( + j === w.globals.series[w.globals.maxValsInArrayIndex].length - 2 && + w.globals.shouldAnimate + ) { + this.animationCompleted(el) + } + } else if (fill !== 'none' && w.globals.shouldAnimate) { + if ( + (!w.globals.comboCharts && + realIndex === w.globals.series.length - 1) || + w.globals.comboCharts + ) { + this.animationCompleted(el) + } + } + + this.showDelayedElements() + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Base.js b/public/assets/libs/apexcharts/src/modules/Base.js new file mode 100644 index 0000000..87cdfb1 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Base.js @@ -0,0 +1,25 @@ +import Config from './settings/Config' +import Globals from './settings/Globals' + +/** + * ApexCharts Base Class for extending user options with pre-defined ApexCharts config. + * + * @module Base + **/ +export default class Base { + constructor(opts) { + this.opts = opts + } + + init() { + const config = new Config(this.opts).init({ responsiveOverride: false }) + const globals = new Globals().init(config) + + const w = { + config, + globals + } + + return w + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Core.js b/public/assets/libs/apexcharts/src/modules/Core.js new file mode 100644 index 0000000..0845739 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Core.js @@ -0,0 +1,614 @@ +import Bar from '../charts/Bar' +import BarStacked from '../charts/BarStacked' +import BoxCandleStick from '../charts/BoxCandleStick' +import CoreUtils from './CoreUtils' +import Crosshairs from './Crosshairs' +import HeatMap from '../charts/HeatMap' +import Globals from '../modules/settings/Globals' +import Pie from '../charts/Pie' +import Radar from '../charts/Radar' +import Radial from '../charts/Radial' +import RangeBar from '../charts/RangeBar' +import Legend from './legend/Legend' +import Line from '../charts/Line' +import Treemap from '../charts/Treemap' +import Graphics from './Graphics' +import Range from './Range' +import Utils from '../utils/Utils' +import Scales from './Scales' +import TimeScale from './TimeScale' + +/** + * ApexCharts Core Class responsible for major calculations and creating elements. + * + * @module Core + **/ + +export default class Core { + constructor(el, ctx) { + this.ctx = ctx + this.w = ctx.w + this.el = el + } + + // get data and store into appropriate vars + + setupElements() { + let gl = this.w.globals + let cnf = this.w.config + + // const graphics = new Graphics(this.ctx) + + let ct = cnf.chart.type + let axisChartsArrTypes = [ + 'line', + 'area', + 'bar', + 'rangeBar', + 'candlestick', + 'boxPlot', + 'scatter', + 'bubble', + 'radar', + 'heatmap', + 'treemap' + ] + + let xyChartsArrTypes = [ + 'line', + 'area', + 'bar', + 'rangeBar', + 'candlestick', + 'boxPlot', + 'scatter', + 'bubble' + ] + + gl.axisCharts = axisChartsArrTypes.indexOf(ct) > -1 + + gl.xyCharts = xyChartsArrTypes.indexOf(ct) > -1 + + gl.isBarHorizontal = + (cnf.chart.type === 'bar' || + cnf.chart.type === 'rangeBar' || + cnf.chart.type === 'boxPlot') && + cnf.plotOptions.bar.horizontal + + gl.chartClass = '.apexcharts' + gl.chartID + + gl.dom.baseEl = this.el + + gl.dom.elWrap = document.createElement('div') + Graphics.setAttrs(gl.dom.elWrap, { + id: gl.chartClass.substring(1), + class: 'apexcharts-canvas ' + gl.chartClass.substring(1) + }) + this.el.appendChild(gl.dom.elWrap) + + gl.dom.Paper = new window.SVG.Doc(gl.dom.elWrap) + gl.dom.Paper.attr({ + class: 'apexcharts-svg', + 'xmlns:data': 'ApexChartsNS', + transform: `translate(${cnf.chart.offsetX}, ${cnf.chart.offsetY})` + }) + + gl.dom.Paper.node.style.background = cnf.chart.background + + this.setSVGDimensions() + + gl.dom.elGraphical = gl.dom.Paper.group().attr({ + class: 'apexcharts-inner apexcharts-graphical' + }) + + gl.dom.elAnnotations = gl.dom.Paper.group().attr({ + class: 'apexcharts-annotations' + }) + + gl.dom.elDefs = gl.dom.Paper.defs() + + gl.dom.elLegendWrap = document.createElement('div') + gl.dom.elLegendWrap.classList.add('apexcharts-legend') + gl.dom.elWrap.appendChild(gl.dom.elLegendWrap) + gl.dom.Paper.add(gl.dom.elGraphical) + gl.dom.elGraphical.add(gl.dom.elDefs) + } + + plotChartType(ser, xyRatios) { + const w = this.w + const cnf = w.config + const gl = w.globals + + let lineSeries = { + series: [], + i: [] + } + let areaSeries = { + series: [], + i: [] + } + let scatterSeries = { + series: [], + i: [] + } + + let bubbleSeries = { + series: [], + i: [] + } + + let columnSeries = { + series: [], + i: [] + } + + let candlestickSeries = { + series: [], + i: [] + } + + let boxplotSeries = { + series: [], + i: [] + } + + gl.series.map((series, st) => { + let comboCount = 0 + // if user has specified a particular type for particular series + if (typeof ser[st].type !== 'undefined') { + if (ser[st].type === 'column' || ser[st].type === 'bar') { + if (gl.series.length > 1 && cnf.plotOptions.bar.horizontal) { + // horizontal bars not supported in mixed charts, hence show a warning + console.warn( + 'Horizontal bars are not supported in a mixed/combo chart. Please turn off `plotOptions.bar.horizontal`' + ) + } + columnSeries.series.push(series) + columnSeries.i.push(st) + comboCount++ + w.globals.columnSeries = columnSeries.series + } else if (ser[st].type === 'area') { + areaSeries.series.push(series) + areaSeries.i.push(st) + comboCount++ + } else if (ser[st].type === 'line') { + lineSeries.series.push(series) + lineSeries.i.push(st) + comboCount++ + } else if (ser[st].type === 'scatter') { + scatterSeries.series.push(series) + scatterSeries.i.push(st) + } else if (ser[st].type === 'bubble') { + bubbleSeries.series.push(series) + bubbleSeries.i.push(st) + comboCount++ + } else if (ser[st].type === 'candlestick') { + candlestickSeries.series.push(series) + candlestickSeries.i.push(st) + comboCount++ + } else if (ser[st].type === 'boxPlot') { + boxplotSeries.series.push(series) + boxplotSeries.i.push(st) + comboCount++ + } else { + // user has specified type, but it is not valid (other than line/area/column) + console.warn( + 'You have specified an unrecognized chart type. Available types for this property are line/area/column/bar/scatter/bubble' + ) + } + if (comboCount > 1) { + gl.comboCharts = true + } + } else { + lineSeries.series.push(series) + lineSeries.i.push(st) + } + }) + + let line = new Line(this.ctx, xyRatios) + let boxCandlestick = new BoxCandleStick(this.ctx, xyRatios) + this.ctx.pie = new Pie(this.ctx) + let radialBar = new Radial(this.ctx) + this.ctx.rangeBar = new RangeBar(this.ctx, xyRatios) + let radar = new Radar(this.ctx) + let elGraph = [] + + if (gl.comboCharts) { + if (areaSeries.series.length > 0) { + elGraph.push(line.draw(areaSeries.series, 'area', areaSeries.i)) + } + if (columnSeries.series.length > 0) { + if (w.config.chart.stacked) { + let barStacked = new BarStacked(this.ctx, xyRatios) + elGraph.push(barStacked.draw(columnSeries.series, columnSeries.i)) + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios) + elGraph.push(this.ctx.bar.draw(columnSeries.series, columnSeries.i)) + } + } + if (lineSeries.series.length > 0) { + elGraph.push(line.draw(lineSeries.series, 'line', lineSeries.i)) + } + if (candlestickSeries.series.length > 0) { + elGraph.push( + boxCandlestick.draw(candlestickSeries.series, candlestickSeries.i) + ) + } + if (boxplotSeries.series.length > 0) { + elGraph.push(boxCandlestick.draw(boxplotSeries.series, boxplotSeries.i)) + } + if (scatterSeries.series.length > 0) { + const scatterLine = new Line(this.ctx, xyRatios, true) + elGraph.push( + scatterLine.draw(scatterSeries.series, 'scatter', scatterSeries.i) + ) + } + if (bubbleSeries.series.length > 0) { + const bubbleLine = new Line(this.ctx, xyRatios, true) + elGraph.push( + bubbleLine.draw(bubbleSeries.series, 'bubble', bubbleSeries.i) + ) + } + } else { + switch (cnf.chart.type) { + case 'line': + elGraph = line.draw(gl.series, 'line') + break + case 'area': + elGraph = line.draw(gl.series, 'area') + break + case 'bar': + if (cnf.chart.stacked) { + let barStacked = new BarStacked(this.ctx, xyRatios) + elGraph = barStacked.draw(gl.series) + } else { + this.ctx.bar = new Bar(this.ctx, xyRatios) + elGraph = this.ctx.bar.draw(gl.series) + } + break + case 'candlestick': + let candleStick = new BoxCandleStick(this.ctx, xyRatios) + elGraph = candleStick.draw(gl.series) + break + case 'boxPlot': + let boxPlot = new BoxCandleStick(this.ctx, xyRatios) + elGraph = boxPlot.draw(gl.series) + break + case 'rangeBar': + elGraph = this.ctx.rangeBar.draw(gl.series) + break + case 'heatmap': + let heatmap = new HeatMap(this.ctx, xyRatios) + elGraph = heatmap.draw(gl.series) + break + case 'treemap': + let treemap = new Treemap(this.ctx, xyRatios) + elGraph = treemap.draw(gl.series) + break + case 'pie': + case 'donut': + case 'polarArea': + elGraph = this.ctx.pie.draw(gl.series) + break + case 'radialBar': + elGraph = radialBar.draw(gl.series) + break + case 'radar': + elGraph = radar.draw(gl.series) + break + default: + elGraph = line.draw(gl.series) + } + } + + return elGraph + } + + setSVGDimensions() { + let gl = this.w.globals + let cnf = this.w.config + + gl.svgWidth = cnf.chart.width + gl.svgHeight = cnf.chart.height + + let elDim = Utils.getDimensions(this.el) + + let widthUnit = cnf.chart.width + .toString() + .split(/[0-9]+/g) + .pop() + + if (widthUnit === '%') { + if (Utils.isNumber(elDim[0])) { + if (elDim[0].width === 0) { + elDim = Utils.getDimensions(this.el.parentNode) + } + + gl.svgWidth = (elDim[0] * parseInt(cnf.chart.width, 10)) / 100 + } + } else if (widthUnit === 'px' || widthUnit === '') { + gl.svgWidth = parseInt(cnf.chart.width, 10) + } + + let heightUnit = cnf.chart.height + .toString() + .split(/[0-9]+/g) + .pop() + if (gl.svgHeight !== 'auto' && gl.svgHeight !== '') { + if (heightUnit === '%') { + let elParentDim = Utils.getDimensions(this.el.parentNode) + gl.svgHeight = (elParentDim[1] * parseInt(cnf.chart.height, 10)) / 100 + } else { + gl.svgHeight = parseInt(cnf.chart.height, 10) + } + } else { + if (gl.axisCharts) { + gl.svgHeight = gl.svgWidth / 1.61 + } else { + gl.svgHeight = gl.svgWidth / 1.2 + } + } + + if (gl.svgWidth < 0) gl.svgWidth = 0 + if (gl.svgHeight < 0) gl.svgHeight = 0 + + Graphics.setAttrs(gl.dom.Paper.node, { + width: gl.svgWidth, + height: gl.svgHeight + }) + + if (heightUnit !== '%') { + // fixes https://github.com/apexcharts/apexcharts.js/issues/2059 + let offsetY = cnf.chart.sparkline.enabled + ? 0 + : gl.axisCharts + ? cnf.chart.parentHeightOffset + : 0 + + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = + gl.svgHeight + offsetY + 'px' + } + + gl.dom.elWrap.style.width = gl.svgWidth + 'px' + gl.dom.elWrap.style.height = gl.svgHeight + 'px' + } + + shiftGraphPosition() { + let gl = this.w.globals + + let tY = gl.translateY + let tX = gl.translateX + + let scalingAttrs = { + transform: 'translate(' + tX + ', ' + tY + ')' + } + Graphics.setAttrs(gl.dom.elGraphical.node, scalingAttrs) + } + + // To prevent extra spacings in the bottom of the chart, we need to recalculate the height for pie/donut/radialbar charts + resizeNonAxisCharts() { + const w = this.w + + const gl = w.globals + + let legendHeight = 0 + let offY = w.config.chart.sparkline.enabled ? 1 : 15 + offY = offY + w.config.grid.padding.bottom + + if ( + (w.config.legend.position === 'top' || + w.config.legend.position === 'bottom') && + w.config.legend.show && + !w.config.legend.floating + ) { + legendHeight = + new Legend(this.ctx).legendHelpers.getLegendBBox().clwh + 10 + } + + let el = w.globals.dom.baseEl.querySelector( + '.apexcharts-radialbar, .apexcharts-pie' + ) + + let chartInnerDimensions = w.globals.radialSize * 2.05 + + if ( + el && + !w.config.chart.sparkline.enabled && + w.config.plotOptions.radialBar.startAngle !== 0 + ) { + let elRadialRect = Utils.getBoundingClientRect(el) + chartInnerDimensions = elRadialRect.bottom + + let maxHeight = elRadialRect.bottom - elRadialRect.top + + chartInnerDimensions = Math.max(w.globals.radialSize * 2.05, maxHeight) + } + + let newHeight = chartInnerDimensions + gl.translateY + legendHeight + offY + + if (gl.dom.elLegendForeign) { + gl.dom.elLegendForeign.setAttribute('height', newHeight) + } + + // fix apexcharts/apexcharts.js/issues/3105 (when % is provided in height, it keeps increasing) + if (w.config.chart.height && String(w.config.chart.height).indexOf('%') > 0) + return + + gl.dom.elWrap.style.height = newHeight + 'px' + + Graphics.setAttrs(gl.dom.Paper.node, { + height: newHeight + }) + + gl.dom.Paper.node.parentNode.parentNode.style.minHeight = newHeight + 'px' + } + + /* + ** All the calculations for setting range in charts will be done here + */ + coreCalculations() { + const range = new Range(this.ctx) + range.init() + } + + resetGlobals() { + const resetxyValues = () => { + return this.w.config.series.map((s) => []) + } + const globalObj = new Globals() + + let gl = this.w.globals + globalObj.initGlobalVars(gl) + gl.seriesXvalues = resetxyValues() + gl.seriesYvalues = resetxyValues() + } + + isMultipleY() { + // user has supplied an array in yaxis property. So, turn on multipleYAxis flag + if ( + this.w.config.yaxis.constructor === Array && + this.w.config.yaxis.length > 1 + ) { + this.w.globals.isMultipleYAxis = true + return true + } + } + + xySettings() { + let xyRatios = null + const w = this.w + + if (w.globals.axisCharts) { + if (w.config.xaxis.crosshairs.position === 'back') { + const crosshairs = new Crosshairs(this.ctx) + crosshairs.drawXCrosshairs() + } + if (w.config.yaxis[0].crosshairs.position === 'back') { + const crosshairs = new Crosshairs(this.ctx) + crosshairs.drawYCrosshairs() + } + + if ( + w.config.xaxis.type === 'datetime' && + w.config.xaxis.labels.formatter === undefined + ) { + this.ctx.timeScale = new TimeScale(this.ctx) + let formattedTimeScale = [] + if ( + isFinite(w.globals.minX) && + isFinite(w.globals.maxX) && + !w.globals.isBarHorizontal + ) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks( + w.globals.minX, + w.globals.maxX + ) + } else if (w.globals.isBarHorizontal) { + formattedTimeScale = this.ctx.timeScale.calculateTimeScaleTicks( + w.globals.minY, + w.globals.maxY + ) + } + this.ctx.timeScale.recalcDimensionsBasedOnFormat(formattedTimeScale) + } + + const coreUtils = new CoreUtils(this.ctx) + xyRatios = coreUtils.getCalculatedRatios() + } + return xyRatios + } + + updateSourceChart(targetChart) { + this.ctx.w.globals.selection = undefined + this.ctx.updateHelpers._updateOptions( + { + chart: { + selection: { + xaxis: { + min: targetChart.w.globals.minX, + max: targetChart.w.globals.maxX + } + } + } + }, + false, + false + ) + } + + setupBrushHandler() { + const w = this.w + + // only for brush charts + if (!w.config.chart.brush.enabled) { + return + } + + // if user has not defined a custom function for selection - we handle the brush chart + // otherwise we leave it to the user to define the functionality for selection + if (typeof w.config.chart.events.selection !== 'function') { + let targets = w.config.chart.brush.targets || [ + w.config.chart.brush.target + ] + // retro compatibility with single target option + targets.forEach((target) => { + let targetChart = ApexCharts.getChartByID(target) + targetChart.w.globals.brushSource = this.ctx + + if (typeof targetChart.w.config.chart.events.zoomed !== 'function') { + targetChart.w.config.chart.events.zoomed = () => { + this.updateSourceChart(targetChart) + } + } + if (typeof targetChart.w.config.chart.events.scrolled !== 'function') { + targetChart.w.config.chart.events.scrolled = () => { + this.updateSourceChart(targetChart) + } + } + }) + + w.config.chart.events.selection = (chart, e) => { + targets.forEach((target) => { + let targetChart = ApexCharts.getChartByID(target) + let yaxis = Utils.clone(w.config.yaxis) + + if ( + w.config.chart.brush.autoScaleYaxis && + targetChart.w.globals.series.length === 1 + ) { + const scale = new Scales(targetChart) + yaxis = scale.autoScaleY(targetChart, yaxis, e) + } + + const multipleYaxis = targetChart.w.config.yaxis.reduce( + (acc, curr, index) => { + return [ + ...acc, + { + ...targetChart.w.config.yaxis[index], + min: yaxis[0].min, + max: yaxis[0].max + } + ] + }, + [] + ) + + targetChart.ctx.updateHelpers._updateOptions( + { + xaxis: { + min: e.xaxis.min, + max: e.xaxis.max + }, + yaxis: multipleYaxis + }, + false, + false, + false, + false + ) + }) + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/CoreUtils.js b/public/assets/libs/apexcharts/src/modules/CoreUtils.js new file mode 100644 index 0000000..bffc3eb --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/CoreUtils.js @@ -0,0 +1,386 @@ +/* + ** Util functions which are dependent on ApexCharts instance + */ + +class CoreUtils { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + static checkComboSeries(series) { + let comboCharts = false + let comboBarCount = 0 + let comboCount = 0 + + // if user specified a type in series too, turn on comboCharts flag + if (series.length && typeof series[0].type !== 'undefined') { + series.forEach((s) => { + if ( + s.type === 'bar' || + s.type === 'column' || + s.type === 'candlestick' || + s.type === 'boxPlot' + ) { + comboBarCount++ + } + if (typeof s.type !== 'undefined') { + comboCount++ + } + }) + } + if (comboCount > 0) { + comboCharts = true + } + + return { + comboBarCount, + comboCharts + } + } + + /** + * @memberof CoreUtils + * returns the sum of all individual values in a multiple stacked series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [34,36,48,13] + **/ + getStackedSeriesTotals() { + const w = this.w + let total = [] + + if (w.globals.series.length === 0) return total + + for ( + let i = 0; + i < w.globals.series[w.globals.maxValsInArrayIndex].length; + i++ + ) { + let t = 0 + for (let j = 0; j < w.globals.series.length; j++) { + if (typeof w.globals.series[j][i] !== 'undefined') { + t += w.globals.series[j][i] + } + } + total.push(t) + } + w.globals.stackedSeriesTotals = total + return total + } + + // get total of the all values inside all series + getSeriesTotalByIndex(index = null) { + if (index === null) { + // non-plot chart types - pie / donut / circle + return this.w.config.series.reduce((acc, cur) => acc + cur, 0) + } else { + // axis charts - supporting multiple series + return this.w.globals.series[index].reduce((acc, cur) => acc + cur, 0) + } + } + + isSeriesNull(index = null) { + let r = [] + if (index === null) { + // non-plot chart types - pie / donut / circle + r = this.w.config.series.filter((d) => d !== null) + } else { + // axis charts - supporting multiple series + r = this.w.config.series[index].data.filter((d) => d !== null) + } + + return r.length === 0 + } + + seriesHaveSameValues(index) { + return this.w.globals.series[index].every((val, i, arr) => val === arr[0]) + } + + getCategoryLabels(labels) { + const w = this.w + let catLabels = labels.slice() + if (w.config.xaxis.convertedCatToNumeric) { + catLabels = labels.map((i, li) => { + return w.config.xaxis.labels.formatter(i - w.globals.minX + 1) + }) + } + return catLabels + } + // maxValsInArrayIndex is the index of series[] which has the largest number of items + getLargestSeries() { + const w = this.w + w.globals.maxValsInArrayIndex = w.globals.series + .map((a) => a.length) + .indexOf( + Math.max.apply( + Math, + w.globals.series.map((a) => a.length) + ) + ) + } + + getLargestMarkerSize() { + const w = this.w + let size = 0 + + w.globals.markers.size.forEach((m) => { + size = Math.max(size, m) + }) + + if (w.config.markers.discrete && w.config.markers.discrete.length) { + w.config.markers.discrete.forEach((m) => { + size = Math.max(size, m.size) + }) + } + + if (size > 0) { + size += w.config.markers.hover.sizeOffset + 1 + } + + w.globals.markers.largestSize = size + + return size + } + + /** + * @memberof Core + * returns the sum of all values in a series + * Eg. w.globals.series = [[32,33,43,12], [2,3,5,1]] + * @return [120, 11] + **/ + getSeriesTotals() { + const w = this.w + + w.globals.seriesTotals = w.globals.series.map((ser, index) => { + let total = 0 + + if (Array.isArray(ser)) { + for (let j = 0; j < ser.length; j++) { + total += ser[j] + } + } else { + // for pie/donuts/gauges + total += ser + } + + return total + }) + } + + getSeriesTotalsXRange(minX, maxX) { + const w = this.w + + const seriesTotalsXRange = w.globals.series.map((ser, index) => { + let total = 0 + + for (let j = 0; j < ser.length; j++) { + if ( + w.globals.seriesX[index][j] > minX && + w.globals.seriesX[index][j] < maxX + ) { + total += ser[j] + } + } + + return total + }) + + return seriesTotalsXRange + } + + /** + * @memberof CoreUtils + * returns the percentage value of all individual values which can be used in a 100% stacked series + * Eg. w.globals.series = [[32, 33, 43, 12], [2, 3, 5, 1]] + * @return [[94.11, 91.66, 89.58, 92.30], [5.88, 8.33, 10.41, 7.7]] + **/ + getPercentSeries() { + const w = this.w + + w.globals.seriesPercent = w.globals.series.map((ser, index) => { + let seriesPercent = [] + if (Array.isArray(ser)) { + for (let j = 0; j < ser.length; j++) { + let total = w.globals.stackedSeriesTotals[j] + let percent = 0 + if (total) { + percent = (100 * ser[j]) / total + } + seriesPercent.push(percent) + } + } else { + const total = w.globals.seriesTotals.reduce((acc, val) => acc + val, 0) + let percent = (100 * ser) / total + seriesPercent.push(percent) + } + + return seriesPercent + }) + } + + getCalculatedRatios() { + let gl = this.w.globals + + let yRatio = [] + let invertedYRatio = 0 + let xRatio = 0 + let initialXRatio = 0 + let invertedXRatio = 0 + let zRatio = 0 + let baseLineY = [] + let baseLineInvertedY = 0.1 + let baseLineX = 0 + + gl.yRange = [] + if (gl.isMultipleYAxis) { + for (let i = 0; i < gl.minYArr.length; i++) { + gl.yRange.push(Math.abs(gl.minYArr[i] - gl.maxYArr[i])) + baseLineY.push(0) + } + } else { + gl.yRange.push(Math.abs(gl.minY - gl.maxY)) + } + gl.xRange = Math.abs(gl.maxX - gl.minX) + gl.zRange = Math.abs(gl.maxZ - gl.minZ) + + // multiple y axis + for (let i = 0; i < gl.yRange.length; i++) { + yRatio.push(gl.yRange[i] / gl.gridHeight) + } + + xRatio = gl.xRange / gl.gridWidth + + initialXRatio = Math.abs(gl.initialMaxX - gl.initialMinX) / gl.gridWidth + + invertedYRatio = gl.yRange / gl.gridWidth + invertedXRatio = gl.xRange / gl.gridHeight + zRatio = (gl.zRange / gl.gridHeight) * 16 + + if (!zRatio) { + zRatio = 1 + } + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + // Negative numbers present in series + gl.hasNegs = true + } + + if (gl.isMultipleYAxis) { + baseLineY = [] + + // baseline variables is the 0 of the yaxis which will be needed when there are negatives + for (let i = 0; i < yRatio.length; i++) { + baseLineY.push(-gl.minYArr[i] / yRatio[i]) + } + } else { + baseLineY.push(-gl.minY / yRatio[0]) + + if (gl.minY !== Number.MIN_VALUE && Math.abs(gl.minY) !== 0) { + baseLineInvertedY = -gl.minY / invertedYRatio // this is for bar chart + baseLineX = gl.minX / xRatio + } + } + + return { + yRatio, + invertedYRatio, + zRatio, + xRatio, + initialXRatio, + invertedXRatio, + baseLineInvertedY, + baseLineY, + baseLineX + } + } + + getLogSeries(series) { + const w = this.w + + w.globals.seriesLog = series.map((s, i) => { + if (w.config.yaxis[i] && w.config.yaxis[i].logarithmic) { + return s.map((d) => { + if (d === null) return null + return this.getLogVal(w.config.yaxis[i].logBase, d, i) + }) + } else { + return s + } + }) + + return w.globals.invalidLogScale ? series : w.globals.seriesLog + } + getBaseLog(base, value) { + return Math.log(value) / Math.log(base) + } + getLogVal(b, d, yIndex) { + if (d === 0) { + return 0 + } + const w = this.w + const min_log_val = + w.globals.minYArr[yIndex] === 0 + ? -1 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.minYArr[yIndex]) + const max_log_val = + w.globals.maxYArr[yIndex] === 0 + ? 0 // make sure we dont calculate log of 0 + : this.getBaseLog(b, w.globals.maxYArr[yIndex]) + const number_of_height_levels = max_log_val - min_log_val + if (d < 1) return d / number_of_height_levels + const log_height_value = this.getBaseLog(b, d) - min_log_val + return log_height_value / number_of_height_levels + } + + getLogYRatios(yRatio) { + const w = this.w + const gl = this.w.globals + + gl.yLogRatio = yRatio.slice() + + gl.logYRange = gl.yRange.map((yRange, i) => { + if (w.config.yaxis[i] && this.w.config.yaxis[i].logarithmic) { + let maxY = -Number.MAX_VALUE + let minY = Number.MIN_VALUE + let range = 1 + gl.seriesLog.forEach((s, si) => { + s.forEach((v) => { + if (w.config.yaxis[si] && w.config.yaxis[si].logarithmic) { + maxY = Math.max(v, maxY) + minY = Math.min(v, minY) + } + }) + }) + + range = Math.pow(gl.yRange[i], Math.abs(minY - maxY) / gl.yRange[i]) + + gl.yLogRatio[i] = range / gl.gridHeight + return range + } + }) + + return gl.invalidLogScale ? yRatio.slice() : gl.yLogRatio + } + + // Some config objects can be array - and we need to extend them correctly + static extendArrayProps(configInstance, options, w) { + if (options.yaxis) { + options = configInstance.extendYAxis(options, w) + } + if (options.annotations) { + if (options.annotations.yaxis) { + options = configInstance.extendYAxisAnnotations(options) + } + if (options.annotations.xaxis) { + options = configInstance.extendXAxisAnnotations(options) + } + if (options.annotations.points) { + options = configInstance.extendPointAnnotations(options) + } + } + + return options + } +} + +export default CoreUtils diff --git a/public/assets/libs/apexcharts/src/modules/Crosshairs.js b/public/assets/libs/apexcharts/src/modules/Crosshairs.js new file mode 100644 index 0000000..3f77823 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Crosshairs.js @@ -0,0 +1,138 @@ +import Graphics from './Graphics' +import Filters from './Filters' +import Utils from '../utils/Utils' + +class Crosshairs { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + drawXCrosshairs() { + const w = this.w + + let graphics = new Graphics(this.ctx) + let filters = new Filters(this.ctx) + + let crosshairGradient = w.config.xaxis.crosshairs.fill.gradient + let crosshairShadow = w.config.xaxis.crosshairs.dropShadow + + let fillType = w.config.xaxis.crosshairs.fill.type + let gradientFrom = crosshairGradient.colorFrom + let gradientTo = crosshairGradient.colorTo + let opacityFrom = crosshairGradient.opacityFrom + let opacityTo = crosshairGradient.opacityTo + let stops = crosshairGradient.stops + + let shadow = 'none' + let dropShadow = crosshairShadow.enabled + let shadowLeft = crosshairShadow.left + let shadowTop = crosshairShadow.top + let shadowBlur = crosshairShadow.blur + let shadowColor = crosshairShadow.color + let shadowOpacity = crosshairShadow.opacity + + let xcrosshairsFill = w.config.xaxis.crosshairs.fill.color + + if (w.config.xaxis.crosshairs.show) { + if (fillType === 'gradient') { + xcrosshairsFill = graphics.drawGradient( + 'vertical', + gradientFrom, + gradientTo, + opacityFrom, + opacityTo, + null, + stops, + null + ) + } + + let xcrosshairs = graphics.drawRect() + if (w.config.xaxis.crosshairs.width === 1) { + // to prevent drawing 2 lines, convert rect to line + xcrosshairs = graphics.drawLine() + } + + let gridHeight = w.globals.gridHeight + if (!Utils.isNumber(gridHeight) || gridHeight < 0) { + gridHeight = 0 + } + let crosshairsWidth = w.config.xaxis.crosshairs.width + if (!Utils.isNumber(crosshairsWidth) || crosshairsWidth < 0) { + crosshairsWidth = 0 + } + + xcrosshairs.attr({ + class: 'apexcharts-xcrosshairs', + x: 0, + y: 0, + y2: gridHeight, + width: crosshairsWidth, + height: gridHeight, + fill: xcrosshairsFill, + filter: shadow, + 'fill-opacity': w.config.xaxis.crosshairs.opacity, + stroke: w.config.xaxis.crosshairs.stroke.color, + 'stroke-width': w.config.xaxis.crosshairs.stroke.width, + 'stroke-dasharray': w.config.xaxis.crosshairs.stroke.dashArray + }) + + if (dropShadow) { + xcrosshairs = filters.dropShadow(xcrosshairs, { + left: shadowLeft, + top: shadowTop, + blur: shadowBlur, + color: shadowColor, + opacity: shadowOpacity + }) + } + + w.globals.dom.elGraphical.add(xcrosshairs) + } + } + + drawYCrosshairs() { + const w = this.w + + let graphics = new Graphics(this.ctx) + + let crosshair = w.config.yaxis[0].crosshairs + const offX = w.globals.barPadForNumericAxis + + if (w.config.yaxis[0].crosshairs.show) { + let ycrosshairs = graphics.drawLine( + -offX, + 0, + w.globals.gridWidth + offX, + 0, + crosshair.stroke.color, + crosshair.stroke.dashArray, + crosshair.stroke.width + ) + ycrosshairs.attr({ + class: 'apexcharts-ycrosshairs' + }) + + w.globals.dom.elGraphical.add(ycrosshairs) + } + + // draw an invisible crosshair to help in positioning the yaxis tooltip + let ycrosshairsHidden = graphics.drawLine( + -offX, + 0, + w.globals.gridWidth + offX, + 0, + crosshair.stroke.color, + 0, + 0 + ) + ycrosshairsHidden.attr({ + class: 'apexcharts-ycrosshairs-hidden' + }) + + w.globals.dom.elGraphical.add(ycrosshairsHidden) + } +} + +export default Crosshairs diff --git a/public/assets/libs/apexcharts/src/modules/Data.js b/public/assets/libs/apexcharts/src/modules/Data.js new file mode 100644 index 0000000..98906fc --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Data.js @@ -0,0 +1,705 @@ +import CoreUtils from './CoreUtils' +import DateTime from './../utils/DateTime' +import Series from './Series' +import Utils from '../utils/Utils' +import Defaults from './settings/Defaults' + +export default class Data { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.twoDSeries = [] + this.threeDSeries = [] + this.twoDSeriesX = [] + this.seriesGoals = [] + this.coreUtils = new CoreUtils(this.ctx) + } + + isMultiFormat() { + return this.isFormatXY() || this.isFormat2DArray() + } + + // given format is [{x, y}, {x, y}] + isFormatXY() { + const series = this.w.config.series.slice() + + const sr = new Series(this.ctx) + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex() + + if ( + typeof series[this.activeSeriesIndex].data !== 'undefined' && + series[this.activeSeriesIndex].data.length > 0 && + series[this.activeSeriesIndex].data[0] !== null && + typeof series[this.activeSeriesIndex].data[0].x !== 'undefined' && + series[this.activeSeriesIndex].data[0] !== null + ) { + return true + } + } + + // given format is [[x, y], [x, y]] + isFormat2DArray() { + const series = this.w.config.series.slice() + + const sr = new Series(this.ctx) + this.activeSeriesIndex = sr.getActiveConfigSeriesIndex() + + if ( + typeof series[this.activeSeriesIndex].data !== 'undefined' && + series[this.activeSeriesIndex].data.length > 0 && + typeof series[this.activeSeriesIndex].data[0] !== 'undefined' && + series[this.activeSeriesIndex].data[0] !== null && + series[this.activeSeriesIndex].data[0].constructor === Array + ) { + return true + } + } + + handleFormat2DArray(ser, i) { + const cnf = this.w.config + const gl = this.w.globals + + const isBoxPlot = + cnf.chart.type === 'boxPlot' || cnf.series[i].type === 'boxPlot' + + for (let j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j][1] !== 'undefined') { + if ( + Array.isArray(ser[i].data[j][1]) && + ser[i].data[j][1].length === 4 && + !isBoxPlot + ) { + // candlestick nested ohlc format + this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1][3])) + } else if (ser[i].data[j].length >= 5) { + // candlestick non-nested ohlc format + this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][4])) + } else { + this.twoDSeries.push(Utils.parseNumber(ser[i].data[j][1])) + } + gl.dataFormatXNumeric = true + } + if (cnf.xaxis.type === 'datetime') { + // if timestamps are provided and xaxis type is datetime, + + let ts = new Date(ser[i].data[j][0]) + ts = new Date(ts).getTime() + this.twoDSeriesX.push(ts) + } else { + this.twoDSeriesX.push(ser[i].data[j][0]) + } + } + + for (let j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j][2] !== 'undefined') { + this.threeDSeries.push(ser[i].data[j][2]) + gl.isDataXYZ = true + } + } + } + + handleFormatXY(ser, i) { + const cnf = this.w.config + const gl = this.w.globals + + const dt = new DateTime(this.ctx) + + let activeI = i + if (gl.collapsedSeriesIndices.indexOf(i) > -1) { + // fix #368 + activeI = this.activeSeriesIndex + } + + // get series + for (let j = 0; j < ser[i].data.length; j++) { + if (typeof ser[i].data[j].y !== 'undefined') { + if (Array.isArray(ser[i].data[j].y)) { + this.twoDSeries.push( + Utils.parseNumber(ser[i].data[j].y[ser[i].data[j].y.length - 1]) + ) + } else { + this.twoDSeries.push(Utils.parseNumber(ser[i].data[j].y)) + } + } + + if ( + typeof ser[i].data[j].goals !== 'undefined' && + Array.isArray(ser[i].data[j].goals) + ) { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = [] + } + this.seriesGoals[i].push(ser[i].data[j].goals) + } else { + if (typeof this.seriesGoals[i] === 'undefined') { + this.seriesGoals[i] = [] + } + this.seriesGoals[i].push(null) + } + } + + // get seriesX + for (let j = 0; j < ser[activeI].data.length; j++) { + const isXString = typeof ser[activeI].data[j].x === 'string' + const isXArr = Array.isArray(ser[activeI].data[j].x) + const isXDate = + !isXArr && !!dt.isValidDate(ser[activeI].data[j].x.toString()) + + if (isXString || isXDate) { + // user supplied '01/01/2017' or a date string (a JS date object is not supported) + if (isXString || cnf.xaxis.convertedCatToNumeric) { + const isRangeColumn = gl.isBarHorizontal && gl.isRangeData + + if (cnf.xaxis.type === 'datetime' && !isRangeColumn) { + this.twoDSeriesX.push(dt.parseDate(ser[activeI].data[j].x)) + } else { + // a category and not a numeric x value + this.fallbackToCategory = true + this.twoDSeriesX.push(ser[activeI].data[j].x) + } + } else { + if (cnf.xaxis.type === 'datetime') { + this.twoDSeriesX.push( + dt.parseDate(ser[activeI].data[j].x.toString()) + ) + } else { + gl.dataFormatXNumeric = true + gl.isXNumeric = true + this.twoDSeriesX.push(parseFloat(ser[activeI].data[j].x)) + } + } + } else if (isXArr) { + // a multiline label described in array format + this.fallbackToCategory = true + this.twoDSeriesX.push(ser[activeI].data[j].x) + } else { + // a numeric value in x property + gl.isXNumeric = true + gl.dataFormatXNumeric = true + this.twoDSeriesX.push(ser[activeI].data[j].x) + } + } + + if (ser[i].data[0] && typeof ser[i].data[0].z !== 'undefined') { + for (let t = 0; t < ser[i].data.length; t++) { + this.threeDSeries.push(ser[i].data[t].z) + } + gl.isDataXYZ = true + } + } + + handleRangeData(ser, i) { + const gl = this.w.globals + + let range = {} + if (this.isFormat2DArray()) { + range = this.handleRangeDataFormat('array', ser, i) + } else if (this.isFormatXY()) { + range = this.handleRangeDataFormat('xy', ser, i) + } + + gl.seriesRangeStart.push(range.start) + gl.seriesRangeEnd.push(range.end) + + gl.seriesRangeBar.push(range.rangeUniques) + + // check for overlaps to avoid clashes in a timeline chart + gl.seriesRangeBar.forEach((sr, si) => { + if (sr) { + sr.forEach((sarr, sarri) => { + sarr.y.forEach((arr, arri) => { + for (let sri = 0; sri < sarr.y.length; sri++) { + if (arri !== sri) { + const range1y1 = arr.y1 + const range1y2 = arr.y2 + const range2y1 = sarr.y[sri].y1 + const range2y2 = sarr.y[sri].y2 + if (range1y1 <= range2y2 && range2y1 <= range1y2) { + if (sarr.overlaps.indexOf(arr.rangeName) < 0) { + sarr.overlaps.push(arr.rangeName) + } + if (sarr.overlaps.indexOf(sarr.y[sri].rangeName) < 0) { + sarr.overlaps.push(sarr.y[sri].rangeName) + } + } + } + } + }) + }) + } + }) + + return range + } + + handleCandleStickBoxData(ser, i) { + const gl = this.w.globals + + let ohlc = {} + if (this.isFormat2DArray()) { + ohlc = this.handleCandleStickBoxDataFormat('array', ser, i) + } else if (this.isFormatXY()) { + ohlc = this.handleCandleStickBoxDataFormat('xy', ser, i) + } + + gl.seriesCandleO[i] = ohlc.o + gl.seriesCandleH[i] = ohlc.h + gl.seriesCandleM[i] = ohlc.m + gl.seriesCandleL[i] = ohlc.l + gl.seriesCandleC[i] = ohlc.c + + return ohlc + } + + handleRangeDataFormat(format, ser, i) { + const rangeStart = [] + const rangeEnd = [] + + const uniqueKeys = ser[i].data + .filter( + (thing, index, self) => index === self.findIndex((t) => t.x === thing.x) + ) + .map((r, index) => { + return { + x: r.x, + overlaps: [], + y: [] + } + }) + + const err = + 'Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts' + + const serObj = new Series(this.ctx) + const activeIndex = serObj.getActiveConfigSeriesIndex() + if (format === 'array') { + if (ser[activeIndex].data[0][1].length !== 2) { + throw new Error(err) + } + for (let j = 0; j < ser[i].data.length; j++) { + rangeStart.push(ser[i].data[j][1][0]) + rangeEnd.push(ser[i].data[j][1][1]) + } + } else if (format === 'xy') { + if (ser[activeIndex].data[0].y.length !== 2) { + throw new Error(err) + } + for (let j = 0; j < ser[i].data.length; j++) { + const id = Utils.randomId() + const x = ser[i].data[j].x + const y = { + y1: ser[i].data[j].y[0], + y2: ser[i].data[j].y[1], + rangeName: id + } + + // mutating config object by adding a new property + // TODO: As this is specifically for timeline rangebar charts, update the docs mentioning the series only supports xy format + ser[i].data[j].rangeName = id + + const uI = uniqueKeys.findIndex((t) => t.x === x) + uniqueKeys[uI].y.push(y) + + rangeStart.push(y.y1) + rangeEnd.push(y.y2) + } + } + + return { + start: rangeStart, + end: rangeEnd, + rangeUniques: uniqueKeys + } + } + + handleCandleStickBoxDataFormat(format, ser, i) { + const w = this.w + const isBoxPlot = + w.config.chart.type === 'boxPlot' || w.config.series[i].type === 'boxPlot' + + const serO = [] + const serH = [] + const serM = [] + const serL = [] + const serC = [] + + if (format === 'array') { + if ( + (isBoxPlot && ser[i].data[0].length === 6) || + (!isBoxPlot && ser[i].data[0].length === 5) + ) { + for (let j = 0; j < ser[i].data.length; j++) { + serO.push(ser[i].data[j][1]) + serH.push(ser[i].data[j][2]) + + if (isBoxPlot) { + serM.push(ser[i].data[j][3]) + serL.push(ser[i].data[j][4]) + serC.push(ser[i].data[j][5]) + } else { + serL.push(ser[i].data[j][3]) + serC.push(ser[i].data[j][4]) + } + } + } else { + for (let j = 0; j < ser[i].data.length; j++) { + if (Array.isArray(ser[i].data[j][1])) { + serO.push(ser[i].data[j][1][0]) + serH.push(ser[i].data[j][1][1]) + if (isBoxPlot) { + serM.push(ser[i].data[j][1][2]) + serL.push(ser[i].data[j][1][3]) + serC.push(ser[i].data[j][1][4]) + } else { + serL.push(ser[i].data[j][1][2]) + serC.push(ser[i].data[j][1][3]) + } + } + } + } + } else if (format === 'xy') { + for (let j = 0; j < ser[i].data.length; j++) { + if (Array.isArray(ser[i].data[j].y)) { + serO.push(ser[i].data[j].y[0]) + serH.push(ser[i].data[j].y[1]) + if (isBoxPlot) { + serM.push(ser[i].data[j].y[2]) + serL.push(ser[i].data[j].y[3]) + serC.push(ser[i].data[j].y[4]) + } else { + serL.push(ser[i].data[j].y[2]) + serC.push(ser[i].data[j].y[3]) + } + } + } + } + + return { + o: serO, + h: serH, + m: serM, + l: serL, + c: serC + } + } + + parseDataAxisCharts(ser, ctx = this.ctx) { + const cnf = this.w.config + const gl = this.w.globals + + const dt = new DateTime(ctx) + + const xlabels = + cnf.labels.length > 0 ? cnf.labels.slice() : cnf.xaxis.categories.slice() + + gl.isRangeBar = cnf.chart.type === 'rangeBar' && gl.isBarHorizontal + + gl.hasGroups = + cnf.xaxis.type === 'category' && cnf.xaxis.group.groups.length > 0 + if (gl.hasGroups) { + gl.groups = cnf.xaxis.group.groups + } + + const handleDates = () => { + for (let j = 0; j < xlabels.length; j++) { + if (typeof xlabels[j] === 'string') { + // user provided date strings + let isDate = dt.isValidDate(xlabels[j]) + if (isDate) { + this.twoDSeriesX.push(dt.parseDate(xlabels[j])) + } else { + throw new Error( + 'You have provided invalid Date format. Please provide a valid JavaScript Date' + ) + } + } else { + // user provided timestamps + this.twoDSeriesX.push(xlabels[j]) + } + } + } + + for (let i = 0; i < ser.length; i++) { + this.twoDSeries = [] + this.twoDSeriesX = [] + this.threeDSeries = [] + + if (typeof ser[i].data === 'undefined') { + console.error( + "It is a possibility that you may have not included 'data' property in series." + ) + return + } + + if ( + cnf.chart.type === 'rangeBar' || + cnf.chart.type === 'rangeArea' || + ser[i].type === 'rangeBar' || + ser[i].type === 'rangeArea' + ) { + gl.isRangeData = true + this.handleRangeData(ser, i) + } + + if (this.isMultiFormat()) { + if (this.isFormat2DArray()) { + this.handleFormat2DArray(ser, i) + } else if (this.isFormatXY()) { + this.handleFormatXY(ser, i) + } + + if ( + cnf.chart.type === 'candlestick' || + ser[i].type === 'candlestick' || + cnf.chart.type === 'boxPlot' || + ser[i].type === 'boxPlot' + ) { + this.handleCandleStickBoxData(ser, i) + } + + gl.series.push(this.twoDSeries) + gl.labels.push(this.twoDSeriesX) + gl.seriesX.push(this.twoDSeriesX) + gl.seriesGoals = this.seriesGoals + + if (i === this.activeSeriesIndex && !this.fallbackToCategory) { + gl.isXNumeric = true + } + } else { + if (cnf.xaxis.type === 'datetime') { + // user didn't supplied [{x,y}] or [[x,y]], but single array in data. + // Also labels/categories were supplied differently + gl.isXNumeric = true + + handleDates() + + gl.seriesX.push(this.twoDSeriesX) + } else if (cnf.xaxis.type === 'numeric') { + gl.isXNumeric = true + + if (xlabels.length > 0) { + this.twoDSeriesX = xlabels + gl.seriesX.push(this.twoDSeriesX) + } + } + gl.labels.push(this.twoDSeriesX) + const singleArray = ser[i].data.map((d) => Utils.parseNumber(d)) + gl.series.push(singleArray) + } + + gl.seriesZ.push(this.threeDSeries) + + if (ser[i].name !== undefined) { + gl.seriesNames.push(ser[i].name) + } else { + gl.seriesNames.push('series-' + parseInt(i + 1, 10)) + } + + // overrided default color if user inputs color with series data + if (ser[i].color !== undefined) { + gl.seriesColors.push(ser[i].color) + } else { + gl.seriesColors.push(undefined) + } + } + + return this.w + } + + parseDataNonAxisCharts(ser) { + const gl = this.w.globals + const cnf = this.w.config + + gl.series = ser.slice() + gl.seriesNames = cnf.labels.slice() + for (let i = 0; i < gl.series.length; i++) { + if (gl.seriesNames[i] === undefined) { + gl.seriesNames.push('series-' + (i + 1)) + } + } + + return this.w + } + + /** User possibly set string categories in xaxis.categories or labels prop + * Or didn't set xaxis labels at all - in which case we manually do it. + * If user passed series data as [[3, 2], [4, 5]] or [{ x: 3, y: 55 }], + * this shouldn't be called + * @param {array} ser - the series which user passed to the config + */ + handleExternalLabelsData(ser) { + const cnf = this.w.config + const gl = this.w.globals + + if (cnf.xaxis.categories.length > 0) { + // user provided labels in xaxis.category prop + gl.labels = cnf.xaxis.categories + } else if (cnf.labels.length > 0) { + // user provided labels in labels props + gl.labels = cnf.labels.slice() + } else if (this.fallbackToCategory) { + // user provided labels in x prop in [{ x: 3, y: 55 }] data, and those labels are already stored in gl.labels[0], so just re-arrange the gl.labels array + gl.labels = gl.labels[0] + + if (gl.seriesRangeBar.length) { + gl.seriesRangeBar.map((srt) => { + srt.forEach((sr) => { + if (gl.labels.indexOf(sr.x) < 0 && sr.x) { + gl.labels.push(sr.x) + } + }) + }) + gl.labels = gl.labels.filter( + (elem, pos, arr) => arr.indexOf(elem) === pos + ) + } + + if (cnf.xaxis.convertedCatToNumeric) { + const defaults = new Defaults(cnf) + defaults.convertCatToNumericXaxis(cnf, this.ctx, gl.seriesX[0]) + this._generateExternalLabels(ser) + } + } else { + this._generateExternalLabels(ser) + } + } + + _generateExternalLabels(ser) { + const gl = this.w.globals + const cnf = this.w.config + // user didn't provided any labels, fallback to 1-2-3-4-5 + let labelArr = [] + + if (gl.axisCharts) { + if (gl.series.length > 0) { + if (this.isFormatXY()) { + // in case there is a combo chart (boxplot/scatter) + // and there are duplicated x values, we need to eliminate duplicates + const seriesDataFiltered = cnf.series.map((serie, s) => { + return serie.data.filter( + (v, i, a) => a.findIndex((t) => t.x === v.x) === i + ) + }) + + const len = seriesDataFiltered.reduce( + (p, c, i, a) => (a[p].length > c.length ? p : i), + 0 + ) + + for (let i = 0; i < seriesDataFiltered[len].length; i++) { + labelArr.push(i + 1) + } + } else { + for (let i = 0; i < gl.series[gl.maxValsInArrayIndex].length; i++) { + labelArr.push(i + 1) + } + } + } + + gl.seriesX = [] + // create gl.seriesX as it will be used in calculations of x positions + for (let i = 0; i < ser.length; i++) { + gl.seriesX.push(labelArr) + } + + // turn on the isXNumeric flag to allow minX and maxX to function properly + gl.isXNumeric = true + } + + // no series to pull labels from, put a 0-10 series + // possibly, user collapsed all series. Hence we can't work with above calc + if (labelArr.length === 0) { + labelArr = gl.axisCharts + ? [] + : gl.series.map((gls, glsi) => { + return glsi + 1 + }) + for (let i = 0; i < ser.length; i++) { + gl.seriesX.push(labelArr) + } + } + + // Finally, pass the labelArr in gl.labels which will be printed on x-axis + gl.labels = labelArr + + if (cnf.xaxis.convertedCatToNumeric) { + gl.categoryLabels = labelArr.map((l) => { + return cnf.xaxis.labels.formatter(l) + }) + } + + // Turn on this global flag to indicate no labels were provided by user + gl.noLabelsProvided = true + } + + // Segregate user provided data into appropriate vars + parseData(ser) { + let w = this.w + let cnf = w.config + let gl = w.globals + this.excludeCollapsedSeriesInYAxis() + + // If we detected string in X prop of series, we fallback to category x-axis + this.fallbackToCategory = false + + this.ctx.core.resetGlobals() + this.ctx.core.isMultipleY() + + if (gl.axisCharts) { + // axisCharts includes line / area / column / scatter + this.parseDataAxisCharts(ser) + } else { + // non-axis charts are pie / donut + this.parseDataNonAxisCharts(ser) + } + + this.coreUtils.getLargestSeries() + + // set Null values to 0 in all series when user hides/shows some series + if (cnf.chart.type === 'bar' && cnf.chart.stacked) { + const series = new Series(this.ctx) + gl.series = series.setNullSeriesToZeroValues(gl.series) + } + + this.coreUtils.getSeriesTotals() + if (gl.axisCharts) { + this.coreUtils.getStackedSeriesTotals() + } + + this.coreUtils.getPercentSeries() + + if ( + !gl.dataFormatXNumeric && + (!gl.isXNumeric || + (cnf.xaxis.type === 'numeric' && + cnf.labels.length === 0 && + cnf.xaxis.categories.length === 0)) + ) { + // x-axis labels couldn't be detected; hence try searching every option in config + this.handleExternalLabelsData(ser) + } + + // check for multiline xaxis + const catLabels = this.coreUtils.getCategoryLabels(gl.labels) + for (let l = 0; l < catLabels.length; l++) { + if (Array.isArray(catLabels[l])) { + gl.isMultiLineX = true + break + } + } + } + + excludeCollapsedSeriesInYAxis() { + const w = this.w + w.globals.ignoreYAxisIndexes = w.globals.collapsedSeries.map( + (collapsed, i) => { + // fix issue #1215 + // if stacked, not returning collapsed.index to preserve yaxis + if (this.w.globals.isMultipleYAxis && !w.config.chart.stacked) { + return collapsed.index + } + } + ) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/DataLabels.js b/public/assets/libs/apexcharts/src/modules/DataLabels.js new file mode 100644 index 0000000..c0f140f --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/DataLabels.js @@ -0,0 +1,373 @@ +import Scatter from './../charts/Scatter' +import Graphics from './Graphics' +import Filters from './Filters' + +/** + * ApexCharts DataLabels Class for drawing dataLabels on Axes based Charts. + * + * @module DataLabels + **/ + +class DataLabels { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + // When there are many datalabels to be printed, and some of them overlaps each other in the same series, this method will take care of that + // Also, when datalabels exceeds the drawable area and get clipped off, we need to adjust and move some pixels to make them visible again + dataLabelsCorrection( + x, + y, + val, + i, + dataPointIndex, + alwaysDrawDataLabel, + fontSize + ) { + let w = this.w + let graphics = new Graphics(this.ctx) + let drawnextLabel = false // + + let textRects = graphics.getTextRects(val, fontSize) + let width = textRects.width + let height = textRects.height + + if (y < 0) y = 0 + if (y > w.globals.gridHeight + height) y = w.globals.gridHeight + height / 2 + + // first value in series, so push an empty array + if (typeof w.globals.dataLabelsRects[i] === 'undefined') + w.globals.dataLabelsRects[i] = [] + + // then start pushing actual rects in that sub-array + w.globals.dataLabelsRects[i].push({ x, y, width, height }) + + let len = w.globals.dataLabelsRects[i].length - 2 + let lastDrawnIndex = + typeof w.globals.lastDrawnDataLabelsIndexes[i] !== 'undefined' + ? w.globals.lastDrawnDataLabelsIndexes[i][ + w.globals.lastDrawnDataLabelsIndexes[i].length - 1 + ] + : 0 + + if (typeof w.globals.dataLabelsRects[i][len] !== 'undefined') { + let lastDataLabelRect = w.globals.dataLabelsRects[i][lastDrawnIndex] + if ( + // next label forward and x not intersecting + x > lastDataLabelRect.x + lastDataLabelRect.width + 2 || + y > lastDataLabelRect.y + lastDataLabelRect.height + 2 || + x + width < lastDataLabelRect.x // next label is going to be drawn backwards + ) { + // the 2 indexes don't override, so OK to draw next label + drawnextLabel = true + } + } + + if (dataPointIndex === 0 || alwaysDrawDataLabel) { + drawnextLabel = true + } + + return { + x, + y, + textRects, + drawnextLabel + } + } + + drawDataLabel(pos, i, j, z = null, strokeWidth = 2) { + // this method handles line, area, bubble, scatter charts as those charts contains markers/points which have pre-defined x/y positions + // all other charts like radar / bars / heatmaps will define their own drawDataLabel routine + let w = this.w + const graphics = new Graphics(this.ctx) + + let dataLabelsConfig = w.config.dataLabels + + let x = 0 + let y = 0 + + let dataPointIndex = j + + let elDataLabelsWrap = null + + if (!dataLabelsConfig.enabled || !Array.isArray(pos.x)) { + return elDataLabelsWrap + } + + elDataLabelsWrap = graphics.group({ + class: 'apexcharts-data-labels' + }) + + for (let q = 0; q < pos.x.length; q++) { + x = pos.x[q] + dataLabelsConfig.offsetX + y = pos.y[q] + dataLabelsConfig.offsetY + strokeWidth + + if (!isNaN(x)) { + // a small hack as we have 2 points for the first val to connect it + if (j === 1 && q === 0) dataPointIndex = 0 + if (j === 1 && q === 1) dataPointIndex = 1 + + let val = w.globals.series[i][dataPointIndex] + + let text = '' + + const getText = (v) => { + return w.config.dataLabels.formatter(v, { + ctx: this.ctx, + seriesIndex: i, + dataPointIndex, + w + }) + } + + if (w.config.chart.type === 'bubble') { + val = w.globals.seriesZ[i][dataPointIndex] + text = getText(val) + + y = pos.y[q] + const scatter = new Scatter(this.ctx) + let centerTextInBubbleCoords = scatter.centerTextInBubble( + y, + i, + dataPointIndex + ) + y = centerTextInBubbleCoords.y + } else { + if (typeof val !== 'undefined') { + text = getText(val) + } + } + + this.plotDataLabelsText({ + x, + y, + text, + i, + j: dataPointIndex, + parent: elDataLabelsWrap, + offsetCorrection: true, + dataLabelsConfig: w.config.dataLabels + }) + } + } + + return elDataLabelsWrap + } + + plotDataLabelsText(opts) { + let w = this.w + let graphics = new Graphics(this.ctx) + let { + x, + y, + i, + j, + text, + textAnchor, + fontSize, + parent, + dataLabelsConfig, + color, + alwaysDrawDataLabel, + offsetCorrection + } = opts + + if (Array.isArray(w.config.dataLabels.enabledOnSeries)) { + if (w.config.dataLabels.enabledOnSeries.indexOf(i) < 0) { + return + } + } + + let correctedLabels = { + x, + y, + drawnextLabel: true, + textRects: null + } + + if (offsetCorrection) { + correctedLabels = this.dataLabelsCorrection( + x, + y, + text, + i, + j, + alwaysDrawDataLabel, + parseInt(dataLabelsConfig.style.fontSize, 10) + ) + } + + // when zoomed, we don't need to correct labels offsets, + // but if normally, labels get cropped, correct them + if (!w.globals.zoomed) { + x = correctedLabels.x + y = correctedLabels.y + } + + if (correctedLabels.textRects) { + // fixes #2264 + if ( + x < -10 - correctedLabels.textRects.width || + x > w.globals.gridWidth + correctedLabels.textRects.width + 10 + ) { + // datalabels fall outside drawing area, so draw a blank label + text = '' + } + } + + let dataLabelColor = w.globals.dataLabels.style.colors[i] + if ( + ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && + w.config.plotOptions.bar.distributed) || + w.config.dataLabels.distributed + ) { + dataLabelColor = w.globals.dataLabels.style.colors[j] + } + if (typeof dataLabelColor === 'function') { + dataLabelColor = dataLabelColor({ + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w + }) + } + if (color) { + dataLabelColor = color + } + + let offX = dataLabelsConfig.offsetX + let offY = dataLabelsConfig.offsetY + + if (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') { + // for certain chart types, we handle offsets while calculating datalabels pos + // why? because bars/column may have negative values and based on that + // offsets becomes reversed + offX = 0 + offY = 0 + } + + if (correctedLabels.drawnextLabel) { + let dataLabelText = graphics.drawText({ + width: 100, + height: parseInt(dataLabelsConfig.style.fontSize, 10), + x: x + offX, + y: y + offY, + foreColor: dataLabelColor, + textAnchor: textAnchor || dataLabelsConfig.textAnchor, + text, + fontSize: fontSize || dataLabelsConfig.style.fontSize, + fontFamily: dataLabelsConfig.style.fontFamily, + fontWeight: dataLabelsConfig.style.fontWeight || 'normal' + }) + + dataLabelText.attr({ + class: 'apexcharts-datalabel', + cx: x, + cy: y + }) + + if (dataLabelsConfig.dropShadow.enabled) { + const textShadow = dataLabelsConfig.dropShadow + const filters = new Filters(this.ctx) + filters.dropShadow(dataLabelText, textShadow) + } + + parent.add(dataLabelText) + + if (typeof w.globals.lastDrawnDataLabelsIndexes[i] === 'undefined') { + w.globals.lastDrawnDataLabelsIndexes[i] = [] + } + + w.globals.lastDrawnDataLabelsIndexes[i].push(j) + } + } + + addBackgroundToDataLabel(el, coords) { + const w = this.w + + const bCnf = w.config.dataLabels.background + + const paddingH = bCnf.padding + const paddingV = bCnf.padding / 2 + + const width = coords.width + const height = coords.height + const graphics = new Graphics(this.ctx) + const elRect = graphics.drawRect( + coords.x - paddingH, + coords.y - paddingV / 2, + width + paddingH * 2, + height + paddingV, + bCnf.borderRadius, + w.config.chart.background === 'transparent' + ? '#fff' + : w.config.chart.background, + bCnf.opacity, + bCnf.borderWidth, + bCnf.borderColor + ) + + if (bCnf.dropShadow.enabled) { + const filters = new Filters(this.ctx) + filters.dropShadow(elRect, bCnf.dropShadow) + } + + return elRect + } + + dataLabelsBackground() { + const w = this.w + + if (w.config.chart.type === 'bubble') return + + const elDataLabels = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-datalabels text' + ) + + for (let i = 0; i < elDataLabels.length; i++) { + const el = elDataLabels[i] + const coords = el.getBBox() + let elRect = null + + if (coords.width && coords.height) { + elRect = this.addBackgroundToDataLabel(el, coords) + } + if (elRect) { + el.parentNode.insertBefore(elRect.node, el) + const background = el.getAttribute('fill') + + const shouldAnim = + w.config.chart.animations.enabled && + !w.globals.resized && + !w.globals.dataChanged + + if (shouldAnim) { + elRect.animate().attr({ fill: background }) + } else { + elRect.attr({ fill: background }) + } + el.setAttribute('fill', w.config.dataLabels.background.foreColor) + } + } + } + + bringForward() { + const w = this.w + const elDataLabelsNodes = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-datalabels' + ) + + const elSeries = w.globals.dom.baseEl.querySelector( + '.apexcharts-plot-series:last-child' + ) + + for (let i = 0; i < elDataLabelsNodes.length; i++) { + if (elSeries) { + elSeries.insertBefore(elDataLabelsNodes[i], elSeries.nextSibling) + } + } + } +} + +export default DataLabels diff --git a/public/assets/libs/apexcharts/src/modules/Events.js b/public/assets/libs/apexcharts/src/modules/Events.js new file mode 100644 index 0000000..9a6b95c --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Events.js @@ -0,0 +1,118 @@ +import Utils from '../utils/Utils' + +export default class Events { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.documentEvent = Utils.bind(this.documentEvent, this) + } + + addEventListener(name, handler) { + const w = this.w + + if (w.globals.events.hasOwnProperty(name)) { + w.globals.events[name].push(handler) + } else { + w.globals.events[name] = [handler] + } + } + + removeEventListener(name, handler) { + const w = this.w + if (!w.globals.events.hasOwnProperty(name)) { + return + } + + let index = w.globals.events[name].indexOf(handler) + if (index !== -1) { + w.globals.events[name].splice(index, 1) + } + } + + fireEvent(name, args) { + const w = this.w + + if (!w.globals.events.hasOwnProperty(name)) { + return + } + + if (!args || !args.length) { + args = [] + } + + let evs = w.globals.events[name] + let l = evs.length + + for (let i = 0; i < l; i++) { + evs[i].apply(null, args) + } + } + + setupEventHandlers() { + const w = this.w + const me = this.ctx + + let clickableArea = w.globals.dom.baseEl.querySelector(w.globals.chartClass) + + this.ctx.eventList.forEach((event) => { + clickableArea.addEventListener( + event, + (e) => { + const opts = Object.assign({}, w, { + seriesIndex: w.globals.capturedSeriesIndex, + dataPointIndex: w.globals.capturedDataPointIndex + }) + + if (e.type === 'mousemove' || e.type === 'touchmove') { + if (typeof w.config.chart.events.mouseMove === 'function') { + w.config.chart.events.mouseMove(e, me, opts) + } + } else if (e.type === 'mouseleave' || e.type === 'touchleave') { + if (typeof w.config.chart.events.mouseLeave === 'function') { + w.config.chart.events.mouseLeave(e, me, opts) + } + } else if ( + (e.type === 'mouseup' && e.which === 1) || + e.type === 'touchend' + ) { + if (typeof w.config.chart.events.click === 'function') { + w.config.chart.events.click(e, me, opts) + } + me.ctx.events.fireEvent('click', [e, me, opts]) + } + }, + { capture: false, passive: true } + ) + }) + + this.ctx.eventList.forEach((event) => { + w.globals.dom.baseEl.addEventListener(event, this.documentEvent, { + passive: true + }) + }) + + this.ctx.core.setupBrushHandler() + } + + documentEvent(e) { + const w = this.w + const target = e.target.className + + if (e.type === 'click') { + let elMenu = w.globals.dom.baseEl.querySelector('.apexcharts-menu') + if ( + elMenu && + elMenu.classList.contains('apexcharts-menu-open') && + target !== 'apexcharts-menu-icon' + ) { + elMenu.classList.remove('apexcharts-menu-open') + } + } + + w.globals.clientX = + e.type === 'touchmove' ? e.touches[0].clientX : e.clientX + w.globals.clientY = + e.type === 'touchmove' ? e.touches[0].clientY : e.clientY + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Exports.js b/public/assets/libs/apexcharts/src/modules/Exports.js new file mode 100644 index 0000000..c38ce7f --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Exports.js @@ -0,0 +1,364 @@ +import Data from '../modules/Data' +import AxesUtils from '../modules/axes/AxesUtils' +import Series from '../modules/Series' +import Utils from '../utils/Utils' + +class Exports { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + scaleSvgNode(svg, scale) { + // get current both width and height of the svg + let svgWidth = parseFloat(svg.getAttributeNS(null, 'width')) + let svgHeight = parseFloat(svg.getAttributeNS(null, 'height')) + // set new width and height based on the scale + svg.setAttributeNS(null, 'width', svgWidth * scale) + svg.setAttributeNS(null, 'height', svgHeight * scale) + svg.setAttributeNS(null, 'viewBox', '0 0 ' + svgWidth + ' ' + svgHeight) + } + + fixSvgStringForIe11(svgData) { + // IE11 generates broken SVG that we have to fix by using regex + if (!Utils.isIE11()) { + // not IE11 - noop + return svgData.replace(/ /g, ' ') + } + + // replace second occurrence of "xmlns" attribute with "xmlns:xlink" with correct url + add xmlns:svgjs + let nXmlnsSeen = 0 + let result = svgData.replace( + /xmlns="http:\/\/www.w3.org\/2000\/svg"/g, + (match) => { + nXmlnsSeen++ + return nXmlnsSeen === 2 + ? 'xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev"' + : match + } + ) + + // remove the invalid empty namespace declarations + result = result.replace(/xmlns:NS\d+=""/g, '') + // remove these broken namespaces from attributes + result = result.replace(/NS\d+:(\w+:\w+=")/g, '$1') + + return result + } + + getSvgString(scale) { + let svgString = this.w.globals.dom.Paper.svg() + // in case the scale is different than 1, the svg needs to be rescaled + if (scale !== 1) { + // clone the svg node so it remains intact in the UI + const svgNode = this.w.globals.dom.Paper.node.cloneNode(true) + // scale the image + this.scaleSvgNode(svgNode, scale) + // get the string representation of the svgNode + svgString = new XMLSerializer().serializeToString(svgNode) + } + return this.fixSvgStringForIe11(svgString) + } + + cleanup() { + const w = this.w + + // hide some elements to avoid printing them on exported svg + const xcrosshairs = w.globals.dom.baseEl.getElementsByClassName( + 'apexcharts-xcrosshairs' + ) + const ycrosshairs = w.globals.dom.baseEl.getElementsByClassName( + 'apexcharts-ycrosshairs' + ) + const zoomSelectionRects = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-zoom-rect, .apexcharts-selection-rect' + ) + Array.prototype.forEach.call(zoomSelectionRects, (z) => { + z.setAttribute('width', 0) + }) + if (xcrosshairs && xcrosshairs[0]) { + xcrosshairs[0].setAttribute('x', -500) + xcrosshairs[0].setAttribute('x1', -500) + xcrosshairs[0].setAttribute('x2', -500) + } + if (ycrosshairs && ycrosshairs[0]) { + ycrosshairs[0].setAttribute('y', -100) + ycrosshairs[0].setAttribute('y1', -100) + ycrosshairs[0].setAttribute('y2', -100) + } + } + + svgUrl() { + this.cleanup() + + const svgData = this.getSvgString() + const svgBlob = new Blob([svgData], { type: 'image/svg+xml;charset=utf-8' }) + return URL.createObjectURL(svgBlob) + } + + dataURI(options) { + return new Promise((resolve) => { + const w = this.w + + const scale = options + ? options.scale || options.width / w.globals.svgWidth + : 1 + + this.cleanup() + const canvas = document.createElement('canvas') + canvas.width = w.globals.svgWidth * scale + canvas.height = parseInt(w.globals.dom.elWrap.style.height, 10) * scale // because of resizeNonAxisCharts + + const canvasBg = + w.config.chart.background === 'transparent' + ? '#fff' + : w.config.chart.background + + let ctx = canvas.getContext('2d') + ctx.fillStyle = canvasBg + ctx.fillRect(0, 0, canvas.width * scale, canvas.height * scale) + + const svgData = this.getSvgString(scale) + + if (window.canvg && Utils.isIE11()) { + // use canvg as a polyfill to workaround ie11 considering a canvas with loaded svg 'unsafe' + // without ignoreClear we lose our background color; without ignoreDimensions some grid lines become invisible + let v = window.canvg.Canvg.fromString(ctx, svgData, { + ignoreClear: true, + ignoreDimensions: true + }) + // render the svg to canvas + v.start() + + let blob = canvas.msToBlob() + // dispose - missing this will cause a memory leak + v.stop() + + resolve({ blob }) + } else { + const svgUrl = 'data:image/svg+xml,' + encodeURIComponent(svgData) + let img = new Image() + img.crossOrigin = 'anonymous' + + img.onload = () => { + ctx.drawImage(img, 0, 0) + + if (canvas.msToBlob) { + // IE and Edge can't navigate to data urls, so we return the blob instead + let blob = canvas.msToBlob() + resolve({ blob }) + } else { + let imgURI = canvas.toDataURL('image/png') + resolve({ imgURI }) + } + } + + img.src = svgUrl + } + }) + } + + exportToSVG() { + this.triggerDownload( + this.svgUrl(), + this.w.config.chart.toolbar.export.svg.filename, + '.svg' + ) + } + + exportToPng() { + this.dataURI().then(({ imgURI, blob }) => { + if (blob) { + navigator.msSaveOrOpenBlob(blob, this.w.globals.chartID + '.png') + } else { + this.triggerDownload( + imgURI, + this.w.config.chart.toolbar.export.png.filename, + '.png' + ) + } + }) + } + + exportToCSV({ series, columnDelimiter, lineDelimiter = '\n' }) { + const w = this.w + + let columns = [] + let rows = [] + let result = '' + let universalBOM = '\uFEFF' + + const isTimeStamp = (num) => { + return w.config.xaxis.type === 'datetime' && String(num).length >= 10 + } + const dataFormat = new Data(this.ctx) + + const axesUtils = new AxesUtils(this.ctx) + const getCat = (i) => { + let cat = '' + + // pie / donut/ radial + if (!w.globals.axisCharts) { + cat = w.config.labels[i] + } else { + // xy charts + + // non datetime + if ( + w.config.xaxis.type === 'category' || + w.config.xaxis.convertedCatToNumeric + ) { + if (w.globals.isBarHorizontal) { + let lbFormatter = w.globals.yLabelFormatters[0] + let sr = new Series(this.ctx) + let activeSeries = sr.getActiveConfigSeriesIndex() + + cat = lbFormatter(w.globals.labels[i], { + seriesIndex: activeSeries, + dataPointIndex: i, + w + }) + } else { + cat = axesUtils.getLabel( + w.globals.labels, + w.globals.timescaleLabels, + 0, + i + ).text + } + } + + // datetime, but labels specified in categories or labels + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.categories.length) { + cat = w.config.xaxis.categories[i] + } else if (w.config.labels.length) { + cat = w.config.labels[i] + } + } + } + + if (Array.isArray(cat)) { + cat = cat.join(' ') + } + + return Utils.isNumber(cat) ? cat : cat.split(columnDelimiter).join('') + } + + const handleAxisRowsColumns = (s, sI) => { + if (columns.length && sI === 0) { + rows.push(columns.join(columnDelimiter)) + } + + if (s.data && s.data.length) { + for (let i = 0; i < s.data.length; i++) { + columns = [] + + let cat = getCat(i) + if (!cat) { + if (dataFormat.isFormatXY()) { + cat = series[sI].data[i].x + } else if (dataFormat.isFormat2DArray()) { + cat = series[sI].data[i] ? series[sI].data[i][0] : '' + } + } + + if (sI === 0) { + columns.push( + isTimeStamp(cat) + ? w.config.chart.toolbar.export.csv.dateFormatter(cat) + : Utils.isNumber(cat) + ? cat + : cat.split(columnDelimiter).join('') + ) + + for (let ci = 0; ci < w.globals.series.length; ci++) { + columns.push(w.globals.series[ci][i]) + } + } + + if ( + w.config.chart.type === 'candlestick' || + (s.type && s.type === 'candlestick') + ) { + columns.pop() + columns.push(w.globals.seriesCandleO[sI][i]) + columns.push(w.globals.seriesCandleH[sI][i]) + columns.push(w.globals.seriesCandleL[sI][i]) + columns.push(w.globals.seriesCandleC[sI][i]) + } + + if ( + w.config.chart.type === 'boxPlot' || + (s.type && s.type === 'boxPlot') + ) { + columns.pop() + columns.push(w.globals.seriesCandleO[sI][i]) + columns.push(w.globals.seriesCandleH[sI][i]) + columns.push(w.globals.seriesCandleM[sI][i]) + columns.push(w.globals.seriesCandleL[sI][i]) + columns.push(w.globals.seriesCandleC[sI][i]) + } + + if (w.config.chart.type === 'rangeBar') { + columns.pop() + columns.push(w.globals.seriesRangeStart[sI][i]) + columns.push(w.globals.seriesRangeEnd[sI][i]) + } + + if (columns.length) { + rows.push(columns.join(columnDelimiter)) + } + } + } + } + + columns.push(w.config.chart.toolbar.export.csv.headerCategory) + series.map((s, sI) => { + const sname = s.name ? s.name : `series-${sI}` + if (w.globals.axisCharts) { + columns.push( + sname.split(columnDelimiter).join('') + ? sname.split(columnDelimiter).join('') + : `series-${sI}` + ) + } + }) + + if (!w.globals.axisCharts) { + columns.push(w.config.chart.toolbar.export.csv.headerValue) + rows.push(columns.join(columnDelimiter)) + } + series.map((s, sI) => { + if (w.globals.axisCharts) { + handleAxisRowsColumns(s, sI) + } else { + columns = [] + + columns.push(w.globals.labels[sI].split(columnDelimiter).join('')) + columns.push(w.globals.series[sI]) + rows.push(columns.join(columnDelimiter)) + } + }) + + result += rows.join(lineDelimiter) + + this.triggerDownload( + 'data:text/csv; charset=utf-8,' + + encodeURIComponent(universalBOM + result), + w.config.chart.toolbar.export.csv.filename, + '.csv' + ) + } + + triggerDownload(href, filename, ext) { + const downloadLink = document.createElement('a') + downloadLink.href = href + downloadLink.download = (filename ? filename : this.w.globals.chartID) + ext + document.body.appendChild(downloadLink) + downloadLink.click() + document.body.removeChild(downloadLink) + } +} + +export default Exports diff --git a/public/assets/libs/apexcharts/src/modules/Fill.js b/public/assets/libs/apexcharts/src/modules/Fill.js new file mode 100644 index 0000000..ce8d51b --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Fill.js @@ -0,0 +1,381 @@ +import Graphics from './Graphics' +import Utils from '../utils/Utils' + +/** + * ApexCharts Fill Class for setting fill options of the paths. + * + * @module Fill + **/ + +class Fill { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.opts = null + this.seriesIndex = 0 + } + + clippedImgArea(params) { + let w = this.w + let cnf = w.config + + let svgW = parseInt(w.globals.gridWidth, 10) + let svgH = parseInt(w.globals.gridHeight, 10) + + let size = svgW > svgH ? svgW : svgH + + let fillImg = params.image + + let imgWidth = 0 + let imgHeight = 0 + if ( + typeof params.width === 'undefined' && + typeof params.height === 'undefined' + ) { + if ( + cnf.fill.image.width !== undefined && + cnf.fill.image.height !== undefined + ) { + imgWidth = cnf.fill.image.width + 1 + imgHeight = cnf.fill.image.height + } else { + imgWidth = size + 1 + imgHeight = size + } + } else { + imgWidth = params.width + imgHeight = params.height + } + + let elPattern = document.createElementNS(w.globals.SVGNS, 'pattern') + + Graphics.setAttrs(elPattern, { + id: params.patternID, + patternUnits: params.patternUnits + ? params.patternUnits + : 'userSpaceOnUse', + width: imgWidth + 'px', + height: imgHeight + 'px' + }) + + let elImage = document.createElementNS(w.globals.SVGNS, 'image') + elPattern.appendChild(elImage) + + elImage.setAttributeNS(window.SVG.xlink, 'href', fillImg) + + Graphics.setAttrs(elImage, { + x: 0, + y: 0, + preserveAspectRatio: 'none', + width: imgWidth + 'px', + height: imgHeight + 'px' + }) + + elImage.style.opacity = params.opacity + + w.globals.dom.elDefs.node.appendChild(elPattern) + } + + getSeriesIndex(opts) { + const w = this.w + + if ( + ((w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') && + w.config.plotOptions.bar.distributed) || + w.config.chart.type === 'heatmap' || + w.config.chart.type === 'treemap' + ) { + this.seriesIndex = opts.seriesNumber + } else { + this.seriesIndex = opts.seriesNumber % w.globals.series.length + } + + return this.seriesIndex + } + + fillPath(opts) { + let w = this.w + this.opts = opts + + let cnf = this.w.config + let pathFill + + let patternFill, gradientFill + + this.seriesIndex = this.getSeriesIndex(opts) + + let fillColors = this.getFillColors() + let fillColor = fillColors[this.seriesIndex] + + //override fillcolor if user inputted color with data + if (w.globals.seriesColors[this.seriesIndex] !== undefined) { + fillColor = w.globals.seriesColors[this.seriesIndex] + } + + if (typeof fillColor === 'function') { + fillColor = fillColor({ + seriesIndex: this.seriesIndex, + dataPointIndex: opts.dataPointIndex, + value: opts.value, + w + }) + } + let fillType = this.getFillType(this.seriesIndex) + let fillOpacity = Array.isArray(cnf.fill.opacity) + ? cnf.fill.opacity[this.seriesIndex] + : cnf.fill.opacity + + if (opts.color) { + fillColor = opts.color + } + + let defaultColor = fillColor + + if (fillColor.indexOf('rgb') === -1) { + if (fillColor.length < 9) { + // if the hex contains alpha and is of 9 digit, skip the opacity + defaultColor = Utils.hexToRgba(fillColor, fillOpacity) + } + } else { + if (fillColor.indexOf('rgba') > -1) { + fillOpacity = Utils.getOpacityFromRGBA(fillColor) + } + } + if (opts.opacity) fillOpacity = opts.opacity + + if (fillType === 'pattern') { + patternFill = this.handlePatternFill( + patternFill, + fillColor, + fillOpacity, + defaultColor + ) + } + + if (fillType === 'gradient') { + gradientFill = this.handleGradientFill( + fillColor, + fillOpacity, + this.seriesIndex + ) + } + + if (fillType === 'image') { + let imgSrc = cnf.fill.image.src + + let patternID = opts.patternID ? opts.patternID : '' + this.clippedImgArea({ + opacity: fillOpacity, + image: Array.isArray(imgSrc) + ? opts.seriesNumber < imgSrc.length + ? imgSrc[opts.seriesNumber] + : imgSrc[0] + : imgSrc, + width: opts.width ? opts.width : undefined, + height: opts.height ? opts.height : undefined, + patternUnits: opts.patternUnits, + patternID: `pattern${w.globals.cuid}${opts.seriesNumber + + 1}${patternID}` + }) + pathFill = `url(#pattern${w.globals.cuid}${opts.seriesNumber + + 1}${patternID})` + } else if (fillType === 'gradient') { + pathFill = gradientFill + } else if (fillType === 'pattern') { + pathFill = patternFill + } else { + pathFill = defaultColor + } + + // override pattern/gradient if opts.solid is true + if (opts.solid) { + pathFill = defaultColor + } + + return pathFill + } + + getFillType(seriesIndex) { + const w = this.w + + if (Array.isArray(w.config.fill.type)) { + return w.config.fill.type[seriesIndex] + } else { + return w.config.fill.type + } + } + + getFillColors() { + const w = this.w + const cnf = w.config + const opts = this.opts + + let fillColors = [] + + if (w.globals.comboCharts) { + if (w.config.series[this.seriesIndex].type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors + } else { + fillColors.push(w.globals.stroke.colors) + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors + } else { + fillColors.push(w.globals.fill.colors) + } + } + } else { + if (cnf.chart.type === 'line') { + if (Array.isArray(w.globals.stroke.colors)) { + fillColors = w.globals.stroke.colors + } else { + fillColors.push(w.globals.stroke.colors) + } + } else { + if (Array.isArray(w.globals.fill.colors)) { + fillColors = w.globals.fill.colors + } else { + fillColors.push(w.globals.fill.colors) + } + } + } + + // colors passed in arguments + if (typeof opts.fillColors !== 'undefined') { + fillColors = [] + if (Array.isArray(opts.fillColors)) { + fillColors = opts.fillColors.slice() + } else { + fillColors.push(opts.fillColors) + } + } + + return fillColors + } + + handlePatternFill(patternFill, fillColor, fillOpacity, defaultColor) { + const cnf = this.w.config + const opts = this.opts + let graphics = new Graphics(this.ctx) + + let patternStrokeWidth = + cnf.fill.pattern.strokeWidth === undefined + ? Array.isArray(cnf.stroke.width) + ? cnf.stroke.width[this.seriesIndex] + : cnf.stroke.width + : Array.isArray(cnf.fill.pattern.strokeWidth) + ? cnf.fill.pattern.strokeWidth[this.seriesIndex] + : cnf.fill.pattern.strokeWidth + let patternLineColor = fillColor + + if (Array.isArray(cnf.fill.pattern.style)) { + if (typeof cnf.fill.pattern.style[opts.seriesNumber] !== 'undefined') { + let pf = graphics.drawPattern( + cnf.fill.pattern.style[opts.seriesNumber], + cnf.fill.pattern.width, + cnf.fill.pattern.height, + patternLineColor, + patternStrokeWidth, + fillOpacity + ) + patternFill = pf + } else { + patternFill = defaultColor + } + } else { + patternFill = graphics.drawPattern( + cnf.fill.pattern.style, + cnf.fill.pattern.width, + cnf.fill.pattern.height, + patternLineColor, + patternStrokeWidth, + fillOpacity + ) + } + return patternFill + } + + handleGradientFill(fillColor, fillOpacity, i) { + const cnf = this.w.config + const opts = this.opts + let graphics = new Graphics(this.ctx) + let utils = new Utils() + + let type = cnf.fill.gradient.type + let gradientFrom = fillColor + let gradientTo + let opacityFrom = + cnf.fill.gradient.opacityFrom === undefined + ? fillOpacity + : Array.isArray(cnf.fill.gradient.opacityFrom) + ? cnf.fill.gradient.opacityFrom[i] + : cnf.fill.gradient.opacityFrom + + if (gradientFrom.indexOf('rgba') > -1) { + opacityFrom = Utils.getOpacityFromRGBA(gradientFrom) + } + let opacityTo = + cnf.fill.gradient.opacityTo === undefined + ? fillOpacity + : Array.isArray(cnf.fill.gradient.opacityTo) + ? cnf.fill.gradient.opacityTo[i] + : cnf.fill.gradient.opacityTo + + if ( + cnf.fill.gradient.gradientToColors === undefined || + cnf.fill.gradient.gradientToColors.length === 0 + ) { + if (cnf.fill.gradient.shade === 'dark') { + gradientTo = utils.shadeColor( + parseFloat(cnf.fill.gradient.shadeIntensity) * -1, + fillColor.indexOf('rgb') > -1 ? Utils.rgb2hex(fillColor) : fillColor + ) + } else { + gradientTo = utils.shadeColor( + parseFloat(cnf.fill.gradient.shadeIntensity), + fillColor.indexOf('rgb') > -1 ? Utils.rgb2hex(fillColor) : fillColor + ) + } + } else { + if (cnf.fill.gradient.gradientToColors[opts.seriesNumber]) { + const gToColor = cnf.fill.gradient.gradientToColors[opts.seriesNumber] + gradientTo = gToColor + if (gToColor.indexOf('rgba') > -1) { + opacityTo = Utils.getOpacityFromRGBA(gToColor) + } + } else { + gradientTo = fillColor + } + } + + if (cnf.fill.gradient.inverseColors) { + let t = gradientFrom + gradientFrom = gradientTo + gradientTo = t + } + + if (gradientFrom.indexOf('rgb') > -1) { + gradientFrom = Utils.rgb2hex(gradientFrom) + } + if (gradientTo.indexOf('rgb') > -1) { + gradientTo = Utils.rgb2hex(gradientTo) + } + + return graphics.drawGradient( + type, + gradientFrom, + gradientTo, + opacityFrom, + opacityTo, + opts.size, + cnf.fill.gradient.stops, + cnf.fill.gradient.colorStops, + i + ) + } +} + +export default Fill diff --git a/public/assets/libs/apexcharts/src/modules/Filters.js b/public/assets/libs/apexcharts/src/modules/Filters.js new file mode 100644 index 0000000..1aef073 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Filters.js @@ -0,0 +1,212 @@ +import Utils from './../utils/Utils' + +/** + * ApexCharts Filters Class for setting hover/active states on the paths. + * + * @module Formatters + **/ +class Filters { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + // create a re-usable filter which can be appended other filter effects and applied to multiple elements + getDefaultFilter(el, i) { + const w = this.w + el.unfilter(true) + + let filter = new window.SVG.Filter() + filter.size('120%', '180%', '-5%', '-40%') + + if (w.config.states.normal.filter !== 'none') { + this.applyFilter( + el, + i, + w.config.states.normal.filter.type, + w.config.states.normal.filter.value + ) + } else { + if (w.config.chart.dropShadow.enabled) { + this.dropShadow(el, w.config.chart.dropShadow, i) + } + } + } + + addNormalFilter(el, i) { + const w = this.w + + // revert shadow if it was there + // but, ignore marker as marker don't have dropshadow yet + if ( + w.config.chart.dropShadow.enabled && + !el.node.classList.contains('apexcharts-marker') + ) { + this.dropShadow(el, w.config.chart.dropShadow, i) + } + } + + // appends dropShadow to the filter object which can be chained with other filter effects + addLightenFilter(el, i, attrs) { + const w = this.w + const { intensity } = attrs + + el.unfilter(true) + + let filter = new window.SVG.Filter() + + el.filter((add) => { + const shadowAttr = w.config.chart.dropShadow + if (shadowAttr.enabled) { + filter = this.addShadow(add, i, shadowAttr) + } else { + filter = add + } + filter.componentTransfer({ + rgb: { type: 'linear', slope: 1.5, intercept: intensity } + }) + }) + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse') + + this._scaleFilterSize(el.filterer.node) + } + + // appends dropShadow to the filter object which can be chained with other filter effects + addDarkenFilter(el, i, attrs) { + const w = this.w + const { intensity } = attrs + + el.unfilter(true) + + let filter = new window.SVG.Filter() + + el.filter((add) => { + const shadowAttr = w.config.chart.dropShadow + if (shadowAttr.enabled) { + filter = this.addShadow(add, i, shadowAttr) + } else { + filter = add + } + filter.componentTransfer({ + rgb: { type: 'linear', slope: intensity } + }) + }) + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse') + this._scaleFilterSize(el.filterer.node) + } + + applyFilter(el, i, filter, intensity = 0.5) { + switch (filter) { + case 'none': { + this.addNormalFilter(el, i) + break + } + case 'lighten': { + this.addLightenFilter(el, i, { + intensity + }) + break + } + case 'darken': { + this.addDarkenFilter(el, i, { + intensity + }) + break + } + default: + // do nothing + break + } + } + + // appends dropShadow to the filter object which can be chained with other filter effects + addShadow(add, i, attrs) { + const { blur, top, left, color, opacity } = attrs + + let shadowBlur = add + .flood(Array.isArray(color) ? color[i] : color, opacity) + .composite(add.sourceAlpha, 'in') + .offset(left, top) + .gaussianBlur(blur) + .merge(add.source) + return add.blend(add.source, shadowBlur) + } + + // directly adds dropShadow to the element and returns the same element. + // the only way it is different from the addShadow() function is that addShadow is chainable to other filters, while this function discards all filters and add dropShadow + dropShadow(el, attrs, i = 0) { + let { top, left, blur, color, opacity, noUserSpaceOnUse } = attrs + const w = this.w + + el.unfilter(true) + + if (Utils.isIE() && w.config.chart.type === 'radialBar') { + // in radialbar charts, dropshadow is clipping actual drawing in IE + return el + } + + color = Array.isArray(color) ? color[i] : color + + el.filter((add) => { + let shadowBlur = null + if (Utils.isSafari() || Utils.isFirefox() || Utils.isIE()) { + // safari/firefox/IE have some alternative way to use this filter + shadowBlur = add + .flood(color, opacity) + .composite(add.sourceAlpha, 'in') + .offset(left, top) + .gaussianBlur(blur) + } else { + shadowBlur = add + .flood(color, opacity) + .composite(add.sourceAlpha, 'in') + .offset(left, top) + .gaussianBlur(blur) + .merge(add.source) + } + + add.blend(add.source, shadowBlur) + }) + + if (!noUserSpaceOnUse) { + el.filterer.node.setAttribute('filterUnits', 'userSpaceOnUse') + } + + this._scaleFilterSize(el.filterer.node) + + return el + } + + setSelectionFilter(el, realIndex, dataPointIndex) { + const w = this.w + if (typeof w.globals.selectedDataPoints[realIndex] !== 'undefined') { + if ( + w.globals.selectedDataPoints[realIndex].indexOf(dataPointIndex) > -1 + ) { + el.node.setAttribute('selected', true) + let activeFilter = w.config.states.active.filter + if (activeFilter !== 'none') { + this.applyFilter(el, realIndex, activeFilter.type, activeFilter.value) + } + } + } + } + + _scaleFilterSize(el) { + const setAttributes = (attrs) => { + for (let key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]) + } + } + } + setAttributes({ + width: '200%', + height: '200%', + x: '-50%', + y: '-50%' + }) + } +} + +export default Filters diff --git a/public/assets/libs/apexcharts/src/modules/Formatters.js b/public/assets/libs/apexcharts/src/modules/Formatters.js new file mode 100644 index 0000000..70d26e9 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Formatters.js @@ -0,0 +1,182 @@ +import DateTime from '../utils/DateTime' +import Utils from '../utils/Utils' + +/** + * ApexCharts Formatter Class for setting value formatters for axes as well as tooltips. + * + * @module Formatters + **/ + +class Formatters { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + this.tooltipKeyFormat = 'dd MMM' + } + + xLabelFormat(fn, val, timestamp, opts) { + let w = this.w + + if (w.config.xaxis.type === 'datetime') { + if (w.config.xaxis.labels.formatter === undefined) { + // if user has not specified a custom formatter, use the default tooltip.x.format + if (w.config.tooltip.x.formatter === undefined) { + let datetimeObj = new DateTime(this.ctx) + return datetimeObj.formatDate( + datetimeObj.getDate(val), + w.config.tooltip.x.format + ) + } + } + } + + return fn(val, timestamp, opts) + } + + defaultGeneralFormatter(val) { + if (Array.isArray(val)) { + return val.map((v) => { + return v + }) + } else { + return val + } + } + + defaultYFormatter(v, yaxe, i) { + let w = this.w + + if (Utils.isNumber(v)) { + if (w.globals.yValueDecimal !== 0) { + v = v.toFixed( + yaxe.decimalsInFloat !== undefined + ? yaxe.decimalsInFloat + : w.globals.yValueDecimal + ) + } else if (w.globals.maxYArr[i] - w.globals.minYArr[i] < 5) { + v = v.toFixed(1) + } else { + v = v.toFixed(0) + } + } + return v + } + + setLabelFormatters() { + let w = this.w + + w.globals.xaxisTooltipFormatter = (val) => { + return this.defaultGeneralFormatter(val) + } + + w.globals.ttKeyFormatter = (val) => { + return this.defaultGeneralFormatter(val) + } + + w.globals.ttZFormatter = (val) => { + return val + } + + w.globals.legendFormatter = (val) => { + return this.defaultGeneralFormatter(val) + } + + // formatter function will always overwrite format property + if (w.config.xaxis.labels.formatter !== undefined) { + w.globals.xLabelFormatter = w.config.xaxis.labels.formatter + } else { + w.globals.xLabelFormatter = (val) => { + if (Utils.isNumber(val)) { + if ( + !w.config.xaxis.convertedCatToNumeric && + w.config.xaxis.type === 'numeric' + ) { + if (Utils.isNumber(w.config.xaxis.decimalsInFloat)) { + return val.toFixed(w.config.xaxis.decimalsInFloat) + } else { + const diff = w.globals.maxX - w.globals.minX + if (diff > 0 && diff < 100) { + return val.toFixed(1) + } + return val.toFixed(0) + } + } + + if (w.globals.isBarHorizontal) { + const range = w.globals.maxY - w.globals.minYArr + if (range < 4) { + return val.toFixed(1) + } + } + return val.toFixed(0) + } + return val + } + } + + if (typeof w.config.tooltip.x.formatter === 'function') { + w.globals.ttKeyFormatter = w.config.tooltip.x.formatter + } else { + w.globals.ttKeyFormatter = w.globals.xLabelFormatter + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + w.globals.xaxisTooltipFormatter = w.config.xaxis.tooltip.formatter + } + + if (Array.isArray(w.config.tooltip.y)) { + w.globals.ttVal = w.config.tooltip.y + } else { + if (w.config.tooltip.y.formatter !== undefined) { + w.globals.ttVal = w.config.tooltip.y + } + } + + if (w.config.tooltip.z.formatter !== undefined) { + w.globals.ttZFormatter = w.config.tooltip.z.formatter + } + + // legend formatter - if user wants to append any global values of series to legend text + if (w.config.legend.formatter !== undefined) { + w.globals.legendFormatter = w.config.legend.formatter + } + + // formatter function will always overwrite format property + w.config.yaxis.forEach((yaxe, i) => { + if (yaxe.labels.formatter !== undefined) { + w.globals.yLabelFormatters[i] = yaxe.labels.formatter + } else { + w.globals.yLabelFormatters[i] = (val) => { + if (!w.globals.xyCharts) return val + + if (Array.isArray(val)) { + return val.map((v) => { + return this.defaultYFormatter(v, yaxe, i) + }) + } else { + return this.defaultYFormatter(val, yaxe, i) + } + } + } + }) + + return w.globals + } + + heatmapLabelFormatters() { + const w = this.w + if (w.config.chart.type === 'heatmap') { + w.globals.yAxisScale[0].result = w.globals.seriesNames.slice() + + // get the longest string from the labels array and also apply label formatter to it + let longest = w.globals.seriesNames.reduce( + (a, b) => (a.length > b.length ? a : b), + 0 + ) + w.globals.yAxisScale[0].niceMax = longest + w.globals.yAxisScale[0].niceMin = longest + } + } +} + +export default Formatters diff --git a/public/assets/libs/apexcharts/src/modules/Graphics.js b/public/assets/libs/apexcharts/src/modules/Graphics.js new file mode 100644 index 0000000..cc70d37 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Graphics.js @@ -0,0 +1,842 @@ +import Animations from './Animations' +import Filters from './Filters' +import Utils from '../utils/Utils' + +/** + * ApexCharts Graphics Class for all drawing operations. + * + * @module Graphics + **/ + +class Graphics { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + drawLine( + x1, + y1, + x2, + y2, + lineColor = '#a8a8a8', + dashArray = 0, + strokeWidth = null, + strokeLineCap = 'butt' + ) { + let w = this.w + let line = w.globals.dom.Paper.line().attr({ + x1, + y1, + x2, + y2, + stroke: lineColor, + 'stroke-dasharray': dashArray, + 'stroke-width': strokeWidth, + 'stroke-linecap': strokeLineCap + }) + + return line + } + + drawRect( + x1 = 0, + y1 = 0, + x2 = 0, + y2 = 0, + radius = 0, + color = '#fefefe', + opacity = 1, + strokeWidth = null, + strokeColor = null, + strokeDashArray = 0 + ) { + let w = this.w + let rect = w.globals.dom.Paper.rect() + + rect.attr({ + x: x1, + y: y1, + width: x2 > 0 ? x2 : 0, + height: y2 > 0 ? y2 : 0, + rx: radius, + ry: radius, + opacity, + 'stroke-width': strokeWidth !== null ? strokeWidth : 0, + stroke: strokeColor !== null ? strokeColor : 'none', + 'stroke-dasharray': strokeDashArray + }) + + // fix apexcharts.js#1410 + rect.node.setAttribute('fill', color) + + return rect + } + + drawPolygon( + polygonString, + stroke = '#e1e1e1', + strokeWidth = 1, + fill = 'none' + ) { + const w = this.w + const polygon = w.globals.dom.Paper.polygon(polygonString).attr({ + fill, + stroke, + 'stroke-width': strokeWidth + }) + + return polygon + } + + drawCircle(radius, attrs = null) { + const w = this.w + + if (radius < 0) radius = 0 + const c = w.globals.dom.Paper.circle(radius * 2) + if (attrs !== null) { + c.attr(attrs) + } + return c + } + + drawPath({ + d = '', + stroke = '#a8a8a8', + strokeWidth = 1, + fill, + fillOpacity = 1, + strokeOpacity = 1, + classes, + strokeLinecap = null, + strokeDashArray = 0 + }) { + let w = this.w + + if (strokeLinecap === null) { + strokeLinecap = w.config.stroke.lineCap + } + + if (d.indexOf('undefined') > -1 || d.indexOf('NaN') > -1) { + d = `M 0 ${w.globals.gridHeight}` + } + let p = w.globals.dom.Paper.path(d).attr({ + fill, + 'fill-opacity': fillOpacity, + stroke, + 'stroke-opacity': strokeOpacity, + 'stroke-linecap': strokeLinecap, + 'stroke-width': strokeWidth, + 'stroke-dasharray': strokeDashArray, + class: classes + }) + + return p + } + + group(attrs = null) { + const w = this.w + const g = w.globals.dom.Paper.group() + + if (attrs !== null) { + g.attr(attrs) + } + return g + } + + move(x, y) { + let move = ['M', x, y].join(' ') + return move + } + + line(x, y, hORv = null) { + let line = null + if (hORv === null) { + line = ['L', x, y].join(' ') + } else if (hORv === 'H') { + line = ['H', x].join(' ') + } else if (hORv === 'V') { + line = ['V', y].join(' ') + } + return line + } + + curve(x1, y1, x2, y2, x, y) { + let curve = ['C', x1, y1, x2, y2, x, y].join(' ') + return curve + } + + quadraticCurve(x1, y1, x, y) { + let curve = ['Q', x1, y1, x, y].join(' ') + return curve + } + + arc(rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y, relative = false) { + let coord = 'A' + if (relative) coord = 'a' + + let arc = [coord, rx, ry, axisRotation, largeArcFlag, sweepFlag, x, y].join( + ' ' + ) + return arc + } + + /** + * @memberof Graphics + * @param {object} + * i = series's index + * realIndex = realIndex is series's actual index when it was drawn time. After several redraws, the iterating "i" may change in loops, but realIndex doesn't + * pathFrom = existing pathFrom to animateTo + * pathTo = new Path to which d attr will be animated from pathFrom to pathTo + * stroke = line Color + * strokeWidth = width of path Line + * fill = it can be gradient, single color, pattern or image + * animationDelay = how much to delay when starting animation (in milliseconds) + * dataChangeSpeed = for dynamic animations, when data changes + * className = class attribute to add + * @return {object} svg.js path object + **/ + renderPaths({ + j, + realIndex, + pathFrom, + pathTo, + stroke, + strokeWidth, + strokeLinecap, + fill, + animationDelay, + initialSpeed, + dataChangeSpeed, + className, + shouldClipToGrid = true, + bindEventsOnPaths = true, + drawShadow = true + }) { + let w = this.w + const filters = new Filters(this.ctx) + const anim = new Animations(this.ctx) + + let initialAnim = this.w.config.chart.animations.enabled + let dynamicAnim = + initialAnim && this.w.config.chart.animations.dynamicAnimation.enabled + + let d + let shouldAnimate = !!( + (initialAnim && !w.globals.resized) || + (dynamicAnim && w.globals.dataChanged && w.globals.shouldAnimate) + ) + + if (shouldAnimate) { + d = pathFrom + } else { + d = pathTo + w.globals.animationEnded = true + } + + let strokeDashArrayOpt = w.config.stroke.dashArray + let strokeDashArray = 0 + if (Array.isArray(strokeDashArrayOpt)) { + strokeDashArray = strokeDashArrayOpt[realIndex] + } else { + strokeDashArray = w.config.stroke.dashArray + } + + let el = this.drawPath({ + d, + stroke, + strokeWidth, + fill, + fillOpacity: 1, + classes: className, + strokeLinecap, + strokeDashArray + }) + + el.attr('index', realIndex) + + if (shouldClipToGrid) { + el.attr({ + 'clip-path': `url(#gridRectMask${w.globals.cuid})` + }) + } + + // const defaultFilter = el.filterer + + if (w.config.states.normal.filter.type !== 'none') { + filters.getDefaultFilter(el, realIndex) + } else { + if (w.config.chart.dropShadow.enabled && drawShadow) { + if ( + !w.config.chart.dropShadow.enabledOnSeries || + (w.config.chart.dropShadow.enabledOnSeries && + w.config.chart.dropShadow.enabledOnSeries.indexOf(realIndex) !== -1) + ) { + const shadow = w.config.chart.dropShadow + filters.dropShadow(el, shadow, realIndex) + } + } + } + + if (bindEventsOnPaths) { + el.node.addEventListener('mouseenter', this.pathMouseEnter.bind(this, el)) + el.node.addEventListener('mouseleave', this.pathMouseLeave.bind(this, el)) + el.node.addEventListener('mousedown', this.pathMouseDown.bind(this, el)) + } + + el.attr({ + pathTo, + pathFrom + }) + + const defaultAnimateOpts = { + el, + j, + realIndex, + pathFrom, + pathTo, + fill, + strokeWidth, + delay: animationDelay + } + + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + anim.animatePathsGradually({ + ...defaultAnimateOpts, + speed: initialSpeed + }) + } else { + if (w.globals.resized || !w.globals.dataChanged) { + anim.showDelayedElements() + } + } + + if (w.globals.dataChanged && dynamicAnim && shouldAnimate) { + anim.animatePathsGradually({ + ...defaultAnimateOpts, + speed: dataChangeSpeed + }) + } + + return el + } + + drawPattern( + style, + width, + height, + stroke = '#a8a8a8', + strokeWidth = 0, + opacity = 1 + ) { + let w = this.w + + let p = w.globals.dom.Paper.pattern(width, height, (add) => { + if (style === 'horizontalLines') { + add + .line(0, 0, height, 0) + .stroke({ color: stroke, width: strokeWidth + 1 }) + } else if (style === 'verticalLines') { + add + .line(0, 0, 0, width) + .stroke({ color: stroke, width: strokeWidth + 1 }) + } else if (style === 'slantedLines') { + add + .line(0, 0, width, height) + .stroke({ color: stroke, width: strokeWidth }) + } else if (style === 'squares') { + add + .rect(width, height) + .fill('none') + .stroke({ color: stroke, width: strokeWidth }) + } else if (style === 'circles') { + add + .circle(width) + .fill('none') + .stroke({ color: stroke, width: strokeWidth }) + } + }) + + return p + } + + drawGradient( + style, + gfrom, + gto, + opacityFrom, + opacityTo, + size = null, + stops = null, + colorStops = null, + i = 0 + ) { + let w = this.w + let g + + if (gfrom.length < 9 && gfrom.indexOf('#') === 0) { + // if the hex contains alpha and is of 9 digit, skip the opacity + gfrom = Utils.hexToRgba(gfrom, opacityFrom) + } + if (gto.length < 9 && gto.indexOf('#') === 0) { + gto = Utils.hexToRgba(gto, opacityTo) + } + + let stop1 = 0 + let stop2 = 1 + let stop3 = 1 + let stop4 = null + + if (stops !== null) { + stop1 = typeof stops[0] !== 'undefined' ? stops[0] / 100 : 0 + stop2 = typeof stops[1] !== 'undefined' ? stops[1] / 100 : 1 + stop3 = typeof stops[2] !== 'undefined' ? stops[2] / 100 : 1 + stop4 = typeof stops[3] !== 'undefined' ? stops[3] / 100 : null + } + + let radial = !!( + w.config.chart.type === 'donut' || + w.config.chart.type === 'pie' || + w.config.chart.type === 'polarArea' || + w.config.chart.type === 'bubble' + ) + + if (colorStops === null || colorStops.length === 0) { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', (stop) => { + stop.at(stop1, gfrom, opacityFrom) + stop.at(stop2, gto, opacityTo) + stop.at(stop3, gto, opacityTo) + if (stop4 !== null) { + stop.at(stop4, gfrom, opacityFrom) + } + }) + } else { + g = w.globals.dom.Paper.gradient(radial ? 'radial' : 'linear', (stop) => { + let gradientStops = Array.isArray(colorStops[i]) + ? colorStops[i] + : colorStops + gradientStops.forEach((s) => { + stop.at(s.offset / 100, s.color, s.opacity) + }) + }) + } + + if (!radial) { + if (style === 'vertical') { + g.from(0, 0).to(0, 1) + } else if (style === 'diagonal') { + g.from(0, 0).to(1, 1) + } else if (style === 'horizontal') { + g.from(0, 1).to(1, 1) + } else if (style === 'diagonal2') { + g.from(1, 0).to(0, 1) + } + } else { + let offx = w.globals.gridWidth / 2 + let offy = w.globals.gridHeight / 2 + + if (w.config.chart.type !== 'bubble') { + g.attr({ + gradientUnits: 'userSpaceOnUse', + cx: offx, + cy: offy, + r: size + }) + } else { + g.attr({ + cx: 0.5, + cy: 0.5, + r: 0.8, + fx: 0.2, + fy: 0.2 + }) + } + } + + return g + } + + getTextBasedOnMaxWidth({ text, maxWidth, fontSize, fontFamily }) { + const tRects = this.getTextRects(text, fontSize, fontFamily) + const wordWidth = tRects.width / text.length + const wordsBasedOnWidth = Math.floor(maxWidth / wordWidth) + if (maxWidth < tRects.width) { + return text.slice(0, wordsBasedOnWidth - 3) + '...' + } + return text + } + + drawText({ + x, + y, + text, + textAnchor, + fontSize, + fontFamily, + fontWeight, + foreColor, + opacity, + maxWidth, + cssClass = '', + isPlainText = true + }) { + let w = this.w + + if (typeof text === 'undefined') text = '' + + let truncatedText = text + if (!textAnchor) { + textAnchor = 'start' + } + + if (!foreColor || !foreColor.length) { + foreColor = w.config.chart.foreColor + } + fontFamily = fontFamily || w.config.chart.fontFamily + fontSize = fontSize || '11px' + fontWeight = fontWeight || 'regular' + + const commonProps = { + maxWidth, + fontSize, + fontFamily + } + let elText + if (Array.isArray(text)) { + elText = w.globals.dom.Paper.text((add) => { + for (let i = 0; i < text.length; i++) { + if (maxWidth) { + truncatedText = this.getTextBasedOnMaxWidth({ + text: text[i], + ...commonProps + }) + } + i === 0 + ? add.tspan(truncatedText) + : add.tspan(truncatedText).newLine() + } + }) + } else { + if (maxWidth) { + truncatedText = this.getTextBasedOnMaxWidth({ + text, + ...commonProps + }) + } + elText = isPlainText + ? w.globals.dom.Paper.plain(text) + : w.globals.dom.Paper.text((add) => add.tspan(truncatedText)) + } + + elText.attr({ + x, + y, + 'text-anchor': textAnchor, + 'dominant-baseline': 'auto', + 'font-size': fontSize, + 'font-family': fontFamily, + 'font-weight': fontWeight, + fill: foreColor, + class: 'apexcharts-text ' + cssClass + }) + + elText.node.style.fontFamily = fontFamily + elText.node.style.opacity = opacity + + return elText + } + + drawMarker(x, y, opts) { + x = x || 0 + let size = opts.pSize || 0 + + let elPoint = null + + if (opts.shape === 'square' || opts.shape === 'rect') { + let radius = opts.pRadius === undefined ? size / 2 : opts.pRadius + + if (y === null || !size) { + size = 0 + radius = 0 + } + + let nSize = size * 1.2 + radius + + let p = this.drawRect(nSize, nSize, nSize, nSize, radius) + + p.attr({ + x: x - nSize / 2, + y: y - nSize / 2, + cx: x, + cy: y, + class: opts.class ? opts.class : '', + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + stroke: opts.pointStrokeColor, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }) + + elPoint = p + } else if (opts.shape === 'circle' || !opts.shape) { + if (!Utils.isNumber(y)) { + size = 0 + y = 0 + } + + // let nSize = size - opts.pRadius / 2 < 0 ? 0 : size - opts.pRadius / 2 + + elPoint = this.drawCircle(size, { + cx: x, + cy: y, + class: opts.class ? opts.class : '', + stroke: opts.pointStrokeColor, + fill: opts.pointFillColor, + 'fill-opacity': opts.pointFillOpacity ? opts.pointFillOpacity : 1, + 'stroke-width': opts.pointStrokeWidth ? opts.pointStrokeWidth : 0, + 'stroke-opacity': opts.pointStrokeOpacity ? opts.pointStrokeOpacity : 1 + }) + } + + return elPoint + } + + pathMouseEnter(path, e) { + let w = this.w + const filters = new Filters(this.ctx) + + const i = parseInt(path.node.getAttribute('index'), 10) + const j = parseInt(path.node.getAttribute('j'), 10) + + if (typeof w.config.chart.events.dataPointMouseEnter === 'function') { + w.config.chart.events.dataPointMouseEnter(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w + }) + } + this.ctx.events.fireEvent('dataPointMouseEnter', [ + e, + this.ctx, + { seriesIndex: i, dataPointIndex: j, w } + ]) + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return + } + } + + if (w.config.states.hover.filter.type !== 'none') { + if (!w.globals.isTouchDevice) { + let hoverFilter = w.config.states.hover.filter + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value) + } + } + } + + pathMouseLeave(path, e) { + let w = this.w + const filters = new Filters(this.ctx) + + const i = parseInt(path.node.getAttribute('index'), 10) + const j = parseInt(path.node.getAttribute('j'), 10) + + if (typeof w.config.chart.events.dataPointMouseLeave === 'function') { + w.config.chart.events.dataPointMouseLeave(e, this.ctx, { + seriesIndex: i, + dataPointIndex: j, + w + }) + } + this.ctx.events.fireEvent('dataPointMouseLeave', [ + e, + this.ctx, + { seriesIndex: i, dataPointIndex: j, w } + ]) + + if (w.config.states.active.filter.type !== 'none') { + if (path.node.getAttribute('selected') === 'true') { + return + } + } + + if (w.config.states.hover.filter.type !== 'none') { + filters.getDefaultFilter(path, i) + } + } + + pathMouseDown(path, e) { + let w = this.w + const filters = new Filters(this.ctx) + + const i = parseInt(path.node.getAttribute('index'), 10) + const j = parseInt(path.node.getAttribute('j'), 10) + + let selected = 'false' + if (path.node.getAttribute('selected') === 'true') { + path.node.setAttribute('selected', 'false') + + if (w.globals.selectedDataPoints[i].indexOf(j) > -1) { + let index = w.globals.selectedDataPoints[i].indexOf(j) + w.globals.selectedDataPoints[i].splice(index, 1) + } + } else { + if ( + !w.config.states.active.allowMultipleDataPointsSelection && + w.globals.selectedDataPoints.length > 0 + ) { + w.globals.selectedDataPoints = [] + const elPaths = w.globals.dom.Paper.select('.apexcharts-series path') + .members + const elCircles = w.globals.dom.Paper.select( + '.apexcharts-series circle, .apexcharts-series rect' + ).members + + const deSelect = (els) => { + Array.prototype.forEach.call(els, (el) => { + el.node.setAttribute('selected', 'false') + filters.getDefaultFilter(el, i) + }) + } + deSelect(elPaths) + deSelect(elCircles) + } + + path.node.setAttribute('selected', 'true') + selected = 'true' + + if (typeof w.globals.selectedDataPoints[i] === 'undefined') { + w.globals.selectedDataPoints[i] = [] + } + w.globals.selectedDataPoints[i].push(j) + } + + if (selected === 'true') { + let activeFilter = w.config.states.active.filter + if (activeFilter !== 'none') { + filters.applyFilter(path, i, activeFilter.type, activeFilter.value) + } else { + // Reapply the hover filter in case it was removed by `deselect`when there is no active filter and it is not a touch device + if (w.config.states.hover.filter !== 'none') { + if (!w.globals.isTouchDevice) { + var hoverFilter = w.config.states.hover.filter + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value) + } + } + } + } else { + // If the item was deselected, apply hover state filter if it is not a touch device + if (w.config.states.active.filter.type !== 'none') { + if ( + w.config.states.hover.filter.type !== 'none' && + !w.globals.isTouchDevice + ) { + var hoverFilter = w.config.states.hover.filter + filters.applyFilter(path, i, hoverFilter.type, hoverFilter.value) + } else { + filters.getDefaultFilter(path, i) + } + } + } + + if (typeof w.config.chart.events.dataPointSelection === 'function') { + w.config.chart.events.dataPointSelection(e, this.ctx, { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w + }) + } + + if (e) { + this.ctx.events.fireEvent('dataPointSelection', [ + e, + this.ctx, + { + selectedDataPoints: w.globals.selectedDataPoints, + seriesIndex: i, + dataPointIndex: j, + w + } + ]) + } + } + + rotateAroundCenter(el) { + let coord = {} + if (el && typeof el.getBBox === 'function') { + coord = el.getBBox() + } + let x = coord.x + coord.width / 2 + let y = coord.y + coord.height / 2 + + return { + x, + y + } + } + + static setAttrs(el, attrs) { + for (let key in attrs) { + if (attrs.hasOwnProperty(key)) { + el.setAttribute(key, attrs[key]) + } + } + } + + getTextRects(text, fontSize, fontFamily, transform, useBBox = true) { + let w = this.w + let virtualText = this.drawText({ + x: -200, + y: -200, + text, + textAnchor: 'start', + fontSize, + fontFamily, + foreColor: '#fff', + opacity: 0 + }) + + if (transform) { + virtualText.attr('transform', transform) + } + w.globals.dom.Paper.add(virtualText) + + let rect = virtualText.bbox() + if (!useBBox) { + rect = virtualText.node.getBoundingClientRect() + } + + virtualText.remove() + + return { + width: rect.width, + height: rect.height + } + } + + /** + * append ... to long text + * http://stackoverflow.com/questions/9241315/trimming-text-to-a-given-pixel-width-in-svg + * @memberof Graphics + **/ + placeTextWithEllipsis(textObj, textString, width) { + if (typeof textObj.getComputedTextLength !== 'function') return + textObj.textContent = textString + if (textString.length > 0) { + // ellipsis is needed + if (textObj.getComputedTextLength() >= width / 1.1) { + for (let x = textString.length - 3; x > 0; x -= 3) { + if (textObj.getSubStringLength(0, x) <= width / 1.1) { + textObj.textContent = textString.substring(0, x) + '...' + return + } + } + textObj.textContent = '.' // can't place at all + } + } + } +} + +export default Graphics diff --git a/public/assets/libs/apexcharts/src/modules/Markers.js b/public/assets/libs/apexcharts/src/modules/Markers.js new file mode 100644 index 0000000..0a098a1 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Markers.js @@ -0,0 +1,245 @@ +import Filters from './Filters' +import Graphics from './Graphics' +import Utils from '../utils/Utils' + +/** + * ApexCharts Markers Class for drawing points on y values in axes charts. + * + * @module Markers + **/ + +export default class Markers { + constructor(ctx, opts) { + this.ctx = ctx + this.w = ctx.w + } + + setGlobalMarkerSize() { + const w = this.w + + w.globals.markers.size = Array.isArray(w.config.markers.size) + ? w.config.markers.size + : [w.config.markers.size] + + if (w.globals.markers.size.length > 0) { + if (w.globals.markers.size.length < w.globals.series.length + 1) { + for (let i = 0; i <= w.globals.series.length; i++) { + if (typeof w.globals.markers.size[i] === 'undefined') { + w.globals.markers.size.push(w.globals.markers.size[0]) + } + } + } + } else { + w.globals.markers.size = w.config.series.map((s) => w.config.markers.size) + } + } + + plotChartMarkers(pointsPos, seriesIndex, j, pSize, alwaysDrawMarker = false) { + let w = this.w + + let i = seriesIndex + let p = pointsPos + let elPointsWrap = null + + let graphics = new Graphics(this.ctx) + + let point + + const hasDiscreteMarkers = + w.config.markers.discrete && w.config.markers.discrete.length + + if ( + w.globals.markers.size[seriesIndex] > 0 || + alwaysDrawMarker || + hasDiscreteMarkers + ) { + elPointsWrap = graphics.group({ + class: + alwaysDrawMarker || hasDiscreteMarkers + ? '' + : 'apexcharts-series-markers' + }) + + elPointsWrap.attr( + 'clip-path', + `url(#gridRectMarkerMask${w.globals.cuid})` + ) + } + + if (Array.isArray(p.x)) { + for (let q = 0; q < p.x.length; q++) { + let dataPointIndex = j + + // a small hack as we have 2 points for the first val to connect it + if (j === 1 && q === 0) dataPointIndex = 0 + if (j === 1 && q === 1) dataPointIndex = 1 + + let PointClasses = 'apexcharts-marker' + if ( + (w.config.chart.type === 'line' || w.config.chart.type === 'area') && + !w.globals.comboCharts && + !w.config.tooltip.intersect + ) { + PointClasses += ' no-pointer-events' + } + + const shouldMarkerDraw = Array.isArray(w.config.markers.size) + ? w.globals.markers.size[seriesIndex] > 0 + : w.config.markers.size > 0 + + if (shouldMarkerDraw || alwaysDrawMarker || hasDiscreteMarkers) { + if (Utils.isNumber(p.y[q])) { + PointClasses += ` w${Utils.randomId()}` + } else { + PointClasses = 'apexcharts-nullpoint' + } + + let opts = this.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex, + dataPointIndex + }) + + if (w.config.series[i].data[dataPointIndex]) { + if (w.config.series[i].data[dataPointIndex].fillColor) { + opts.pointFillColor = + w.config.series[i].data[dataPointIndex].fillColor + } + + if (w.config.series[i].data[dataPointIndex].strokeColor) { + opts.pointStrokeColor = + w.config.series[i].data[dataPointIndex].strokeColor + } + } + + if (pSize) { + opts.pSize = pSize + } + point = graphics.drawMarker(p.x[q], p.y[q], opts) + + point.attr('rel', dataPointIndex) + point.attr('j', dataPointIndex) + point.attr('index', seriesIndex) + point.node.setAttribute('default-marker-size', opts.pSize) + + const filters = new Filters(this.ctx) + filters.setSelectionFilter(point, seriesIndex, dataPointIndex) + this.addEvents(point) + + if (elPointsWrap) { + elPointsWrap.add(point) + } + } else { + // dynamic array creation - multidimensional + if (typeof w.globals.pointsArray[seriesIndex] === 'undefined') + w.globals.pointsArray[seriesIndex] = [] + + w.globals.pointsArray[seriesIndex].push([p.x[q], p.y[q]]) + } + } + } + + return elPointsWrap + } + + getMarkerConfig({ + cssClass, + seriesIndex, + dataPointIndex = null, + finishRadius = null + }) { + const w = this.w + let pStyle = this.getMarkerStyle(seriesIndex) + let pSize = w.globals.markers.size[seriesIndex] + + const m = w.config.markers + + // discrete markers is an option where user can specify a particular marker with different shape, size and color + + if (dataPointIndex !== null && m.discrete.length) { + m.discrete.map((marker) => { + if ( + marker.seriesIndex === seriesIndex && + marker.dataPointIndex === dataPointIndex + ) { + pStyle.pointStrokeColor = marker.strokeColor + pStyle.pointFillColor = marker.fillColor + pSize = marker.size + pStyle.pointShape = marker.shape + } + }) + } + + return { + pSize: finishRadius === null ? pSize : finishRadius, + pRadius: m.radius, + width: Array.isArray(m.width) ? m.width[seriesIndex] : m.width, + height: Array.isArray(m.height) ? m.height[seriesIndex] : m.height, + pointStrokeWidth: Array.isArray(m.strokeWidth) + ? m.strokeWidth[seriesIndex] + : m.strokeWidth, + pointStrokeColor: pStyle.pointStrokeColor, + pointFillColor: pStyle.pointFillColor, + shape: + pStyle.pointShape || + (Array.isArray(m.shape) ? m.shape[seriesIndex] : m.shape), + class: cssClass, + pointStrokeOpacity: Array.isArray(m.strokeOpacity) + ? m.strokeOpacity[seriesIndex] + : m.strokeOpacity, + pointStrokeDashArray: Array.isArray(m.strokeDashArray) + ? m.strokeDashArray[seriesIndex] + : m.strokeDashArray, + pointFillOpacity: Array.isArray(m.fillOpacity) + ? m.fillOpacity[seriesIndex] + : m.fillOpacity, + seriesIndex + } + } + + addEvents(circle) { + const w = this.w + + const graphics = new Graphics(this.ctx) + circle.node.addEventListener( + 'mouseenter', + graphics.pathMouseEnter.bind(this.ctx, circle) + ) + circle.node.addEventListener( + 'mouseleave', + graphics.pathMouseLeave.bind(this.ctx, circle) + ) + + circle.node.addEventListener( + 'mousedown', + graphics.pathMouseDown.bind(this.ctx, circle) + ) + + circle.node.addEventListener('click', w.config.markers.onClick) + circle.node.addEventListener('dblclick', w.config.markers.onDblClick) + + circle.node.addEventListener( + 'touchstart', + graphics.pathMouseDown.bind(this.ctx, circle), + { passive: true } + ) + } + + getMarkerStyle(seriesIndex) { + let w = this.w + + let colors = w.globals.markers.colors + let strokeColors = + w.config.markers.strokeColor || w.config.markers.strokeColors + + let pointStrokeColor = Array.isArray(strokeColors) + ? strokeColors[seriesIndex] + : strokeColors + let pointFillColor = Array.isArray(colors) ? colors[seriesIndex] : colors + + return { + pointStrokeColor, + pointFillColor + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Range.js b/public/assets/libs/apexcharts/src/modules/Range.js new file mode 100644 index 0000000..f0a0b97 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Range.js @@ -0,0 +1,548 @@ +import Utils from '../utils/Utils' +import DateTime from '../utils/DateTime' +import Scales from './Scales' + +/** + * Range is used to generates values between min and max. + * + * @module Range + **/ + +class Range { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.scales = new Scales(ctx) + } + + init() { + this.setYRange() + this.setXRange() + this.setZRange() + } + + getMinYMaxY( + startingIndex, + lowestY = Number.MAX_VALUE, + highestY = -Number.MAX_VALUE, + len = null + ) { + const cnf = this.w.config + const gl = this.w.globals + let maxY = -Number.MAX_VALUE + let minY = Number.MIN_VALUE + + if (len === null) { + len = startingIndex + 1 + } + const series = gl.series + let seriesMin = series + let seriesMax = series + + if (cnf.chart.type === 'candlestick') { + seriesMin = gl.seriesCandleL + seriesMax = gl.seriesCandleH + } else if (cnf.chart.type === 'boxPlot') { + seriesMin = gl.seriesCandleO + seriesMax = gl.seriesCandleC + } else if (gl.isRangeData) { + seriesMin = gl.seriesRangeStart + seriesMax = gl.seriesRangeEnd + } + + for (let i = startingIndex; i < len; i++) { + gl.dataPoints = Math.max(gl.dataPoints, series[i].length) + + if (gl.categoryLabels.length) { + gl.dataPoints = gl.categoryLabels.filter( + (label) => typeof label !== 'undefined' + ).length + } + for (let j = 0; j < gl.series[i].length; j++) { + let val = series[i][j] + if (val !== null && Utils.isNumber(val)) { + if (typeof seriesMax[i][j] !== 'undefined') { + maxY = Math.max(maxY, seriesMax[i][j]) + lowestY = Math.min(lowestY, seriesMax[i][j]) + } + if (typeof seriesMin[i][j] !== 'undefined') { + lowestY = Math.min(lowestY, seriesMin[i][j]) + highestY = Math.max(highestY, seriesMin[i][j]) + } + + if ( + this.w.config.chart.type === 'candlestick' || + this.w.config.chart.type === 'boxPlot' + ) { + if (typeof gl.seriesCandleC[i][j] !== 'undefined') { + maxY = Math.max(maxY, gl.seriesCandleO[i][j]) + maxY = Math.max(maxY, gl.seriesCandleH[i][j]) + maxY = Math.max(maxY, gl.seriesCandleL[i][j]) + maxY = Math.max(maxY, gl.seriesCandleC[i][j]) + if (this.w.config.chart.type === 'boxPlot') { + maxY = Math.max(maxY, gl.seriesCandleM[i][j]) + } + } + + // there is a combo chart and the specified series in not either candlestick or boxplot, find the max there + if ( + cnf.series[i].type && + (cnf.series[i].type !== 'candlestick' || + cnf.series[i].type !== 'boxPlot') + ) { + maxY = Math.max(maxY, gl.series[i][j]) + lowestY = Math.min(lowestY, gl.series[i][j]) + } + + highestY = maxY + } + + if ( + gl.seriesGoals[i] && + gl.seriesGoals[i][j] && + Array.isArray(gl.seriesGoals[i][j]) + ) { + gl.seriesGoals[i][j].forEach((g) => { + if (minY !== Number.MIN_VALUE) { + minY = Math.min(minY, g.value) + lowestY = minY + } + maxY = Math.max(maxY, g.value) + highestY = maxY + }) + } + + if (Utils.isFloat(val)) { + val = Utils.noExponents(val) + gl.yValueDecimal = Math.max( + gl.yValueDecimal, + val.toString().split('.')[1].length + ) + } + if (minY > seriesMin[i][j] && seriesMin[i][j] < 0) { + minY = seriesMin[i][j] + } + } else { + gl.hasNullValues = true + } + } + } + + if ( + cnf.chart.type === 'rangeBar' && + gl.seriesRangeStart.length && + gl.isBarHorizontal + ) { + minY = lowestY + } + + if (cnf.chart.type === 'bar') { + if (minY < 0 && maxY < 0) { + // all negative values in a bar chart, hence make the max to 0 + maxY = 0 + } + if (minY === Number.MIN_VALUE) { + minY = 0 + } + } + + return { + minY, + maxY, + lowestY, + highestY + } + } + + setYRange() { + let gl = this.w.globals + let cnf = this.w.config + gl.maxY = -Number.MAX_VALUE + gl.minY = Number.MIN_VALUE + + let lowestYInAllSeries = Number.MAX_VALUE + + if (gl.isMultipleYAxis) { + // we need to get minY and maxY for multiple y axis + for (let i = 0; i < gl.series.length; i++) { + const minYMaxYArr = this.getMinYMaxY(i, lowestYInAllSeries, null, i + 1) + gl.minYArr.push(minYMaxYArr.minY) + gl.maxYArr.push(minYMaxYArr.maxY) + lowestYInAllSeries = minYMaxYArr.lowestY + } + } + + // and then, get the minY and maxY from all series + const minYMaxY = this.getMinYMaxY( + 0, + lowestYInAllSeries, + null, + gl.series.length + ) + gl.minY = minYMaxY.minY + gl.maxY = minYMaxY.maxY + lowestYInAllSeries = minYMaxY.lowestY + + if (cnf.chart.stacked) { + this._setStackedMinMax() + } + + // if the numbers are too big, reduce the range + // for eg, if number is between 100000-110000, putting 0 as the lowest value is not so good idea. So change the gl.minY for line/area/candlesticks/boxPlot + if ( + cnf.chart.type === 'line' || + cnf.chart.type === 'area' || + cnf.chart.type === 'candlestick' || + cnf.chart.type === 'boxPlot' || + (cnf.chart.type === 'rangeBar' && !gl.isBarHorizontal) + ) { + if ( + gl.minY === Number.MIN_VALUE && + lowestYInAllSeries !== -Number.MAX_VALUE && + lowestYInAllSeries !== gl.maxY // single value possibility + ) { + let diff = gl.maxY - lowestYInAllSeries + if ( + (lowestYInAllSeries >= 0 && lowestYInAllSeries <= 10) || + cnf.yaxis[0].min !== undefined || + cnf.yaxis[0].max !== undefined + ) { + // if minY is already 0/low value, we don't want to go negatives here - so this check is essential. + diff = 0 + } + + gl.minY = lowestYInAllSeries - (diff * 5) / 100 + + /* fix https://github.com/apexcharts/apexcharts.js/issues/614 */ + /* fix https://github.com/apexcharts/apexcharts.js/issues/968 */ + if (lowestYInAllSeries > 0 && gl.minY < 0) { + gl.minY = 0 + } + + /* fix https://github.com/apexcharts/apexcharts.js/issues/426 */ + gl.maxY = gl.maxY + (diff * 5) / 100 + } + } + + cnf.yaxis.forEach((yaxe, index) => { + // override all min/max values by user defined values (y axis) + if (yaxe.max !== undefined) { + if (typeof yaxe.max === 'number') { + gl.maxYArr[index] = yaxe.max + } else if (typeof yaxe.max === 'function') { + // fixes apexcharts.js/issues/2098 + gl.maxYArr[index] = yaxe.max( + gl.isMultipleYAxis ? gl.maxYArr[index] : gl.maxY + ) + } + + // gl.maxY is for single y-axis chart, it will be ignored in multi-yaxis + gl.maxY = gl.maxYArr[index] + } + if (yaxe.min !== undefined) { + if (typeof yaxe.min === 'number') { + gl.minYArr[index] = yaxe.min + } else if (typeof yaxe.min === 'function') { + // fixes apexcharts.js/issues/2098 + gl.minYArr[index] = yaxe.min( + gl.isMultipleYAxis + ? gl.minYArr[index] === Number.MIN_VALUE + ? 0 + : gl.minYArr[index] + : gl.minY + ) + } + // gl.minY is for single y-axis chart, it will be ignored in multi-yaxis + gl.minY = gl.minYArr[index] + } + }) + + // for horizontal bar charts, we need to check xaxis min/max as user may have specified there + if (gl.isBarHorizontal) { + const minmax = ['min', 'max'] + minmax.forEach((m) => { + if (cnf.xaxis[m] !== undefined && typeof cnf.xaxis[m] === 'number') { + m === 'min' ? (gl.minY = cnf.xaxis[m]) : (gl.maxY = cnf.xaxis[m]) + } + }) + } + + // for multi y-axis we need different scales for each + if (gl.isMultipleYAxis) { + this.scales.setMultipleYScales() + gl.minY = lowestYInAllSeries + gl.yAxisScale.forEach((scale, i) => { + gl.minYArr[i] = scale.niceMin + gl.maxYArr[i] = scale.niceMax + }) + } else { + this.scales.setYScaleForIndex(0, gl.minY, gl.maxY) + gl.minY = gl.yAxisScale[0].niceMin + gl.maxY = gl.yAxisScale[0].niceMax + gl.minYArr[0] = gl.yAxisScale[0].niceMin + gl.maxYArr[0] = gl.yAxisScale[0].niceMax + } + + return { + minY: gl.minY, + maxY: gl.maxY, + minYArr: gl.minYArr, + maxYArr: gl.maxYArr, + yAxisScale: gl.yAxisScale + } + } + + setXRange() { + let gl = this.w.globals + let cnf = this.w.config + + const isXNumeric = + cnf.xaxis.type === 'numeric' || + cnf.xaxis.type === 'datetime' || + (cnf.xaxis.type === 'category' && !gl.noLabelsProvided) || + gl.noLabelsProvided || + gl.isXNumeric + + const getInitialMinXMaxX = () => { + for (let i = 0; i < gl.series.length; i++) { + if (gl.labels[i]) { + for (let j = 0; j < gl.labels[i].length; j++) { + if (gl.labels[i][j] !== null && Utils.isNumber(gl.labels[i][j])) { + gl.maxX = Math.max(gl.maxX, gl.labels[i][j]) + gl.initialMaxX = Math.max(gl.maxX, gl.labels[i][j]) + gl.minX = Math.min(gl.minX, gl.labels[i][j]) + gl.initialMinX = Math.min(gl.minX, gl.labels[i][j]) + } + } + } + } + } + // minX maxX starts here + if (gl.isXNumeric) { + getInitialMinXMaxX() + } + + if (gl.noLabelsProvided) { + if (cnf.xaxis.categories.length === 0) { + gl.maxX = gl.labels[gl.labels.length - 1] + gl.initialMaxX = gl.labels[gl.labels.length - 1] + gl.minX = 1 + gl.initialMinX = 1 + } + } + + if (gl.isXNumeric || gl.noLabelsProvided || gl.dataFormatXNumeric) { + let ticks + + if (cnf.xaxis.tickAmount === undefined) { + ticks = Math.round(gl.svgWidth / 150) + + // no labels provided and total number of dataPoints is less than 30 + if (cnf.xaxis.type === 'numeric' && gl.dataPoints < 30) { + ticks = gl.dataPoints - 1 + } + + // this check is for when ticks exceeds total datapoints and that would result in duplicate labels + if (ticks > gl.dataPoints && gl.dataPoints !== 0) { + ticks = gl.dataPoints - 1 + } + } else if (cnf.xaxis.tickAmount === 'dataPoints') { + if (gl.series.length > 1) { + ticks = gl.series[gl.maxValsInArrayIndex].length - 1 + } + if (gl.isXNumeric) { + ticks = gl.maxX - gl.minX - 1 + } + } else { + ticks = cnf.xaxis.tickAmount + } + gl.xTickAmount = ticks + + // override all min/max values by user defined values (x axis) + if (cnf.xaxis.max !== undefined && typeof cnf.xaxis.max === 'number') { + gl.maxX = cnf.xaxis.max + } + if (cnf.xaxis.min !== undefined && typeof cnf.xaxis.min === 'number') { + gl.minX = cnf.xaxis.min + } + + // if range is provided, adjust the new minX + if (cnf.xaxis.range !== undefined) { + gl.minX = gl.maxX - cnf.xaxis.range + } + + if (gl.minX !== Number.MAX_VALUE && gl.maxX !== -Number.MAX_VALUE) { + if (cnf.xaxis.convertedCatToNumeric && !gl.dataFormatXNumeric) { + let catScale = [] + for (let i = gl.minX - 1; i < gl.maxX; i++) { + catScale.push(i + 1) + } + gl.xAxisScale = { + result: catScale, + niceMin: catScale[0], + niceMax: catScale[catScale.length - 1] + } + } else { + gl.xAxisScale = this.scales.setXScale(gl.minX, gl.maxX) + } + } else { + gl.xAxisScale = this.scales.linearScale(1, ticks, ticks) + if (gl.noLabelsProvided && gl.labels.length > 0) { + gl.xAxisScale = this.scales.linearScale( + 1, + gl.labels.length, + ticks - 1 + ) + + // this is the only place seriesX is again mutated + gl.seriesX = gl.labels.slice() + } + } + // we will still store these labels as the count for this will be different (to draw grid and labels placement) + if (isXNumeric) { + gl.labels = gl.xAxisScale.result.slice() + } + } + + if (gl.isBarHorizontal && gl.labels.length) { + gl.xTickAmount = gl.labels.length + } + + // single dataPoint + this._handleSingleDataPoint() + + // minimum x difference to calculate bar width in numeric bars + this._getMinXDiff() + + return { + minX: gl.minX, + maxX: gl.maxX + } + } + + setZRange() { + // minZ, maxZ starts here + let gl = this.w.globals + + if (!gl.isDataXYZ) return + for (let i = 0; i < gl.series.length; i++) { + if (typeof gl.seriesZ[i] !== 'undefined') { + for (let j = 0; j < gl.seriesZ[i].length; j++) { + if (gl.seriesZ[i][j] !== null && Utils.isNumber(gl.seriesZ[i][j])) { + gl.maxZ = Math.max(gl.maxZ, gl.seriesZ[i][j]) + gl.minZ = Math.min(gl.minZ, gl.seriesZ[i][j]) + } + } + } + } + } + + _handleSingleDataPoint() { + const gl = this.w.globals + const cnf = this.w.config + + if (gl.minX === gl.maxX) { + let datetimeObj = new DateTime(this.ctx) + + if (cnf.xaxis.type === 'datetime') { + const newMinX = datetimeObj.getDate(gl.minX) + if (cnf.xaxis.labels.datetimeUTC) { + newMinX.setUTCDate(newMinX.getUTCDate() - 2) + } else { + newMinX.setDate(newMinX.getDate() - 2) + } + + gl.minX = new Date(newMinX).getTime() + + const newMaxX = datetimeObj.getDate(gl.maxX) + if (cnf.xaxis.labels.datetimeUTC) { + newMaxX.setUTCDate(newMaxX.getUTCDate() + 2) + } else { + newMaxX.setDate(newMaxX.getDate() + 2) + } + gl.maxX = new Date(newMaxX).getTime() + } else if ( + cnf.xaxis.type === 'numeric' || + (cnf.xaxis.type === 'category' && !gl.noLabelsProvided) + ) { + gl.minX = gl.minX - 2 + gl.initialMinX = gl.minX + gl.maxX = gl.maxX + 2 + gl.initialMaxX = gl.maxX + } + } + } + + _getMinXDiff() { + const gl = this.w.globals + + if (gl.isXNumeric) { + // get the least x diff if numeric x axis is present + gl.seriesX.forEach((sX, i) => { + if (sX.length === 1) { + // a small hack to prevent overlapping multiple bars when there is just 1 datapoint in bar series. + // fix #811 + sX.push( + gl.seriesX[gl.maxValsInArrayIndex][ + gl.seriesX[gl.maxValsInArrayIndex].length - 1 + ] + ) + } + + // fix #983 (clone the array to avoid side effects) + const seriesX = sX.slice() + seriesX.sort((a, b) => a - b) + + seriesX.forEach((s, j) => { + if (j > 0) { + let xDiff = s - seriesX[j - 1] + if (xDiff > 0) { + gl.minXDiff = Math.min(xDiff, gl.minXDiff) + } + } + }) + if (gl.dataPoints === 1 || gl.minXDiff === Number.MAX_VALUE) { + // fixes apexcharts.js #1221 + gl.minXDiff = 0.5 + } + }) + } + } + + _setStackedMinMax() { + const gl = this.w.globals + // for stacked charts, we calculate each series's parallel values. i.e, series[0][j] + series[1][j] .... [series[i.length][j]] and get the max out of it + let stackedPoss = [] + let stackedNegs = [] + + if (gl.series.length) { + for (let j = 0; j < gl.series[gl.maxValsInArrayIndex].length; j++) { + let poss = 0 + let negs = 0 + for (let i = 0; i < gl.series.length; i++) { + if (gl.series[i][j] !== null && Utils.isNumber(gl.series[i][j])) { + // 0.0001 fixes #185 when values are very small + gl.series[i][j] > 0 + ? (poss = poss + parseFloat(gl.series[i][j]) + 0.0001) + : (negs = negs + parseFloat(gl.series[i][j])) + } + + if (i === gl.series.length - 1) { + // push all the totals to the array for future use + stackedPoss.push(poss) + stackedNegs.push(negs) + } + } + } + } + + // get the max/min out of the added parallel values + for (let z = 0; z < stackedPoss.length; z++) { + gl.maxY = Math.max(gl.maxY, stackedPoss[z]) + gl.minY = Math.min(gl.minY, stackedNegs[z]) + } + } +} + +export default Range diff --git a/public/assets/libs/apexcharts/src/modules/Responsive.js b/public/assets/libs/apexcharts/src/modules/Responsive.js new file mode 100644 index 0000000..2081a02 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Responsive.js @@ -0,0 +1,73 @@ +import Config from './settings/Config' +import Utils from '../utils/Utils' +import CoreUtils from './CoreUtils' + +/** + * ApexCharts Responsive Class to override options for different screen sizes. + * + * @module Responsive + **/ + +export default class Responsive { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + // the opts parameter if not null has to be set overriding everything + // as the opts is set by user externally + checkResponsiveConfig(opts) { + const w = this.w + const cnf = w.config + + // check if responsive config exists + if (cnf.responsive.length === 0) return + + let res = cnf.responsive.slice() + res + .sort((a, b) => + a.breakpoint > b.breakpoint ? 1 : b.breakpoint > a.breakpoint ? -1 : 0 + ) + .reverse() + + let config = new Config({}) + + const iterateResponsiveOptions = (newOptions = {}) => { + let largestBreakpoint = res[0].breakpoint + const width = window.innerWidth > 0 ? window.innerWidth : screen.width + + if (width > largestBreakpoint) { + let options = CoreUtils.extendArrayProps( + config, + w.globals.initialConfig, + w + ) + newOptions = Utils.extend(options, newOptions) + newOptions = Utils.extend(w.config, newOptions) + this.overrideResponsiveOptions(newOptions) + } else { + for (let i = 0; i < res.length; i++) { + if (width < res[i].breakpoint) { + newOptions = CoreUtils.extendArrayProps(config, res[i].options, w) + newOptions = Utils.extend(w.config, newOptions) + this.overrideResponsiveOptions(newOptions) + } + } + } + } + + if (opts) { + let options = CoreUtils.extendArrayProps(config, opts, w) + options = Utils.extend(w.config, options) + options = Utils.extend(options, opts) + iterateResponsiveOptions(options) + } else { + iterateResponsiveOptions({}) + } + } + + overrideResponsiveOptions(newOptions) { + let newConfig = new Config(newOptions).init({ responsiveOverride: true }) + this.w.config = newConfig + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Scales.js b/public/assets/libs/apexcharts/src/modules/Scales.js new file mode 100644 index 0000000..617424d --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Scales.js @@ -0,0 +1,586 @@ +import Utils from '../utils/Utils' + +export default class Range { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + // http://stackoverflow.com/questions/326679/choosing-an-attractive-linear-scale-for-a-graphs-y-axiss + // This routine creates the Y axis values for a graph. + niceScale(yMin, yMax, ticks = 10, index = 0, NO_MIN_MAX_PROVIDED) { + const w = this.w + // Determine Range + let range = Math.abs(yMax - yMin) + + ticks = this._adjustTicksForSmallRange(ticks, index, range) + + if (ticks === 'dataPoints') { + ticks = w.globals.dataPoints - 1 + } + + if ( + (yMin === Number.MIN_VALUE && yMax === 0) || + (!Utils.isNumber(yMin) && !Utils.isNumber(yMax)) || + (yMin === Number.MIN_VALUE && yMax === -Number.MAX_VALUE) + ) { + // when all values are 0 + yMin = 0 + yMax = ticks + let linearScale = this.linearScale(yMin, yMax, ticks) + return linearScale + } + + if (yMin > yMax) { + // if somehow due to some wrong config, user sent max less than min, + // adjust the min/max again + console.warn('axis.min cannot be greater than axis.max') + yMax = yMin + 0.1 + } else if (yMin === yMax) { + // If yMin and yMax are identical, then + // adjust the yMin and yMax values to actually + // make a graph. Also avoids division by zero errors. + yMin = yMin === 0 ? 0 : yMin - 0.5 // some small value + yMax = yMax === 0 ? 2 : yMax + 0.5 // some small value + } + + // Calculate Min amd Max graphical labels and graph + // increments. The number of ticks defaults to + // 10 which is the SUGGESTED value. Any tick value + // entered is used as a suggested value which is + // adjusted to be a 'pretty' value. + // + // Output will be an array of the Y axis values that + // encompass the Y values. + let result = [] + + if ( + range < 1 && + NO_MIN_MAX_PROVIDED && + (w.config.chart.type === 'candlestick' || + w.config.series[index].type === 'candlestick' || + w.config.chart.type === 'boxPlot' || + w.config.series[index].type === 'boxPlot' || + w.globals.isRangeData) + ) { + /* fix https://github.com/apexcharts/apexcharts.js/issues/430 */ + yMax = yMax * 1.01 + } + + let tiks = ticks + 1 + // Adjust ticks if needed + if (tiks < 2) { + tiks = 2 + } else if (tiks > 2) { + tiks -= 2 + } + + // Get raw step value + let tempStep = range / tiks + // Calculate pretty step value + + let mag = Math.floor(Utils.log10(tempStep)) + let magPow = Math.pow(10, mag) + let magMsd = Math.round(tempStep / magPow) + if (magMsd < 1) { + magMsd = 1 + } + let stepSize = magMsd * magPow + + // build Y label array. + // Lower and upper bounds calculations + let lb = stepSize * Math.floor(yMin / stepSize) + let ub = stepSize * Math.ceil(yMax / stepSize) + // Build array + let val = lb + + if (NO_MIN_MAX_PROVIDED && range > 2) { + while (1) { + result.push(val) + val += stepSize + if (val > ub) { + break + } + } + + return { + result, + niceMin: result[0], + niceMax: result[result.length - 1] + } + } else { + result = [] + let v = yMin + result.push(v) + let valuesDivider = Math.abs(yMax - yMin) / ticks + for (let i = 0; i <= ticks; i++) { + v = v + valuesDivider + result.push(v) + } + + if (result[result.length - 2] >= yMax) { + result.pop() + } + + return { + result, + niceMin: result[0], + niceMax: result[result.length - 1] + } + } + } + + linearScale(yMin, yMax, ticks = 10, index) { + let range = Math.abs(yMax - yMin) + + ticks = this._adjustTicksForSmallRange(ticks, index, range) + + if (ticks === 'dataPoints') { + ticks = this.w.globals.dataPoints - 1 + } + + let step = range / ticks + if (ticks === Number.MAX_VALUE) { + ticks = 10 + step = 1 + } + + let result = [] + let v = yMin + + while (ticks >= 0) { + result.push(v) + v = v + step + ticks -= 1 + } + + return { + result, + niceMin: result[0], + niceMax: result[result.length - 1] + } + } + + logarithmicScaleNice(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base) + if (yMin <= 0) yMin = Math.min(yMax, base) + + const logs = [] + + const logMax = Math.ceil(Math.log(yMax) / Math.log(base) + 1) // Get powers of base for our max and min + const logMin = Math.floor(Math.log(yMin) / Math.log(base)) + + for (let i = logMin; i < logMax; i++) { + logs.push(Math.pow(base, i)) + } + + return { + result: logs, + niceMin: logs[0], + niceMax: logs[logs.length - 1] + } + } + + logarithmicScale(yMin, yMax, base) { + // Basic validation to avoid for loop starting at -inf. + if (yMax <= 0) yMax = Math.max(yMin, base) + if (yMin <= 0) yMin = Math.min(yMax, base) + + const logs = [] + + // Get the logarithmic range. + const logMax = Math.log(yMax) / Math.log(base) + const logMin = Math.log(yMin) / Math.log(base) + + // Get the exact logarithmic range. + // (This is the exact number of multiples of the base there are between yMin and yMax). + const logRange = logMax - logMin + + // Round the logarithmic range to get the number of ticks we will create. + // If the chosen min/max values are multiples of each other WRT the base, this will be neat. + // If the chosen min/max aren't, we will at least still provide USEFUL ticks. + const ticks = Math.round(logRange) + + // Get the logarithmic spacing between ticks. + const logTickSpacing = logRange / ticks + + // Create as many ticks as there is range in the logs. + for (let i = 0, logTick = logMin; i < ticks; i++, logTick += logTickSpacing) { + logs.push(Math.pow(base, logTick)) + } + + // Add a final tick at the yMax. + logs.push(Math.pow(base, logMax)) + + return { + result: logs, + niceMin: yMin, + niceMax: yMax + } + } + + _adjustTicksForSmallRange(ticks, index, range) { + let newTicks = ticks + if ( + typeof index !== 'undefined' && + this.w.config.yaxis[index].labels.formatter && + this.w.config.yaxis[index].tickAmount === undefined + ) { + const formattedVal = this.w.config.yaxis[index].labels.formatter(1) + if ( + Utils.isNumber(Number(formattedVal)) && + !Utils.isFloat(formattedVal) + ) { + newTicks = Math.ceil(range) + } + } + return newTicks < ticks ? newTicks : ticks + } + + setYScaleForIndex(index, minY, maxY) { + const gl = this.w.globals + const cnf = this.w.config + + let y = gl.isBarHorizontal ? cnf.xaxis : cnf.yaxis[index] + + if (typeof gl.yAxisScale[index] === 'undefined') { + gl.yAxisScale[index] = [] + } + + let diff = Math.abs(maxY - minY) + + if (y.logarithmic && diff <= 5) { + gl.invalidLogScale = true + } + + if (y.logarithmic && diff > 5) { + gl.allSeriesCollapsed = false + gl.yAxisScale[index] = this.logarithmicScale(minY, maxY, y.logBase) + gl.yAxisScale[index] = y.forceNiceScale + ? this.logarithmicScaleNice(minY, maxY, y.logBase) + : this.logarithmicScale(minY, maxY, y.logBase) + } else { + if (maxY === -Number.MAX_VALUE || !Utils.isNumber(maxY)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.yAxisScale[index] = this.linearScale(0, 5, 5) + } else { + // there is some data. Turn off the allSeriesCollapsed flag + gl.allSeriesCollapsed = false + + if ((y.min !== undefined || y.max !== undefined) && !y.forceNiceScale) { + // fix https://github.com/apexcharts/apexcharts.js/issues/492 + gl.yAxisScale[index] = this.linearScale( + minY, + maxY, + y.tickAmount, + index + ) + } else { + const noMinMaxProvided = + (cnf.yaxis[index].max === undefined && + cnf.yaxis[index].min === undefined) || + cnf.yaxis[index].forceNiceScale + gl.yAxisScale[index] = this.niceScale( + minY, + maxY, + y.tickAmount ? y.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, + index, + // fix https://github.com/apexcharts/apexcharts.js/issues/397 + noMinMaxProvided + ) + } + } + } + } + + setXScale(minX, maxX) { + const w = this.w + const gl = w.globals + const x = w.config.xaxis + let diff = Math.abs(maxX - minX) + if (maxX === -Number.MAX_VALUE || !Utils.isNumber(maxX)) { + // no data in the chart. Either all series collapsed or user passed a blank array + gl.xAxisScale = this.linearScale(0, 5, 5) + } else { + gl.xAxisScale = this.linearScale( + minX, + maxX, + x.tickAmount ? x.tickAmount : diff < 5 && diff > 1 ? diff + 1 : 5, + 0 + ) + } + return gl.xAxisScale + } + + setMultipleYScales() { + const gl = this.w.globals + const cnf = this.w.config + + const minYArr = gl.minYArr.concat([]) + const maxYArr = gl.maxYArr.concat([]) + + let scalesIndices = [] + // here, we loop through the yaxis array and find the item which has "seriesName" property + cnf.yaxis.forEach((yaxe, i) => { + let index = i + cnf.series.forEach((s, si) => { + // if seriesName matches and that series is not collapsed, we use that scale + // fix issue #1215 + // proceed even if si is in gl.collapsedSeriesIndices + if (s.name === yaxe.seriesName) { + index = si + + if (i !== si) { + scalesIndices.push({ + index: si, + similarIndex: i, + alreadyExists: true + }) + } else { + scalesIndices.push({ + index: si + }) + } + } + }) + + let minY = minYArr[index] + let maxY = maxYArr[index] + + this.setYScaleForIndex(i, minY, maxY) + }) + + this.sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) + } + + sameScaleInMultipleAxes(minYArr, maxYArr, scalesIndices) { + const cnf = this.w.config + const gl = this.w.globals + + // we got the scalesIndices array in the above code, but we need to filter out the items which doesn't have same scales + let similarIndices = [] + scalesIndices.forEach((scale) => { + if (scale.alreadyExists) { + if (typeof similarIndices[scale.index] === 'undefined') { + similarIndices[scale.index] = [] + } + similarIndices[scale.index].push(scale.index) + similarIndices[scale.index].push(scale.similarIndex) + } + }) + + function intersect(a, b) { + return a.filter((value) => b.indexOf(value) !== -1) + } + + gl.yAxisSameScaleIndices = similarIndices + + similarIndices.forEach((si, i) => { + similarIndices.forEach((sj, j) => { + if (i !== j) { + if (intersect(si, sj).length > 0) { + similarIndices[i] = similarIndices[i].concat(similarIndices[j]) + } + } + }) + }) + + // then, we remove duplicates from the similarScale array + let uniqueSimilarIndices = similarIndices.map((item) => { + return item.filter((i, pos) => item.indexOf(i) === pos) + }) + + // sort further to remove whole duplicate arrays later + let sortedIndices = uniqueSimilarIndices.map((s) => s.sort()) + + // remove undefined items + similarIndices = similarIndices.filter((s) => !!s) + + let indices = sortedIndices.slice() + let stringIndices = indices.map((ind) => JSON.stringify(ind)) + indices = indices.filter( + (ind, p) => stringIndices.indexOf(JSON.stringify(ind)) === p + ) + + let sameScaleMinYArr = [] + let sameScaleMaxYArr = [] + minYArr.forEach((minYValue, yi) => { + indices.forEach((scale, i) => { + // we compare only the yIndex which exists in the indices array + if (scale.indexOf(yi) > -1) { + if (typeof sameScaleMinYArr[i] === 'undefined') { + sameScaleMinYArr[i] = [] + sameScaleMaxYArr[i] = [] + } + sameScaleMinYArr[i].push({ + key: yi, + value: minYValue + }) + sameScaleMaxYArr[i].push({ + key: yi, + value: maxYArr[yi] + }) + } + }) + }) + + let sameScaleMin = Array.apply(null, Array(indices.length)).map( + Number.prototype.valueOf, + Number.MIN_VALUE + ) + let sameScaleMax = Array.apply(null, Array(indices.length)).map( + Number.prototype.valueOf, + -Number.MAX_VALUE + ) + + sameScaleMinYArr.forEach((s, i) => { + s.forEach((sc, j) => { + sameScaleMin[i] = Math.min(sc.value, sameScaleMin[i]) + }) + }) + + sameScaleMaxYArr.forEach((s, i) => { + s.forEach((sc, j) => { + sameScaleMax[i] = Math.max(sc.value, sameScaleMax[i]) + }) + }) + + minYArr.forEach((min, i) => { + sameScaleMaxYArr.forEach((s, si) => { + let minY = sameScaleMin[si] + let maxY = sameScaleMax[si] + + if (cnf.chart.stacked) { + // for stacked charts, we need to add the values + maxY = 0 + + s.forEach((ind, k) => { + // fix incorrectly adjust y scale issue #1215 + if (ind.value !== -Number.MAX_VALUE) { + maxY += ind.value + } + if (minY !== Number.MIN_VALUE) { + minY += sameScaleMinYArr[si][k].value + } + }) + } + + s.forEach((ind, k) => { + if (s[k].key === i) { + if (cnf.yaxis[i].min !== undefined) { + if (typeof cnf.yaxis[i].min === 'function') { + minY = cnf.yaxis[i].min(gl.minY) + } else { + minY = cnf.yaxis[i].min + } + } + if (cnf.yaxis[i].max !== undefined) { + if (typeof cnf.yaxis[i].max === 'function') { + maxY = cnf.yaxis[i].max(gl.maxY) + } else { + maxY = cnf.yaxis[i].max + } + } + + this.setYScaleForIndex(i, minY, maxY) + } + }) + }) + }) + } + + // experimental feature which scales the y-axis to a min/max based on x-axis range + autoScaleY(ctx, yaxis, e) { + if (!ctx) { + ctx = this + } + + const w = ctx.w + + if (w.globals.isMultipleYAxis || w.globals.collapsedSeries.length) { + // The autoScale option for multiple y-axis is turned off as it leads to buggy behavior. + // Also, when a series is collapsed, it results in incorrect behavior. Hence turned it off for that too - fixes apexcharts.js#795 + console.warn('autoScaleYaxis is not supported in a multi-yaxis chart.') + return yaxis + } + + const seriesX = w.globals.seriesX[0] + + let isStacked = w.config.chart.stacked + + yaxis.forEach((yaxe, yi) => { + let firstXIndex = 0 + + for (let xi = 0; xi < seriesX.length; xi++) { + if (seriesX[xi] >= e.xaxis.min) { + firstXIndex = xi + break + } + } + + let initialMin = w.globals.minYArr[yi] + let initialMax = w.globals.maxYArr[yi] + let min, max + + let stackedSer = w.globals.stackedSeriesTotals + + w.globals.series.forEach((serie, sI) => { + let firstValue = serie[firstXIndex] + + if (isStacked) { + firstValue = stackedSer[firstXIndex] + min = max = firstValue + + stackedSer.forEach((y, yI) => { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + if (y > max && y !== null) max = y + if (serie[yI] < min && serie[yI] !== null) min = serie[yI] + } + }) + } else { + min = max = firstValue + + serie.forEach((y, yI) => { + if (seriesX[yI] <= e.xaxis.max && seriesX[yI] >= e.xaxis.min) { + let valMin = y + let valMax = y + w.globals.series.forEach((wS, wSI) => { + if (y !== null) { + valMin = Math.min(wS[yI], valMin) + valMax = Math.max(wS[yI], valMax) + } + }) + if (valMax > max && valMax !== null) max = valMax + if (valMin < min && valMin !== null) min = valMin + } + }) + } + + if (min === undefined && max === undefined) { + min = initialMin + max = initialMax + } + min *= min < 0 ? 1.1 : 0.9 + max *= max < 0 ? 0.9 : 1.1 + + if (max < 0 && max < initialMax) { + max = initialMax + } + if (min < 0 && min > initialMin) { + min = initialMin + } + + if (yaxis.length > 1) { + yaxis[sI].min = yaxe.min === undefined ? min : yaxe.min + yaxis[sI].max = yaxe.max === undefined ? max : yaxe.max + } else { + yaxis[0].min = yaxe.min === undefined ? min : yaxe.min + yaxis[0].max = yaxe.max === undefined ? max : yaxe.max + } + }) + }) + + return yaxis + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Series.js b/public/assets/libs/apexcharts/src/modules/Series.js new file mode 100644 index 0000000..73e487d --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Series.js @@ -0,0 +1,453 @@ +import Graphics from './Graphics' +import Utils from '../utils/Utils' + +/** + * ApexCharts Series Class for interaction with the Series of the chart. + * + * @module Series + **/ + +export default class Series { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.legendInactiveClass = 'legend-mouseover-inactive' + } + + getAllSeriesEls() { + return this.w.globals.dom.baseEl.getElementsByClassName(`apexcharts-series`) + } + + getSeriesByName(seriesName) { + return this.w.globals.dom.baseEl.querySelector( + `.apexcharts-inner .apexcharts-series[seriesName='${Utils.escapeString( + seriesName + )}']` + ) + } + + isSeriesHidden(seriesName) { + const targetElement = this.getSeriesByName(seriesName) + let realIndex = parseInt(targetElement.getAttribute('data:realIndex'), 10) + let isHidden = targetElement.classList.contains( + 'apexcharts-series-collapsed' + ) + + return { isHidden, realIndex } + } + + addCollapsedClassToSeries(elSeries, index) { + const w = this.w + function iterateOnAllCollapsedSeries(series) { + for (let cs = 0; cs < series.length; cs++) { + if (series[cs].index === index) { + elSeries.node.classList.add('apexcharts-series-collapsed') + } + } + } + + iterateOnAllCollapsedSeries(w.globals.collapsedSeries) + iterateOnAllCollapsedSeries(w.globals.ancillaryCollapsedSeries) + } + + toggleSeries(seriesName) { + let isSeriesHidden = this.isSeriesHidden(seriesName) + + this.ctx.legend.legendHelpers.toggleDataSeries( + isSeriesHidden.realIndex, + isSeriesHidden.isHidden + ) + + return isSeriesHidden.isHidden + } + + showSeries(seriesName) { + let isSeriesHidden = this.isSeriesHidden(seriesName) + + if (isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries( + isSeriesHidden.realIndex, + true + ) + } + } + + hideSeries(seriesName) { + let isSeriesHidden = this.isSeriesHidden(seriesName) + + if (!isSeriesHidden.isHidden) { + this.ctx.legend.legendHelpers.toggleDataSeries( + isSeriesHidden.realIndex, + false + ) + } + } + + resetSeries( + shouldUpdateChart = true, + shouldResetZoom = true, + shouldResetCollapsed = true + ) { + const w = this.w + + let series = Utils.clone(w.globals.initialSeries) + + w.globals.previousPaths = [] + + if (shouldResetCollapsed) { + w.globals.collapsedSeries = [] + w.globals.ancillaryCollapsedSeries = [] + w.globals.collapsedSeriesIndices = [] + w.globals.ancillaryCollapsedSeriesIndices = [] + } else { + series = this.emptyCollapsedSeries(series) + } + + w.config.series = series + + if (shouldUpdateChart) { + if (shouldResetZoom) { + w.globals.zoomed = false + this.ctx.updateHelpers.revertDefaultAxisMinMax() + } + this.ctx.updateHelpers._updateSeries( + series, + w.config.chart.animations.dynamicAnimation.enabled + ) + } + } + + emptyCollapsedSeries(series) { + const w = this.w + for (let i = 0; i < series.length; i++) { + if (w.globals.collapsedSeriesIndices.indexOf(i) > -1) { + series[i].data = [] + } + } + return series + } + toggleSeriesOnHover(e, targetElement) { + const w = this.w + + if (!targetElement) targetElement = e.target + + let allSeriesEls = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-series, .apexcharts-datalabels` + ) + + if (e.type === 'mousemove') { + let seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1 + + let seriesEl = null + let dataLabelEl = null + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[data\\:realIndex='${seriesCnt}']` + ) + dataLabelEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-datalabels[data\\:realIndex='${seriesCnt}']` + ) + } else { + seriesEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[rel='${seriesCnt + 1}']` + ) + } + } else { + seriesEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[rel='${seriesCnt + 1}'] path` + ) + } + + for (let se = 0; se < allSeriesEls.length; se++) { + allSeriesEls[se].classList.add(this.legendInactiveClass) + } + + if (seriesEl !== null) { + if (!w.globals.axisCharts) { + seriesEl.parentNode.classList.remove(this.legendInactiveClass) + } + seriesEl.classList.remove(this.legendInactiveClass) + + if (dataLabelEl !== null) { + dataLabelEl.classList.remove(this.legendInactiveClass) + } + } + } else if (e.type === 'mouseout') { + for (let se = 0; se < allSeriesEls.length; se++) { + allSeriesEls[se].classList.remove(this.legendInactiveClass) + } + } + } + + highlightRangeInSeries(e, targetElement) { + const w = this.w + const allHeatMapElements = w.globals.dom.baseEl.getElementsByClassName( + 'apexcharts-heatmap-rect' + ) + + const activeInactive = (action) => { + for (let i = 0; i < allHeatMapElements.length; i++) { + allHeatMapElements[i].classList[action](this.legendInactiveClass) + } + } + + const removeInactiveClassFromHoveredRange = (range) => { + for (let i = 0; i < allHeatMapElements.length; i++) { + const val = parseInt(allHeatMapElements[i].getAttribute('val'), 10) + if (val >= range.from && val <= range.to) { + allHeatMapElements[i].classList.remove(this.legendInactiveClass) + } + } + } + + if (e.type === 'mousemove') { + let seriesCnt = parseInt(targetElement.getAttribute('rel'), 10) - 1 + activeInactive('add') + + const range = w.config.plotOptions.heatmap.colorScale.ranges[seriesCnt] + + removeInactiveClassFromHoveredRange(range) + } else if (e.type === 'mouseout') { + activeInactive('remove') + } + } + + getActiveConfigSeriesIndex(ignoreBars = false, order = 'asc') { + const w = this.w + let activeIndex = 0 + + if (w.config.series.length > 1) { + // active series flag is required to know if user has not deactivated via legend click + let activeSeriesIndex = w.config.series.map((s, index) => { + let hasBars = false + if (ignoreBars) { + hasBars = + w.config.series[index].type === 'bar' || + w.config.series[index].type === 'column' + } + return s.data && s.data.length > 0 && !hasBars ? index : -1 + }) + + for ( + let a = order === 'asc' ? 0 : activeSeriesIndex.length - 1; + order === 'asc' ? a < activeSeriesIndex.length : a >= 0; + order === 'asc' ? a++ : a-- + ) { + if (activeSeriesIndex[a] !== -1) { + activeIndex = activeSeriesIndex[a] + break + } + } + } + + return activeIndex + } + + getPreviousPaths() { + let w = this.w + + w.globals.previousPaths = [] + + function pushPaths(seriesEls, i, type) { + let paths = seriesEls[i].childNodes + let dArr = { + type, + paths: [], + realIndex: seriesEls[i].getAttribute('data:realIndex') + } + + for (let j = 0; j < paths.length; j++) { + if (paths[j].hasAttribute('pathTo')) { + let d = paths[j].getAttribute('pathTo') + dArr.paths.push({ + d + }) + } + } + + w.globals.previousPaths.push(dArr) + } + + const getPaths = (chartType) => { + return w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-${chartType}-series .apexcharts-series` + ) + } + + const chartTypes = [ + 'line', + 'area', + 'bar', + 'rangebar', + 'candlestick', + 'radar' + ] + chartTypes.forEach((type) => { + const paths = getPaths(type) + for (let p = 0; p < paths.length; p++) { + pushPaths(paths, p, type) + } + }) + + this.handlePrevBubbleScatterPaths('bubble') + this.handlePrevBubbleScatterPaths('scatter') + + let heatTreeSeries = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-${w.config.chart.type} .apexcharts-series` + ) + + if (heatTreeSeries.length > 0) { + for (let h = 0; h < heatTreeSeries.length; h++) { + let seriesEls = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-${w.config.chart.type} .apexcharts-series[data\\:realIndex='${h}'] rect` + ) + + let dArr = [] + + for (let i = 0; i < seriesEls.length; i++) { + const getAttr = (x) => { + return seriesEls[i].getAttribute(x) + } + const rect = { + x: parseFloat(getAttr('x')), + y: parseFloat(getAttr('y')), + width: parseFloat(getAttr('width')), + height: parseFloat(getAttr('height')) + } + dArr.push({ + rect, + color: seriesEls[i].getAttribute('color') + }) + } + w.globals.previousPaths.push(dArr) + } + } + + if (!w.globals.axisCharts) { + // for non-axis charts (i.e., circular charts, pathFrom is not usable. We need whole series) + w.globals.previousPaths = w.globals.series + } + } + + handlePrevBubbleScatterPaths(type) { + const w = this.w + let paths = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-${type}-series .apexcharts-series` + ) + if (paths.length > 0) { + for (let s = 0; s < paths.length; s++) { + let seriesEls = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-${type}-series .apexcharts-series[data\\:realIndex='${s}'] circle` + ) + let dArr = [] + + for (let i = 0; i < seriesEls.length; i++) { + dArr.push({ + x: seriesEls[i].getAttribute('cx'), + y: seriesEls[i].getAttribute('cy'), + r: seriesEls[i].getAttribute('r') + }) + } + w.globals.previousPaths.push(dArr) + } + } + } + + clearPreviousPaths() { + const w = this.w + w.globals.previousPaths = [] + w.globals.allSeriesCollapsed = false + } + + handleNoData() { + const w = this.w + const me = this + + const noDataOpts = w.config.noData + const graphics = new Graphics(me.ctx) + + let x = w.globals.svgWidth / 2 + let y = w.globals.svgHeight / 2 + let textAnchor = 'middle' + + w.globals.noData = true + w.globals.animationEnded = true + + if (noDataOpts.align === 'left') { + x = 10 + textAnchor = 'start' + } else if (noDataOpts.align === 'right') { + x = w.globals.svgWidth - 10 + textAnchor = 'end' + } + + if (noDataOpts.verticalAlign === 'top') { + y = 50 + } else if (noDataOpts.verticalAlign === 'bottom') { + y = w.globals.svgHeight - 50 + } + + x = x + noDataOpts.offsetX + y = y + parseInt(noDataOpts.style.fontSize, 10) + 2 + noDataOpts.offsetY + + if (noDataOpts.text !== undefined && noDataOpts.text !== '') { + let titleText = graphics.drawText({ + x, + y, + text: noDataOpts.text, + textAnchor, + fontSize: noDataOpts.style.fontSize, + fontFamily: noDataOpts.style.fontFamily, + foreColor: noDataOpts.style.color, + opacity: 1, + class: 'apexcharts-text-nodata' + }) + + w.globals.dom.Paper.add(titleText) + } + } + + // When user clicks on legends, the collapsed series is filled with [0,0,0,...,0] + // This is because we don't want to alter the series' length as it is used at many places + setNullSeriesToZeroValues(series) { + let w = this.w + for (let sl = 0; sl < series.length; sl++) { + if (series[sl].length === 0) { + for (let j = 0; j < series[w.globals.maxValsInArrayIndex].length; j++) { + series[sl].push(0) + } + } + } + return series + } + + hasAllSeriesEqualX() { + let equalLen = true + const w = this.w + + const filteredSerX = this.filteredSeriesX() + + for (let i = 0; i < filteredSerX.length - 1; i++) { + if (filteredSerX[i][0] !== filteredSerX[i + 1][0]) { + equalLen = false + break + } + } + + w.globals.allSeriesHasEqualX = equalLen + + return equalLen + } + + filteredSeriesX() { + const w = this.w + + const filteredSeriesX = w.globals.seriesX.map((ser) => + ser.length > 0 ? ser : [] + ) + + return filteredSeriesX + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Theme.js b/public/assets/libs/apexcharts/src/modules/Theme.js new file mode 100644 index 0000000..f7138aa --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Theme.js @@ -0,0 +1,239 @@ +import Utils from '../utils/Utils' + +/** + * ApexCharts Theme Class for setting the colors and palettes. + * + * @module Theme + **/ + +export default class Theme { + constructor(ctx) { + this.ctx = ctx + this.colors = [] + this.w = ctx.w + const w = this.w + + this.isColorFn = false + this.isHeatmapDistributed = + (w.config.chart.type === 'treemap' && + w.config.plotOptions.treemap.distributed) || + (w.config.chart.type === 'heatmap' && + w.config.plotOptions.heatmap.distributed) + this.isBarDistributed = + w.config.plotOptions.bar.distributed && + (w.config.chart.type === 'bar' || w.config.chart.type === 'rangeBar') + } + + init() { + this.setDefaultColors() + } + + setDefaultColors() { + let w = this.w + let utils = new Utils() + + w.globals.dom.elWrap.classList.add( + `apexcharts-theme-${w.config.theme.mode}` + ) + + if (w.config.colors === undefined) { + w.globals.colors = this.predefined() + } else { + w.globals.colors = w.config.colors + + // if user provided a function in colors, we need to eval here + if ( + Array.isArray(w.config.colors) && + w.config.colors.length > 0 && + typeof w.config.colors[0] === 'function' + ) { + w.globals.colors = w.config.series.map((s, i) => { + let c = w.config.colors[i] + if (!c) c = w.config.colors[0] + if (typeof c === 'function') { + this.isColorFn = true + return c({ + value: w.globals.axisCharts + ? w.globals.series[i][0] + ? w.globals.series[i][0] + : 0 + : w.globals.series[i], + seriesIndex: i, + dataPointIndex: i, + w + }) + } + return c + }) + } + } + + // user defined colors in series array + w.globals.seriesColors.map((c, i) => { + if (c) { + w.globals.colors[i] = c + } + }) + + if (w.config.theme.monochrome.enabled) { + let monoArr = [] + let glsCnt = w.globals.series.length + if (this.isBarDistributed || this.isHeatmapDistributed) { + glsCnt = w.globals.series[0].length * w.globals.series.length + } + + let mainColor = w.config.theme.monochrome.color + let part = 1 / (glsCnt / w.config.theme.monochrome.shadeIntensity) + let shade = w.config.theme.monochrome.shadeTo + let percent = 0 + + for (let gsl = 0; gsl < glsCnt; gsl++) { + let newColor + + if (shade === 'dark') { + newColor = utils.shadeColor(percent * -1, mainColor) + percent = percent + part + } else { + newColor = utils.shadeColor(percent, mainColor) + percent = percent + part + } + + monoArr.push(newColor) + } + w.globals.colors = monoArr.slice() + } + const defaultColors = w.globals.colors.slice() + + // if user specified fewer colors than no. of series, push the same colors again + this.pushExtraColors(w.globals.colors) + + const colorTypes = ['fill', 'stroke'] + colorTypes.forEach((c) => { + if (w.config[c].colors === undefined) { + w.globals[c].colors = this.isColorFn ? w.config.colors : defaultColors + } else { + w.globals[c].colors = w.config[c].colors.slice() + } + this.pushExtraColors(w.globals[c].colors) + }) + + if (w.config.dataLabels.style.colors === undefined) { + w.globals.dataLabels.style.colors = defaultColors + } else { + w.globals.dataLabels.style.colors = w.config.dataLabels.style.colors.slice() + } + this.pushExtraColors(w.globals.dataLabels.style.colors, 50) + + if (w.config.plotOptions.radar.polygons.fill.colors === undefined) { + w.globals.radarPolygons.fill.colors = [ + w.config.theme.mode === 'dark' ? '#424242' : 'none' + ] + } else { + w.globals.radarPolygons.fill.colors = w.config.plotOptions.radar.polygons.fill.colors.slice() + } + this.pushExtraColors(w.globals.radarPolygons.fill.colors, 20) + + // The point colors + if (w.config.markers.colors === undefined) { + w.globals.markers.colors = defaultColors + } else { + w.globals.markers.colors = w.config.markers.colors.slice() + } + this.pushExtraColors(w.globals.markers.colors) + } + + // When the number of colors provided is less than the number of series, this method + // will push same colors to the list + // params: + // distributed is only valid for distributed column/bar charts + pushExtraColors(colorSeries, length, distributed = null) { + let w = this.w + + let len = length || w.globals.series.length + + if (distributed === null) { + distributed = + this.isBarDistributed || + this.isHeatmapDistributed || + (w.config.chart.type === 'heatmap' && + w.config.plotOptions.heatmap.colorScale.inverse) + } + + if (distributed && w.globals.series.length) { + len = + w.globals.series[w.globals.maxValsInArrayIndex].length * + w.globals.series.length + } + + if (colorSeries.length < len) { + let diff = len - colorSeries.length + for (let i = 0; i < diff; i++) { + colorSeries.push(colorSeries[i]) + } + } + } + + updateThemeOptions(options) { + options.chart = options.chart || {} + options.tooltip = options.tooltip || {} + const mode = options.theme.mode || 'light' + const palette = options.theme.palette + ? options.theme.palette + : mode === 'dark' + ? 'palette4' + : 'palette1' + const foreColor = options.chart.foreColor + ? options.chart.foreColor + : mode === 'dark' + ? '#f6f7f8' + : '#373d3f' + + options.tooltip.theme = mode + options.chart.foreColor = foreColor + options.theme.palette = palette + + return options + } + + predefined() { + let palette = this.w.config.theme.palette + + // D6E3F8, FCEFEF, DCE0D9, A5978B, EDDDD4, D6E3F8, FEF5EF + switch (palette) { + case 'palette1': + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'] + break + case 'palette2': + this.colors = ['#3f51b5', '#03a9f4', '#4caf50', '#f9ce1d', '#FF9800'] + break + case 'palette3': + this.colors = ['#33b2df', '#546E7A', '#d4526e', '#13d8aa', '#A5978B'] + break + case 'palette4': + this.colors = ['#4ecdc4', '#c7f464', '#81D4FA', '#fd6a6a', '#546E7A'] + break + case 'palette5': + this.colors = ['#2b908f', '#f9a3a4', '#90ee7e', '#fa4443', '#69d2e7'] + break + case 'palette6': + this.colors = ['#449DD1', '#F86624', '#EA3546', '#662E9B', '#C5D86D'] + break + case 'palette7': + this.colors = ['#D7263D', '#1B998B', '#2E294E', '#F46036', '#E2C044'] + break + case 'palette8': + this.colors = ['#662E9B', '#F86624', '#F9C80E', '#EA3546', '#43BCCD'] + break + case 'palette9': + this.colors = ['#5C4742', '#A5978B', '#8D5B4C', '#5A2A27', '#C4BBAF'] + break + case 'palette10': + this.colors = ['#A300D6', '#7D02EB', '#5653FE', '#2983FF', '#00B1F2'] + break + default: + this.colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0'] + break + } + return this.colors + } +} diff --git a/public/assets/libs/apexcharts/src/modules/TimeScale.js b/public/assets/libs/apexcharts/src/modules/TimeScale.js new file mode 100644 index 0000000..92e5aa3 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/TimeScale.js @@ -0,0 +1,917 @@ +import DateTime from '../utils/DateTime' +import Dimensions from './dimensions/Dimensions' +import Graphics from './Graphics' +import Utils from '../utils/Utils' + +const MINUTES_IN_DAY = 24 * 60 +const SECONDS_IN_DAY = MINUTES_IN_DAY * 60 +const MIN_ZOOM_DAYS = 10 / SECONDS_IN_DAY + +/** + * ApexCharts TimeScale Class for generating time ticks for x-axis. + * + * @module TimeScale + **/ + +class TimeScale { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + this.timeScaleArray = [] + this.utc = this.w.config.xaxis.labels.datetimeUTC + } + + calculateTimeScaleTicks(minX, maxX) { + let w = this.w + + // null check when no series to show + if (w.globals.allSeriesCollapsed) { + w.globals.labels = [] + w.globals.timescaleLabels = [] + return [] + } + + let dt = new DateTime(this.ctx) + + const daysDiff = (maxX - minX) / (1000 * SECONDS_IN_DAY) + this.determineInterval(daysDiff) + + w.globals.disableZoomIn = false + w.globals.disableZoomOut = false + + if (daysDiff < MIN_ZOOM_DAYS) { + w.globals.disableZoomIn = true + } else if (daysDiff > 50000) { + w.globals.disableZoomOut = true + } + + const timeIntervals = dt.getTimeUnitsfromTimestamp(minX, maxX, this.utc) + + const daysWidthOnXAxis = w.globals.gridWidth / daysDiff + const hoursWidthOnXAxis = daysWidthOnXAxis / 24 + const minutesWidthOnXAxis = hoursWidthOnXAxis / 60 + const secondsWidthOnXAxis = minutesWidthOnXAxis / 60 + + let numberOfHours = Math.floor(daysDiff * 24) + let numberOfMinutes = Math.floor(daysDiff * MINUTES_IN_DAY) + let numberOfSeconds = Math.floor(daysDiff * SECONDS_IN_DAY) + let numberOfDays = Math.floor(daysDiff) + let numberOfMonths = Math.floor(daysDiff / 30) + let numberOfYears = Math.floor(daysDiff / 365) + + const firstVal = { + minMillisecond: timeIntervals.minMillisecond, + minSecond: timeIntervals.minSecond, + minMinute: timeIntervals.minMinute, + minHour: timeIntervals.minHour, + minDate: timeIntervals.minDate, + minMonth: timeIntervals.minMonth, + minYear: timeIntervals.minYear + } + + let currentMillisecond = firstVal.minMillisecond + let currentSecond = firstVal.minSecond + let currentMinute = firstVal.minMinute + let currentHour = firstVal.minHour + let currentMonthDate = firstVal.minDate + let currentDate = firstVal.minDate + let currentMonth = firstVal.minMonth + let currentYear = firstVal.minYear + + const params = { + firstVal, + currentMillisecond, + currentSecond, + currentMinute, + currentHour, + currentMonthDate, + currentDate, + currentMonth, + currentYear, + daysWidthOnXAxis, + hoursWidthOnXAxis, + minutesWidthOnXAxis, + secondsWidthOnXAxis, + numberOfSeconds, + numberOfMinutes, + numberOfHours, + numberOfDays, + numberOfMonths, + numberOfYears + } + + switch (this.tickInterval) { + case 'years': { + this.generateYearScale(params) + break + } + case 'months': + case 'half_year': { + this.generateMonthScale(params) + break + } + case 'months_days': + case 'months_fortnight': + case 'days': + case 'week_days': { + this.generateDayScale(params) + break + } + case 'hours': { + this.generateHourScale(params) + break + } + case 'minutes_fives': + case 'minutes': + this.generateMinuteScale(params) + break + case 'seconds_tens': + case 'seconds_fives': + case 'seconds': + this.generateSecondScale(params) + break + } + + // first, we will adjust the month values index + // as in the upper function, it is starting from 0 + // we will start them from 1 + const adjustedMonthInTimeScaleArray = this.timeScaleArray.map((ts) => { + let defaultReturn = { + position: ts.position, + unit: ts.unit, + year: ts.year, + day: ts.day ? ts.day : 1, + hour: ts.hour ? ts.hour : 0, + month: ts.month + 1 + } + if (ts.unit === 'month') { + return { + ...defaultReturn, + day: 1, + value: ts.value + 1 + } + } else if (ts.unit === 'day' || ts.unit === 'hour') { + return { + ...defaultReturn, + value: ts.value + } + } else if (ts.unit === 'minute') { + return { + ...defaultReturn, + value: ts.value, + minute: ts.value + } + } else if (ts.unit === 'second') { + return { + ...defaultReturn, + value: ts.value, + minute: ts.minute, + second: ts.second + } + } + + return ts + }) + + const filteredTimeScale = adjustedMonthInTimeScaleArray.filter((ts) => { + let modulo = 1 + let ticks = Math.ceil(w.globals.gridWidth / 120) + let value = ts.value + if (w.config.xaxis.tickAmount !== undefined) { + ticks = w.config.xaxis.tickAmount + } + if (adjustedMonthInTimeScaleArray.length > ticks) { + modulo = Math.floor(adjustedMonthInTimeScaleArray.length / ticks) + } + + let shouldNotSkipUnit = false // there is a big change in unit i.e days to months + let shouldNotPrint = false // should skip these values + + switch (this.tickInterval) { + case 'years': + // make years label denser + if (ts.unit === 'year') { + shouldNotSkipUnit = true + } + break + case 'half_year': + modulo = 7 + if (ts.unit === 'year') { + shouldNotSkipUnit = true + } + break + case 'months': + modulo = 1 + if (ts.unit === 'year') { + shouldNotSkipUnit = true + } + break + case 'months_fortnight': + modulo = 15 + if (ts.unit === 'year' || ts.unit === 'month') { + shouldNotSkipUnit = true + } + if (value === 30) { + shouldNotPrint = true + } + break + case 'months_days': + modulo = 10 + if (ts.unit === 'month') { + shouldNotSkipUnit = true + } + if (value === 30) { + shouldNotPrint = true + } + break + case 'week_days': + modulo = 8 + if (ts.unit === 'month') { + shouldNotSkipUnit = true + } + break + case 'days': + modulo = 1 + if (ts.unit === 'month') { + shouldNotSkipUnit = true + } + break + case 'hours': + if (ts.unit === 'day') { + shouldNotSkipUnit = true + } + break + case 'minutes_fives': + if (value % 5 !== 0) { + shouldNotPrint = true + } + break + case 'seconds_tens': + if (value % 10 !== 0) { + shouldNotPrint = true + } + break + case 'seconds_fives': + if (value % 5 !== 0) { + shouldNotPrint = true + } + break + } + + if ( + this.tickInterval === 'hours' || + this.tickInterval === 'minutes_fives' || + this.tickInterval === 'seconds_tens' || + this.tickInterval === 'seconds_fives' + ) { + if (!shouldNotPrint) { + return true + } + } else { + if ((value % modulo === 0 || shouldNotSkipUnit) && !shouldNotPrint) { + return true + } + } + }) + + return filteredTimeScale + } + + recalcDimensionsBasedOnFormat(filteredTimeScale, inverted) { + const w = this.w + const reformattedTimescaleArray = this.formatDates(filteredTimeScale) + + const removedOverlappingTS = this.removeOverlappingTS( + reformattedTimescaleArray + ) + + w.globals.timescaleLabels = removedOverlappingTS.slice() + + // at this stage, we need to re-calculate coords of the grid as timeline labels may have altered the xaxis labels coords + // The reason we can't do this prior to this stage is because timeline labels depends on gridWidth, and as the ticks are calculated based on available gridWidth, there can be unknown number of ticks generated for different minX and maxX + // Dependency on Dimensions(), need to refactor correctly + // TODO - find an alternate way to avoid calling this Heavy method twice + let dimensions = new Dimensions(this.ctx) + dimensions.plotCoords() + } + + determineInterval(daysDiff) { + const yearsDiff = daysDiff / 365 + const hoursDiff = daysDiff * 24 + const minutesDiff = hoursDiff * 60 + const secondsDiff = minutesDiff * 60 + switch (true) { + case yearsDiff > 5: + this.tickInterval = 'years' + break + case daysDiff > 800: + this.tickInterval = 'half_year' + break + case daysDiff > 180: + this.tickInterval = 'months' + break + case daysDiff > 90: + this.tickInterval = 'months_fortnight' + break + case daysDiff > 60: + this.tickInterval = 'months_days' + break + case daysDiff > 30: + this.tickInterval = 'week_days' + break + case daysDiff > 2: + this.tickInterval = 'days' + break + case hoursDiff > 2.4: + this.tickInterval = 'hours' + break + case minutesDiff > 15: + this.tickInterval = 'minutes_fives' + break + case minutesDiff > 5: + this.tickInterval = 'minutes' + break + case minutesDiff > 1: + this.tickInterval = 'seconds_tens' + break + case secondsDiff > 20: + this.tickInterval = 'seconds_fives' + break + default: + this.tickInterval = 'seconds' + break + } + } + + generateYearScale({ + firstVal, + currentMonth, + currentYear, + daysWidthOnXAxis, + numberOfYears + }) { + let firstTickValue = firstVal.minYear + let firstTickPosition = 0 + const dt = new DateTime(this.ctx) + + let unit = 'year' + + if (firstVal.minDate > 1 || firstVal.minMonth > 0) { + let remainingDays = dt.determineRemainingDaysOfYear( + firstVal.minYear, + firstVal.minMonth, + firstVal.minDate + ) + + // remainingDaysofFirstMonth is used to reacht the 2nd tick position + let remainingDaysOfFirstYear = + dt.determineDaysOfYear(firstVal.minYear) - remainingDays + 1 + + // calculate the first tick position + firstTickPosition = remainingDaysOfFirstYear * daysWidthOnXAxis + firstTickValue = firstVal.minYear + 1 + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit, + year: firstTickValue, + month: Utils.monthMod(currentMonth + 1) + }) + } else if (firstVal.minDate === 1 && firstVal.minMonth === 0) { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit, + year: currentYear, + month: Utils.monthMod(currentMonth + 1) + }) + } + + let year = firstTickValue + let pos = firstTickPosition + + // keep drawing rest of the ticks + for (let i = 0; i < numberOfYears; i++) { + year++ + pos = dt.determineDaysOfYear(year - 1) * daysWidthOnXAxis + pos + this.timeScaleArray.push({ + position: pos, + value: year, + unit, + year, + month: 1 + }) + } + } + + generateMonthScale({ + firstVal, + currentMonthDate, + currentMonth, + currentYear, + daysWidthOnXAxis, + numberOfMonths + }) { + let firstTickValue = currentMonth + let firstTickPosition = 0 + const dt = new DateTime(this.ctx) + let unit = 'month' + let yrCounter = 0 + + if (firstVal.minDate > 1) { + // remainingDaysofFirstMonth is used to reacht the 2nd tick position + let remainingDaysOfFirstMonth = + dt.determineDaysOfMonths(currentMonth + 1, firstVal.minYear) - + currentMonthDate + + 1 + + // calculate the first tick position + firstTickPosition = remainingDaysOfFirstMonth * daysWidthOnXAxis + firstTickValue = Utils.monthMod(currentMonth + 1) + + let year = currentYear + yrCounter + let month = Utils.monthMod(firstTickValue) + let value = firstTickValue + // it's Jan, so update the year + if (firstTickValue === 0) { + unit = 'year' + value = year + month = 1 + yrCounter += 1 + year = year + yrCounter + } + + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value, + unit, + year, + month + }) + } else { + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit, + year: currentYear, + month: Utils.monthMod(currentMonth) + }) + } + + let month = firstTickValue + 1 + let pos = firstTickPosition + + // keep drawing rest of the ticks + for (let i = 0, j = 1; i < numberOfMonths; i++, j++) { + month = Utils.monthMod(month) + + if (month === 0) { + unit = 'year' + yrCounter += 1 + } else { + unit = 'month' + } + let year = this._getYear(currentYear, month, yrCounter) + + pos = dt.determineDaysOfMonths(month, year) * daysWidthOnXAxis + pos + let monthVal = month === 0 ? year : month + this.timeScaleArray.push({ + position: pos, + value: monthVal, + unit, + year, + month: month === 0 ? 1 : month + }) + month++ + } + } + + generateDayScale({ + firstVal, + currentMonth, + currentYear, + hoursWidthOnXAxis, + numberOfDays + }) { + const dt = new DateTime(this.ctx) + let unit = 'day' + let firstTickValue = firstVal.minDate + 1 + let date = firstTickValue + + const changeMonth = (dateVal, month, year) => { + let monthdays = dt.determineDaysOfMonths(month + 1, year) + + if (dateVal > monthdays) { + month = month + 1 + date = 1 + unit = 'month' + val = month + return month + } + + return month + } + + let remainingHours = 24 - firstVal.minHour + let yrCounter = 0 + + // calculate the first tick position + let firstTickPosition = remainingHours * hoursWidthOnXAxis + + let val = firstTickValue + let month = changeMonth(date, currentMonth, currentYear) + + if (firstVal.minHour === 0 && firstVal.minDate === 1) { + // the first value is the first day of month + firstTickPosition = 0 + val = Utils.monthMod(firstVal.minMonth) + unit = 'month' + date = firstVal.minDate + numberOfDays++ + } else if ( + firstVal.minDate !== 1 && + firstVal.minHour === 0 && + firstVal.minMinute === 0 + ) { + // fixes apexcharts/apexcharts.js/issues/1730 + firstTickPosition = 0 + firstTickValue = firstVal.minDate + date = firstTickValue + val = firstTickValue + // in case it's the last date of month, we need to check it + month = changeMonth(date, currentMonth, currentYear) + } + + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: val, + unit, + year: this._getYear(currentYear, month, yrCounter), + month: Utils.monthMod(month), + day: date + }) + + let pos = firstTickPosition + // keep drawing rest of the ticks + for (let i = 0; i < numberOfDays; i++) { + date += 1 + unit = 'day' + month = changeMonth( + date, + month, + this._getYear(currentYear, month, yrCounter) + ) + + let year = this._getYear(currentYear, month, yrCounter) + + pos = 24 * hoursWidthOnXAxis + pos + let value = date === 1 ? Utils.monthMod(month) : date + this.timeScaleArray.push({ + position: pos, + value, + unit, + year, + month: Utils.monthMod(month), + day: value + }) + } + } + + generateHourScale({ + firstVal, + currentDate, + currentMonth, + currentYear, + minutesWidthOnXAxis, + numberOfHours + }) { + const dt = new DateTime(this.ctx) + + let yrCounter = 0 + let unit = 'hour' + + const changeDate = (dateVal, month) => { + let monthdays = dt.determineDaysOfMonths(month + 1, currentYear) + if (dateVal > monthdays) { + date = 1 + month = month + 1 + } + return { month, date } + } + + const changeMonth = (dateVal, month) => { + let monthdays = dt.determineDaysOfMonths(month + 1, currentYear) + if (dateVal > monthdays) { + month = month + 1 + return month + } + + return month + } + + // factor in minSeconds as well + let remainingMins = 60 - (firstVal.minMinute + firstVal.minSecond / 60.0) + + let firstTickPosition = remainingMins * minutesWidthOnXAxis + let firstTickValue = firstVal.minHour + 1 + let hour = firstTickValue + 1 + + if (remainingMins === 60) { + firstTickPosition = 0 + firstTickValue = firstVal.minHour + hour = firstTickValue + 1 + } + + let date = currentDate + + let month = changeMonth(date, currentMonth) + + // push the first tick in the array + this.timeScaleArray.push({ + position: firstTickPosition, + value: firstTickValue, + unit, + day: date, + hour, + year: currentYear, + month: Utils.monthMod(month) + }) + + let pos = firstTickPosition + // keep drawing rest of the ticks + for (let i = 0; i < numberOfHours; i++) { + unit = 'hour' + + if (hour >= 24) { + hour = 0 + date += 1 + unit = 'day' + + const checkNextMonth = changeDate(date, month) + + month = checkNextMonth.month + month = changeMonth(date, month) + } + + let year = this._getYear(currentYear, month, yrCounter) + pos = + hour === 0 && i === 0 + ? remainingMins * minutesWidthOnXAxis + : 60 * minutesWidthOnXAxis + pos + let val = hour === 0 ? date : hour + this.timeScaleArray.push({ + position: pos, + value: val, + unit, + hour, + day: date, + year, + month: Utils.monthMod(month) + }) + + hour++ + } + } + + generateMinuteScale({ + currentMillisecond, + currentSecond, + currentMinute, + currentHour, + currentDate, + currentMonth, + currentYear, + minutesWidthOnXAxis, + secondsWidthOnXAxis, + numberOfMinutes + }) { + let yrCounter = 0 + let unit = 'minute' + + let remainingSecs = 60 - currentSecond + let firstTickPosition = + (remainingSecs - currentMillisecond / 1000) * secondsWidthOnXAxis + let minute = currentMinute + 1 + + let date = currentDate + let month = currentMonth + let year = currentYear + let hour = currentHour + + let pos = firstTickPosition + for (let i = 0; i < numberOfMinutes; i++) { + if (minute >= 60) { + minute = 0 + hour += 1 + if (hour === 24) { + hour = 0 + } + } + + this.timeScaleArray.push({ + position: pos, + value: minute, + unit, + hour, + minute, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils.monthMod(month) + }) + + pos += minutesWidthOnXAxis + minute++ + } + } + + generateSecondScale({ + currentMillisecond, + currentSecond, + currentMinute, + currentHour, + currentDate, + currentMonth, + currentYear, + secondsWidthOnXAxis, + numberOfSeconds + }) { + let yrCounter = 0 + let unit = 'second' + + const remainingMillisecs = 1000 - currentMillisecond + let firstTickPosition = (remainingMillisecs / 1000) * secondsWidthOnXAxis + + let second = currentSecond + 1 + let minute = currentMinute + let date = currentDate + let month = currentMonth + let year = currentYear + let hour = currentHour + + let pos = firstTickPosition + for (let i = 0; i < numberOfSeconds; i++) { + if (second >= 60) { + minute++ + second = 0 + if (minute >= 60) { + hour++ + minute = 0 + if (hour === 24) { + hour = 0 + } + } + } + + this.timeScaleArray.push({ + position: pos, + value: second, + unit, + hour, + minute, + second, + day: date, + year: this._getYear(year, month, yrCounter), + month: Utils.monthMod(month) + }) + + pos += secondsWidthOnXAxis + second++ + } + } + + createRawDateString(ts, value) { + let raw = ts.year + + if (ts.month === 0) { + // invalid month, correct it + ts.month = 1 + } + raw += '-' + ('0' + ts.month.toString()).slice(-2) + + // unit is day + if (ts.unit === 'day') { + raw += ts.unit === 'day' ? '-' + ('0' + value).slice(-2) : '-01' + } else { + raw += '-' + ('0' + (ts.day ? ts.day : '1')).slice(-2) + } + + // unit is hour + if (ts.unit === 'hour') { + raw += ts.unit === 'hour' ? 'T' + ('0' + value).slice(-2) : 'T00' + } else { + raw += 'T' + ('0' + (ts.hour ? ts.hour : '0')).slice(-2) + } + + if (ts.unit === 'minute') { + raw += ':' + ('0' + value).slice(-2) + } else { + raw += ':' + (ts.minute ? ('0' + ts.minute).slice(-2) : '00') + } + + if (ts.unit === 'second') { + raw += ':' + ('0' + value).slice(-2) + } else { + raw += ':00' + } + + if (this.utc) { + raw += '.000Z' + } + return raw + } + + formatDates(filteredTimeScale) { + const w = this.w + + const reformattedTimescaleArray = filteredTimeScale.map((ts) => { + let value = ts.value.toString() + + let dt = new DateTime(this.ctx) + + const raw = this.createRawDateString(ts, value) + + let dateToFormat = dt.getDate(dt.parseDate(raw)) + if (!this.utc) { + // Fixes #1726, #1544, #1485, #1255 + dateToFormat = dt.getDate(dt.parseDateWithTimezone(raw)) + } + + if (w.config.xaxis.labels.format === undefined) { + let customFormat = 'dd MMM' + const dtFormatter = w.config.xaxis.labels.datetimeFormatter + if (ts.unit === 'year') customFormat = dtFormatter.year + if (ts.unit === 'month') customFormat = dtFormatter.month + if (ts.unit === 'day') customFormat = dtFormatter.day + if (ts.unit === 'hour') customFormat = dtFormatter.hour + if (ts.unit === 'minute') customFormat = dtFormatter.minute + if (ts.unit === 'second') customFormat = dtFormatter.second + + value = dt.formatDate(dateToFormat, customFormat) + } else { + value = dt.formatDate(dateToFormat, w.config.xaxis.labels.format) + } + + return { + dateString: raw, + position: ts.position, + value, + unit: ts.unit, + year: ts.year, + month: ts.month + } + }) + + return reformattedTimescaleArray + } + + removeOverlappingTS(arr) { + const graphics = new Graphics(this.ctx) + + let equalLabelLengthFlag = false // These labels got same length? + let constantLabelWidth // If true, what is the constant length to use + if ( + arr.length > 0 && // check arr length + arr[0].value && // check arr[0] contains value + arr.every((lb) => lb.value.length === arr[0].value.length) // check every arr label value is the same as the first one + ) { + equalLabelLengthFlag = true // These labels got same length + constantLabelWidth = graphics.getTextRects(arr[0].value).width // The constant label width to use + } + + let lastDrawnIndex = 0 + + let filteredArray = arr.map((item, index) => { + if (index > 0 && this.w.config.xaxis.labels.hideOverlappingLabels) { + const prevLabelWidth = !equalLabelLengthFlag // if vary in label length + ? graphics.getTextRects(arr[lastDrawnIndex].value).width // get individual length + : constantLabelWidth // else: use constant length + const prevPos = arr[lastDrawnIndex].position + const pos = item.position + + if (pos > prevPos + prevLabelWidth + 10) { + lastDrawnIndex = index + return item + } else { + return null + } + } else { + return item + } + }) + + filteredArray = filteredArray.filter((f) => f !== null) + + return filteredArray + } + + _getYear(currentYear, month, yrCounter) { + return currentYear + Math.floor(month / 12) + yrCounter + } +} + +export default TimeScale diff --git a/public/assets/libs/apexcharts/src/modules/TitleSubtitle.js b/public/assets/libs/apexcharts/src/modules/TitleSubtitle.js new file mode 100644 index 0000000..2b3f88e --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/TitleSubtitle.js @@ -0,0 +1,52 @@ +import Graphics from './Graphics' + +export default class TitleSubtitle { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + draw() { + this.drawTitleSubtitle('title') + this.drawTitleSubtitle('subtitle') + } + + drawTitleSubtitle(type) { + let w = this.w + const tsConfig = type === 'title' ? w.config.title : w.config.subtitle + + let x = w.globals.svgWidth / 2 + let y = tsConfig.offsetY + let textAnchor = 'middle' + + if (tsConfig.align === 'left') { + x = 10 + textAnchor = 'start' + } else if (tsConfig.align === 'right') { + x = w.globals.svgWidth - 10 + textAnchor = 'end' + } + + x = x + tsConfig.offsetX + y = y + parseInt(tsConfig.style.fontSize, 10) + tsConfig.margin / 2 + + if (tsConfig.text !== undefined) { + let graphics = new Graphics(this.ctx) + let titleText = graphics.drawText({ + x, + y, + text: tsConfig.text, + textAnchor, + fontSize: tsConfig.style.fontSize, + fontFamily: tsConfig.style.fontFamily, + fontWeight: tsConfig.style.fontWeight, + foreColor: tsConfig.style.color, + opacity: 1 + }) + + titleText.node.setAttribute('class', `apexcharts-${type}-text`) + + w.globals.dom.Paper.add(titleText) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/Toolbar.js b/public/assets/libs/apexcharts/src/modules/Toolbar.js new file mode 100644 index 0000000..edfef1b --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/Toolbar.js @@ -0,0 +1,532 @@ +import Graphics from './Graphics' +import Exports from './Exports' +import Scales from './Scales' +import Utils from './../utils/Utils' +import icoPan from './../assets/ico-pan-hand.svg' +import icoZoom from './../assets/ico-zoom-in.svg' +import icoReset from './../assets/ico-home.svg' +import icoZoomIn from './../assets/ico-plus.svg' +import icoZoomOut from './../assets/ico-minus.svg' +import icoSelect from './../assets/ico-select.svg' +import icoMenu from './../assets/ico-menu.svg' + +/** + * ApexCharts Toolbar Class for creating toolbar in axis based charts. + * + * @module Toolbar + **/ + +export default class Toolbar { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + const w = this.w + + this.ev = this.w.config.chart.events + this.selectedClass = 'apexcharts-selected' + + this.localeValues = this.w.globals.locale.toolbar + + this.minX = w.globals.minX + this.maxX = w.globals.maxX + } + + createToolbar() { + let w = this.w + + const createDiv = () => { + return document.createElement('div') + } + const elToolbarWrap = createDiv() + elToolbarWrap.setAttribute('class', 'apexcharts-toolbar') + elToolbarWrap.style.top = w.config.chart.toolbar.offsetY + 'px' + elToolbarWrap.style.right = -w.config.chart.toolbar.offsetX + 3 + 'px' + w.globals.dom.elWrap.appendChild(elToolbarWrap) + + this.elZoom = createDiv() + this.elZoomIn = createDiv() + this.elZoomOut = createDiv() + this.elPan = createDiv() + this.elSelection = createDiv() + this.elZoomReset = createDiv() + this.elMenuIcon = createDiv() + this.elMenu = createDiv() + this.elCustomIcons = [] + + this.t = w.config.chart.toolbar.tools + + if (Array.isArray(this.t.customIcons)) { + for (let i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons.push(createDiv()) + } + } + + let toolbarControls = [] + + const appendZoomControl = (type, el, ico) => { + const tool = type.toLowerCase() + if (this.t[tool] && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el, + icon: typeof this.t[tool] === 'string' ? this.t[tool] : ico, + title: this.localeValues[type], + class: `apexcharts-${tool}-icon` + }) + } + } + + appendZoomControl('zoomIn', this.elZoomIn, icoZoomIn) + appendZoomControl('zoomOut', this.elZoomOut, icoZoomOut) + + const zoomSelectionCtrls = (z) => { + if (this.t[z] && w.config.chart[z].enabled) { + toolbarControls.push({ + el: z === 'zoom' ? this.elZoom : this.elSelection, + icon: + typeof this.t[z] === 'string' + ? this.t[z] + : z === 'zoom' + ? icoZoom + : icoSelect, + title: this.localeValues[ + z === 'zoom' ? 'selectionZoom' : 'selection' + ], + class: w.globals.isTouchDevice + ? 'apexcharts-element-hidden' + : `apexcharts-${z}-icon` + }) + } + } + zoomSelectionCtrls('zoom') + zoomSelectionCtrls('selection') + + if (this.t.pan && w.config.chart.zoom.enabled) { + toolbarControls.push({ + el: this.elPan, + icon: typeof this.t.pan === 'string' ? this.t.pan : icoPan, + title: this.localeValues.pan, + class: w.globals.isTouchDevice + ? 'apexcharts-element-hidden' + : 'apexcharts-pan-icon' + }) + } + + appendZoomControl('reset', this.elZoomReset, icoReset) + + if (this.t.download) { + toolbarControls.push({ + el: this.elMenuIcon, + icon: typeof this.t.download === 'string' ? this.t.download : icoMenu, + title: this.localeValues.menu, + class: 'apexcharts-menu-icon' + }) + } + + for (let i = 0; i < this.elCustomIcons.length; i++) { + toolbarControls.push({ + el: this.elCustomIcons[i], + icon: this.t.customIcons[i].icon, + title: this.t.customIcons[i].title, + index: this.t.customIcons[i].index, + class: 'apexcharts-toolbar-custom-icon ' + this.t.customIcons[i].class + }) + } + + toolbarControls.forEach((t, index) => { + if (t.index) { + Utils.moveIndexInArray(toolbarControls, index, t.index) + } + }) + + for (let i = 0; i < toolbarControls.length; i++) { + Graphics.setAttrs(toolbarControls[i].el, { + class: toolbarControls[i].class, + title: toolbarControls[i].title + }) + + toolbarControls[i].el.innerHTML = toolbarControls[i].icon + elToolbarWrap.appendChild(toolbarControls[i].el) + } + + this._createHamburgerMenu(elToolbarWrap) + + if (w.globals.zoomEnabled) { + this.elZoom.classList.add(this.selectedClass) + } else if (w.globals.panEnabled) { + this.elPan.classList.add(this.selectedClass) + } else if (w.globals.selectionEnabled) { + this.elSelection.classList.add(this.selectedClass) + } + + this.addToolbarEventListeners() + } + + _createHamburgerMenu(parent) { + this.elMenuItems = [] + parent.appendChild(this.elMenu) + + Graphics.setAttrs(this.elMenu, { + class: 'apexcharts-menu' + }) + + const menuItems = [ + { + name: 'exportSVG', + title: this.localeValues.exportToSVG + }, + { + name: 'exportPNG', + title: this.localeValues.exportToPNG + }, + { + name: 'exportCSV', + title: this.localeValues.exportToCSV + } + ] + + if (!this.w.globals.allSeriesHasEqualX) { + // if it is a multi series, and all series have variable x values, export CSV won't work + menuItems.splice(2, 1) + } + for (let i = 0; i < menuItems.length; i++) { + this.elMenuItems.push(document.createElement('div')) + this.elMenuItems[i].innerHTML = menuItems[i].title + Graphics.setAttrs(this.elMenuItems[i], { + class: `apexcharts-menu-item ${menuItems[i].name}`, + title: menuItems[i].title + }) + this.elMenu.appendChild(this.elMenuItems[i]) + } + } + + addToolbarEventListeners() { + this.elZoomReset.addEventListener('click', this.handleZoomReset.bind(this)) + this.elSelection.addEventListener( + 'click', + this.toggleZoomSelection.bind(this, 'selection') + ) + this.elZoom.addEventListener( + 'click', + this.toggleZoomSelection.bind(this, 'zoom') + ) + this.elZoomIn.addEventListener('click', this.handleZoomIn.bind(this)) + this.elZoomOut.addEventListener('click', this.handleZoomOut.bind(this)) + this.elPan.addEventListener('click', this.togglePanning.bind(this)) + this.elMenuIcon.addEventListener('click', this.toggleMenu.bind(this)) + this.elMenuItems.forEach((m) => { + if (m.classList.contains('exportSVG')) { + m.addEventListener('click', this.handleDownload.bind(this, 'svg')) + } else if (m.classList.contains('exportPNG')) { + m.addEventListener('click', this.handleDownload.bind(this, 'png')) + } else if (m.classList.contains('exportCSV')) { + m.addEventListener('click', this.handleDownload.bind(this, 'csv')) + } + }) + for (let i = 0; i < this.t.customIcons.length; i++) { + this.elCustomIcons[i].addEventListener( + 'click', + this.t.customIcons[i].click.bind(this, this.ctx, this.ctx.w) + ) + } + } + + toggleZoomSelection(type) { + const charts = this.ctx.getSyncedCharts() + + charts.forEach((ch) => { + ch.ctx.toolbar.toggleOtherControls() + + let el = + type === 'selection' + ? ch.ctx.toolbar.elSelection + : ch.ctx.toolbar.elZoom + let enabledType = + type === 'selection' ? 'selectionEnabled' : 'zoomEnabled' + + ch.w.globals[enabledType] = !ch.w.globals[enabledType] + + if (!el.classList.contains(ch.ctx.toolbar.selectedClass)) { + el.classList.add(ch.ctx.toolbar.selectedClass) + } else { + el.classList.remove(ch.ctx.toolbar.selectedClass) + } + }) + } + + getToolbarIconsReference() { + const w = this.w + if (!this.elZoom) { + this.elZoom = w.globals.dom.baseEl.querySelector('.apexcharts-zoom-icon') + } + if (!this.elPan) { + this.elPan = w.globals.dom.baseEl.querySelector('.apexcharts-pan-icon') + } + if (!this.elSelection) { + this.elSelection = w.globals.dom.baseEl.querySelector( + '.apexcharts-selection-icon' + ) + } + } + + enableZoomPanFromToolbar(type) { + this.toggleOtherControls() + + type === 'pan' + ? (this.w.globals.panEnabled = true) + : (this.w.globals.zoomEnabled = true) + + const el = type === 'pan' ? this.elPan : this.elZoom + const el2 = type === 'pan' ? this.elZoom : this.elPan + if (el) { + el.classList.add(this.selectedClass) + } + if (el2) { + el2.classList.remove(this.selectedClass) + } + } + + togglePanning() { + const charts = this.ctx.getSyncedCharts() + + charts.forEach((ch) => { + ch.ctx.toolbar.toggleOtherControls() + ch.w.globals.panEnabled = !ch.w.globals.panEnabled + + if ( + !ch.ctx.toolbar.elPan.classList.contains(ch.ctx.toolbar.selectedClass) + ) { + ch.ctx.toolbar.elPan.classList.add(ch.ctx.toolbar.selectedClass) + } else { + ch.ctx.toolbar.elPan.classList.remove(ch.ctx.toolbar.selectedClass) + } + }) + } + + toggleOtherControls() { + const w = this.w + w.globals.panEnabled = false + w.globals.zoomEnabled = false + w.globals.selectionEnabled = false + + this.getToolbarIconsReference() + + const toggleEls = [this.elPan, this.elSelection, this.elZoom] + toggleEls.forEach((el) => { + if (el) { + el.classList.remove(this.selectedClass) + } + }) + } + + handleZoomIn() { + const w = this.w + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY + this.maxX = w.globals.maxY + } + + const centerX = (this.minX + this.maxX) / 2 + let newMinX = (this.minX + centerX) / 2 + let newMaxX = (this.maxX + centerX) / 2 + + const newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX) + + if (!w.globals.disableZoomIn) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX) + } + } + + handleZoomOut() { + const w = this.w + + if (w.globals.isRangeBar) { + this.minX = w.globals.minY + this.maxX = w.globals.maxY + } + + // avoid zooming out beyond 1000 which may result in NaN values being printed on x-axis + if ( + w.config.xaxis.type === 'datetime' && + new Date(this.minX).getUTCFullYear() < 1000 + ) { + return + } + + const centerX = (this.minX + this.maxX) / 2 + let newMinX = this.minX - (centerX - this.minX) + let newMaxX = this.maxX - (centerX - this.maxX) + + const newMinXMaxX = this._getNewMinXMaxX(newMinX, newMaxX) + + if (!w.globals.disableZoomOut) { + this.zoomUpdateOptions(newMinXMaxX.minX, newMinXMaxX.maxX) + } + } + + _getNewMinXMaxX(newMinX, newMaxX) { + const shouldFloor = this.w.config.xaxis.convertedCatToNumeric + return { + minX: shouldFloor ? Math.floor(newMinX) : newMinX, + maxX: shouldFloor ? Math.floor(newMaxX) : newMaxX + } + } + + zoomUpdateOptions(newMinX, newMaxX) { + const w = this.w + + if (newMinX === undefined && newMaxX === undefined) { + this.handleZoomReset() + return + } + + if (w.config.xaxis.convertedCatToNumeric) { + // in category charts, avoid zooming out beyond min and max + if (newMinX < 1) { + newMinX = 1 + newMaxX = w.globals.dataPoints + } + + if (newMaxX - newMinX < 2) { + return + } + } + + let xaxis = { + min: newMinX, + max: newMaxX + } + + const beforeZoomRange = this.getBeforeZoomRange(xaxis) + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis + } + + let options = { + xaxis + } + + let yaxis = Utils.clone(w.globals.initialConfig.yaxis) + if (w.config.chart.zoom.autoScaleYaxis) { + const scale = new Scales(this.ctx) + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis + }) + } + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis + } + + this.w.globals.zoomed = true + + this.ctx.updateHelpers._updateOptions( + options, + false, + this.w.config.chart.animations.dynamicAnimation.enabled + ) + + this.zoomCallback(xaxis, yaxis) + } + + zoomCallback(xaxis, yaxis) { + if (typeof this.ev.zoomed === 'function') { + this.ev.zoomed(this.ctx, { xaxis, yaxis }) + } + } + + getBeforeZoomRange(xaxis, yaxis) { + let newRange = null + if (typeof this.ev.beforeZoom === 'function') { + newRange = this.ev.beforeZoom(this, { xaxis, yaxis }) + } + + return newRange + } + + toggleMenu() { + window.setTimeout(() => { + if (this.elMenu.classList.contains('apexcharts-menu-open')) { + this.elMenu.classList.remove('apexcharts-menu-open') + } else { + this.elMenu.classList.add('apexcharts-menu-open') + } + }, 0) + } + + handleDownload(type) { + const w = this.w + const exprt = new Exports(this.ctx) + switch (type) { + case 'svg': + exprt.exportToSVG(this.ctx) + break + case 'png': + exprt.exportToPng(this.ctx) + break + case 'csv': + exprt.exportToCSV({ + series: w.config.series, + columnDelimiter: w.config.chart.toolbar.export.csv.columnDelimiter + }) + break + } + } + + handleZoomReset(e) { + const charts = this.ctx.getSyncedCharts() + + charts.forEach((ch) => { + let w = ch.w + + // forget lastXAxis min/max as reset button isn't resetting the x-axis completely if zoomX is called before + w.globals.lastXAxis.min = undefined + w.globals.lastXAxis.max = undefined + + ch.updateHelpers.revertDefaultAxisMinMax() + + if (typeof w.config.chart.events.beforeResetZoom === 'function') { + // here, user get an option to control xaxis and yaxis when resetZoom is called + // at this point, whatever is returned from w.config.chart.events.beforeResetZoom + // is set as the new xaxis/yaxis min/max + const resetZoomRange = w.config.chart.events.beforeResetZoom(ch, w) + + if (resetZoomRange) { + ch.updateHelpers.revertDefaultAxisMinMax(resetZoomRange) + } + } + + if (typeof w.config.chart.events.zoomed === 'function') { + ch.ctx.toolbar.zoomCallback({ + min: w.config.xaxis.min, + max: w.config.xaxis.max + }) + } + + w.globals.zoomed = false + + // if user has some series collapsed before hitting zoom reset button, + // those series should stay collapsed + let series = ch.ctx.series.emptyCollapsedSeries( + Utils.clone(w.globals.initialSeries) + ) + + ch.updateHelpers._updateSeries( + series, + w.config.chart.animations.dynamicAnimation.enabled + ) + }) + } + + destroy() { + this.elZoom = null + this.elZoomIn = null + this.elZoomOut = null + this.elPan = null + this.elSelection = null + this.elZoomReset = null + this.elMenuIcon = null + } +} diff --git a/public/assets/libs/apexcharts/src/modules/ZoomPanSelection.js b/public/assets/libs/apexcharts/src/modules/ZoomPanSelection.js new file mode 100644 index 0000000..5a280b4 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/ZoomPanSelection.js @@ -0,0 +1,777 @@ +import Graphics from './Graphics' +import Utils from './../utils/Utils' +import Toolbar from './Toolbar' +import Scales from './Scales' + +/** + * ApexCharts Zoom Class for handling zooming and panning on axes based charts. + * + * @module ZoomPanSelection + **/ + +export default class ZoomPanSelection extends Toolbar { + constructor(ctx) { + super(ctx) + + this.ctx = ctx + this.w = ctx.w + + this.dragged = false + this.graphics = new Graphics(this.ctx) + + this.eventList = [ + 'mousedown', + 'mouseleave', + 'mousemove', + 'touchstart', + 'touchmove', + 'mouseup', + 'touchend' + ] + + this.clientX = 0 + this.clientY = 0 + this.startX = 0 + this.endX = 0 + this.dragX = 0 + this.startY = 0 + this.endY = 0 + this.dragY = 0 + this.moveDirection = 'none' + } + + init({ xyRatios }) { + let w = this.w + let me = this + + this.xyRatios = xyRatios + + this.zoomRect = this.graphics.drawRect(0, 0, 0, 0) + this.selectionRect = this.graphics.drawRect(0, 0, 0, 0) + this.gridRect = w.globals.dom.baseEl.querySelector('.apexcharts-grid') + + this.zoomRect.node.classList.add('apexcharts-zoom-rect') + this.selectionRect.node.classList.add('apexcharts-selection-rect') + w.globals.dom.elGraphical.add(this.zoomRect) + w.globals.dom.elGraphical.add(this.selectionRect) + + if (w.config.chart.selection.type === 'x') { + this.slDraggableRect = this.selectionRect + .draggable({ + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + }) + .on('dragmove', this.selectionDragging.bind(this, 'dragging')) + } else if (w.config.chart.selection.type === 'y') { + this.slDraggableRect = this.selectionRect + .draggable({ + minX: 0, + maxX: w.globals.gridWidth + }) + .on('dragmove', this.selectionDragging.bind(this, 'dragging')) + } else { + this.slDraggableRect = this.selectionRect + .draggable() + .on('dragmove', this.selectionDragging.bind(this, 'dragging')) + } + this.preselectedSelection() + + this.hoverArea = w.globals.dom.baseEl.querySelector( + `${w.globals.chartClass} .apexcharts-svg` + ) + this.hoverArea.classList.add('apexcharts-zoomable') + + this.eventList.forEach((event) => { + this.hoverArea.addEventListener( + event, + me.svgMouseEvents.bind(me, xyRatios), + { + capture: false, + passive: true + } + ) + }) + } + + // remove the event listeners which were previously added on hover area + destroy() { + if (this.slDraggableRect) { + this.slDraggableRect.draggable(false) + this.slDraggableRect.off() + this.selectionRect.off() + } + + this.selectionRect = null + this.zoomRect = null + this.gridRect = null + } + + svgMouseEvents(xyRatios, e) { + let w = this.w + let me = this + const toolbar = this.ctx.toolbar + + let zoomtype = w.globals.zoomEnabled + ? w.config.chart.zoom.type + : w.config.chart.selection.type + + const autoSelected = w.config.chart.toolbar.autoSelected + + if (e.shiftKey) { + this.shiftWasPressed = true + toolbar.enableZoomPanFromToolbar(autoSelected === 'pan' ? 'zoom' : 'pan') + } else { + if (this.shiftWasPressed) { + toolbar.enableZoomPanFromToolbar(autoSelected) + this.shiftWasPressed = false + } + } + + if (!e.target) return + + const tc = e.target.classList + let pc + if (e.target.parentNode && e.target.parentNode !== null) { + pc = e.target.parentNode.classList + } + const falsePositives = + tc.contains('apexcharts-selection-rect') || + tc.contains('apexcharts-legend-marker') || + tc.contains('apexcharts-legend-text') || + (pc && pc.contains('apexcharts-toolbar')) + + if (falsePositives) return + + me.clientX = + e.type === 'touchmove' || e.type === 'touchstart' + ? e.touches[0].clientX + : e.type === 'touchend' + ? e.changedTouches[0].clientX + : e.clientX + me.clientY = + e.type === 'touchmove' || e.type === 'touchstart' + ? e.touches[0].clientY + : e.type === 'touchend' + ? e.changedTouches[0].clientY + : e.clientY + + if (e.type === 'mousedown' && e.which === 1) { + let gridRectDim = me.gridRect.getBoundingClientRect() + + me.startX = me.clientX - gridRectDim.left + me.startY = me.clientY - gridRectDim.top + + me.dragged = false + me.w.globals.mousedown = true + } + + if ((e.type === 'mousemove' && e.which === 1) || e.type === 'touchmove') { + me.dragged = true + + if (w.globals.panEnabled) { + w.globals.selection = null + if (me.w.globals.mousedown) { + me.panDragging({ + context: me, + zoomtype, + xyRatios + }) + } + } else { + if ( + (me.w.globals.mousedown && w.globals.zoomEnabled) || + (me.w.globals.mousedown && w.globals.selectionEnabled) + ) { + me.selection = me.selectionDrawing({ + context: me, + zoomtype + }) + } + } + } + + if ( + e.type === 'mouseup' || + e.type === 'touchend' || + e.type === 'mouseleave' + ) { + // we will be calling getBoundingClientRect on each mousedown/mousemove/mouseup + let gridRectDim = me.gridRect.getBoundingClientRect() + + if (me.w.globals.mousedown) { + // user released the drag, now do all the calculations + me.endX = me.clientX - gridRectDim.left + me.endY = me.clientY - gridRectDim.top + me.dragX = Math.abs(me.endX - me.startX) + me.dragY = Math.abs(me.endY - me.startY) + + if (w.globals.zoomEnabled || w.globals.selectionEnabled) { + me.selectionDrawn({ + context: me, + zoomtype + }) + } + + if (w.globals.panEnabled && w.config.xaxis.convertedCatToNumeric) { + me.delayedPanScrolled() + } + } + + if (w.globals.zoomEnabled) { + me.hideSelectionRect(this.selectionRect) + } + + me.dragged = false + me.w.globals.mousedown = false + } + + this.makeSelectionRectDraggable() + } + + makeSelectionRectDraggable() { + const w = this.w + + if (!this.selectionRect) return + + const rectDim = this.selectionRect.node.getBoundingClientRect() + if (rectDim.width > 0 && rectDim.height > 0) { + this.slDraggableRect + .selectize({ + points: 'l, r', + pointSize: 8, + pointType: 'rect' + }) + .resize({ + constraint: { + minX: 0, + minY: 0, + maxX: w.globals.gridWidth, + maxY: w.globals.gridHeight + } + }) + .on('resizing', this.selectionDragging.bind(this, 'resizing')) + } + } + + preselectedSelection() { + const w = this.w + const xyRatios = this.xyRatios + + if (!w.globals.zoomEnabled) { + if ( + typeof w.globals.selection !== 'undefined' && + w.globals.selection !== null + ) { + this.drawSelectionRect(w.globals.selection) + } else { + if ( + w.config.chart.selection.xaxis.min !== undefined && + w.config.chart.selection.xaxis.max !== undefined + ) { + const x = + (w.config.chart.selection.xaxis.min - w.globals.minX) / + xyRatios.xRatio + const width = + w.globals.gridWidth - + (w.globals.maxX - w.config.chart.selection.xaxis.max) / + xyRatios.xRatio - + x + let selectionRect = { + x, + y: 0, + width, + height: w.globals.gridHeight, + translateX: 0, + translateY: 0, + selectionEnabled: true + } + this.drawSelectionRect(selectionRect) + this.makeSelectionRectDraggable() + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(this.ctx, { + xaxis: { + min: w.config.chart.selection.xaxis.min, + max: w.config.chart.selection.xaxis.max + }, + yaxis: {} + }) + } + } + } + } + } + + drawSelectionRect({ x, y, width, height, translateX = 0, translateY = 0 }) { + const w = this.w + const zoomRect = this.zoomRect + const selectionRect = this.selectionRect + if (this.dragged || w.globals.selection !== null) { + let scalingAttrs = { + transform: 'translate(' + translateX + ', ' + translateY + ')' + } + + // change styles based on zoom or selection + // zoom is Enabled and user has dragged, so draw blue rect + if (w.globals.zoomEnabled && this.dragged) { + if (width < 0) width = 1 // fixes apexcharts.js#1168 + zoomRect.attr({ + x, + y, + width, + height, + fill: w.config.chart.zoom.zoomedArea.fill.color, + 'fill-opacity': w.config.chart.zoom.zoomedArea.fill.opacity, + stroke: w.config.chart.zoom.zoomedArea.stroke.color, + 'stroke-width': w.config.chart.zoom.zoomedArea.stroke.width, + 'stroke-opacity': w.config.chart.zoom.zoomedArea.stroke.opacity + }) + Graphics.setAttrs(zoomRect.node, scalingAttrs) + } + + // selection is enabled + if (w.globals.selectionEnabled) { + selectionRect.attr({ + x, + y, + width: width > 0 ? width : 0, + height: height > 0 ? height : 0, + fill: w.config.chart.selection.fill.color, + 'fill-opacity': w.config.chart.selection.fill.opacity, + stroke: w.config.chart.selection.stroke.color, + 'stroke-width': w.config.chart.selection.stroke.width, + 'stroke-dasharray': w.config.chart.selection.stroke.dashArray, + 'stroke-opacity': w.config.chart.selection.stroke.opacity + }) + + Graphics.setAttrs(selectionRect.node, scalingAttrs) + } + } + } + + hideSelectionRect(rect) { + if (rect) { + rect.attr({ + x: 0, + y: 0, + width: 0, + height: 0 + }) + } + } + + selectionDrawing({ context, zoomtype }) { + const w = this.w + let me = context + + let gridRectDim = this.gridRect.getBoundingClientRect() + + let startX = me.startX - 1 + let startY = me.startY + let inversedX = false + let inversedY = false + + let selectionWidth = me.clientX - gridRectDim.left - startX + let selectionHeight = me.clientY - gridRectDim.top - startY + + let selectionRect = {} + + if (Math.abs(selectionWidth + startX) > w.globals.gridWidth) { + // user dragged the mouse outside drawing area to the right + selectionWidth = w.globals.gridWidth - startX + } else if (me.clientX - gridRectDim.left < 0) { + // user dragged the mouse outside drawing area to the left + selectionWidth = startX + } + + // inverse selection X + if (startX > me.clientX - gridRectDim.left) { + inversedX = true + selectionWidth = Math.abs(selectionWidth) + } + + // inverse selection Y + if (startY > me.clientY - gridRectDim.top) { + inversedY = true + selectionHeight = Math.abs(selectionHeight) + } + + if (zoomtype === 'x') { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: 0, + width: selectionWidth, + height: w.globals.gridHeight + } + } else if (zoomtype === 'y') { + selectionRect = { + x: 0, + y: inversedY ? startY - selectionHeight : startY, + width: w.globals.gridWidth, + height: selectionHeight + } + } else { + selectionRect = { + x: inversedX ? startX - selectionWidth : startX, + y: inversedY ? startY - selectionHeight : startY, + width: selectionWidth, + height: selectionHeight + } + } + + me.drawSelectionRect(selectionRect) + me.selectionDragging('resizing') + return selectionRect + } + + selectionDragging(type, e) { + const w = this.w + const xyRatios = this.xyRatios + + const selRect = this.selectionRect + + let timerInterval = 0 + + if (type === 'resizing') { + timerInterval = 30 + } + + // update selection when selection rect is dragged + const getSelAttr = (attr) => { + return parseFloat(selRect.node.getAttribute(attr)) + } + const draggedProps = { + x: getSelAttr('x'), + y: getSelAttr('y'), + width: getSelAttr('width'), + height: getSelAttr('height') + } + w.globals.selection = draggedProps + // update selection ends + + if ( + typeof w.config.chart.events.selection === 'function' && + w.globals.selectionEnabled + ) { + // a small debouncer is required when resizing to avoid freezing the chart + clearTimeout(this.w.globals.selectionResizeTimer) + this.w.globals.selectionResizeTimer = window.setTimeout(() => { + const gridRectDim = this.gridRect.getBoundingClientRect() + const selectionRect = selRect.node.getBoundingClientRect() + + const minX = + w.globals.xAxisScale.niceMin + + (selectionRect.left - gridRectDim.left) * xyRatios.xRatio + const maxX = + w.globals.xAxisScale.niceMin + + (selectionRect.right - gridRectDim.left) * xyRatios.xRatio + + const minY = + w.globals.yAxisScale[0].niceMin + + (gridRectDim.bottom - selectionRect.bottom) * xyRatios.yRatio[0] + const maxY = + w.globals.yAxisScale[0].niceMax - + (selectionRect.top - gridRectDim.top) * xyRatios.yRatio[0] + + const xyAxis = { + xaxis: { + min: minX, + max: maxX + }, + yaxis: { + min: minY, + max: maxY + } + } + w.config.chart.events.selection(this.ctx, xyAxis) + + if ( + w.config.chart.brush.enabled && + w.config.chart.events.brushScrolled !== undefined + ) { + w.config.chart.events.brushScrolled(this.ctx, xyAxis) + } + }, timerInterval) + } + } + + selectionDrawn({ context, zoomtype }) { + const w = this.w + const me = context + const xyRatios = this.xyRatios + const toolbar = this.ctx.toolbar + + if (me.startX > me.endX) { + let tempX = me.startX + me.startX = me.endX + me.endX = tempX + } + if (me.startY > me.endY) { + let tempY = me.startY + me.startY = me.endY + me.endY = tempY + } + + let xLowestValue = undefined + let xHighestValue = undefined + + if (!w.globals.isRangeBar) { + xLowestValue = w.globals.xAxisScale.niceMin + me.startX * xyRatios.xRatio + xHighestValue = w.globals.xAxisScale.niceMin + me.endX * xyRatios.xRatio + } else { + xLowestValue = + w.globals.yAxisScale[0].niceMin + me.startX * xyRatios.invertedYRatio + xHighestValue = + w.globals.yAxisScale[0].niceMin + me.endX * xyRatios.invertedYRatio + } + + // TODO: we will consider the 1st y axis values here for getting highest and lowest y + let yHighestValue = [] + let yLowestValue = [] + + w.config.yaxis.forEach((yaxe, index) => { + yHighestValue.push( + w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.startY + ) + yLowestValue.push( + w.globals.yAxisScale[index].niceMax - xyRatios.yRatio[index] * me.endY + ) + }) + + if ( + me.dragged && + (me.dragX > 10 || me.dragY > 10) && + xLowestValue !== xHighestValue + ) { + if (w.globals.zoomEnabled) { + let yaxis = Utils.clone(w.globals.initialConfig.yaxis) + let xaxis = Utils.clone(w.globals.initialConfig.xaxis) + + w.globals.zoomed = true + + if (w.config.xaxis.convertedCatToNumeric) { + xLowestValue = Math.floor(xLowestValue) + xHighestValue = Math.floor(xHighestValue) + + if (xLowestValue < 1) { + xLowestValue = 1 + xHighestValue = w.globals.dataPoints + } + + if (xHighestValue - xLowestValue < 2) { + xHighestValue = xLowestValue + 1 + } + } + + if (zoomtype === 'xy' || zoomtype === 'x') { + xaxis = { + min: xLowestValue, + max: xHighestValue + } + } + + if (zoomtype === 'xy' || zoomtype === 'y') { + yaxis.forEach((yaxe, index) => { + yaxis[index].min = yLowestValue[index] + yaxis[index].max = yHighestValue[index] + }) + } + + if (w.config.chart.zoom.autoScaleYaxis) { + const scale = new Scales(me.ctx) + yaxis = scale.autoScaleY(me.ctx, yaxis, { + xaxis + }) + } + + if (toolbar) { + let beforeZoomRange = toolbar.getBeforeZoomRange(xaxis, yaxis) + if (beforeZoomRange) { + xaxis = beforeZoomRange.xaxis ? beforeZoomRange.xaxis : xaxis + yaxis = beforeZoomRange.yaxis ? beforeZoomRange.yaxis : yaxis + } + } + + let options = { + xaxis + } + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis + } + me.ctx.updateHelpers._updateOptions( + options, + false, + me.w.config.chart.animations.dynamicAnimation.enabled + ) + + if (typeof w.config.chart.events.zoomed === 'function') { + toolbar.zoomCallback(xaxis, yaxis) + } + } else if (w.globals.selectionEnabled) { + let yaxis = null + let xaxis = null + xaxis = { + min: xLowestValue, + max: xHighestValue + } + if (zoomtype === 'xy' || zoomtype === 'y') { + yaxis = Utils.clone(w.config.yaxis) + yaxis.forEach((yaxe, index) => { + yaxis[index].min = yLowestValue[index] + yaxis[index].max = yHighestValue[index] + }) + } + + w.globals.selection = me.selection + if (typeof w.config.chart.events.selection === 'function') { + w.config.chart.events.selection(me.ctx, { + xaxis, + yaxis + }) + } + } + } + } + + panDragging({ context }) { + const w = this.w + let me = context + + // check to make sure there is data to compare against + if (typeof w.globals.lastClientPosition.x !== 'undefined') { + // get the change from last position to this position + const deltaX = w.globals.lastClientPosition.x - me.clientX + const deltaY = w.globals.lastClientPosition.y - me.clientY + + // check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero + if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) { + this.moveDirection = 'left' + } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) { + this.moveDirection = 'right' + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) { + this.moveDirection = 'up' + } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) { + this.moveDirection = 'down' + } + } + + // set the new last position to the current for next time (to get the position of drag) + w.globals.lastClientPosition = { + x: me.clientX, + y: me.clientY + } + + let xLowestValue = w.globals.isRangeBar ? w.globals.minY : w.globals.minX + + let xHighestValue = w.globals.isRangeBar ? w.globals.maxY : w.globals.maxX + + // on a category, we don't pan continuosly as it causes bugs + if (!w.config.xaxis.convertedCatToNumeric) { + me.panScrolled(xLowestValue, xHighestValue) + } + } + + delayedPanScrolled() { + const w = this.w + + let newMinX = w.globals.minX + let newMaxX = w.globals.maxX + const centerX = (w.globals.maxX - w.globals.minX) / 2 + + if (this.moveDirection === 'left') { + newMinX = w.globals.minX + centerX + newMaxX = w.globals.maxX + centerX + } else if (this.moveDirection === 'right') { + newMinX = w.globals.minX - centerX + newMaxX = w.globals.maxX - centerX + } + + newMinX = Math.floor(newMinX) + newMaxX = Math.floor(newMaxX) + this.updateScrolledChart( + { xaxis: { min: newMinX, max: newMaxX } }, + newMinX, + newMaxX + ) + } + + panScrolled(xLowestValue, xHighestValue) { + const w = this.w + + const xyRatios = this.xyRatios + let yaxis = Utils.clone(w.globals.initialConfig.yaxis) + + let xRatio = xyRatios.xRatio + let minX = w.globals.minX + let maxX = w.globals.maxX + if (w.globals.isRangeBar) { + xRatio = xyRatios.invertedYRatio + minX = w.globals.minY + maxX = w.globals.maxY + } + + if (this.moveDirection === 'left') { + xLowestValue = minX + (w.globals.gridWidth / 15) * xRatio + xHighestValue = maxX + (w.globals.gridWidth / 15) * xRatio + } else if (this.moveDirection === 'right') { + xLowestValue = minX - (w.globals.gridWidth / 15) * xRatio + xHighestValue = maxX - (w.globals.gridWidth / 15) * xRatio + } + + if (!w.globals.isRangeBar) { + if ( + xLowestValue < w.globals.initialMinX || + xHighestValue > w.globals.initialMaxX + ) { + xLowestValue = minX + xHighestValue = maxX + } + } + + let xaxis = { + min: xLowestValue, + max: xHighestValue + } + + if (w.config.chart.zoom.autoScaleYaxis) { + const scale = new Scales(this.ctx) + yaxis = scale.autoScaleY(this.ctx, yaxis, { + xaxis + }) + } + + let options = { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + } + + if (!w.config.chart.group) { + // if chart in a group, prevent yaxis update here + // fix issue #650 + options.yaxis = yaxis + } + + this.updateScrolledChart(options, xLowestValue, xHighestValue) + } + + updateScrolledChart(options, xLowestValue, xHighestValue) { + const w = this.w + + this.ctx.updateHelpers._updateOptions(options, false, false) + + if (typeof w.config.chart.events.scrolled === 'function') { + w.config.chart.events.scrolled(this.ctx, { + xaxis: { + min: xLowestValue, + max: xHighestValue + } + }) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/annotations/Annotations.js b/public/assets/libs/apexcharts/src/modules/annotations/Annotations.js new file mode 100644 index 0000000..6157714 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/annotations/Annotations.js @@ -0,0 +1,321 @@ +import Graphics from '../../modules/Graphics' +import Utils from '../../utils/Utils' +import Helpers from './Helpers' +import XAxisAnnotations from './XAxisAnnotations' +import YAxisAnnotations from './YAxisAnnotations' +import PointsAnnotations from './PointsAnnotations' +import Options from './../settings/Options' + +/** + * ApexCharts Annotations Class for drawing lines/rects on both xaxis and yaxis. + * + * @module Annotations + **/ +export default class Annotations { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + this.graphics = new Graphics(this.ctx) + + if (this.w.globals.isBarHorizontal) { + this.invertAxis = true + } + + this.helpers = new Helpers(this) + this.xAxisAnnotations = new XAxisAnnotations(this) + this.yAxisAnnotations = new YAxisAnnotations(this) + this.pointsAnnotations = new PointsAnnotations(this) + + if (this.w.globals.isBarHorizontal && this.w.config.yaxis[0].reversed) { + this.inversedReversedAxis = true + } + + this.xDivision = this.w.globals.gridWidth / this.w.globals.dataPoints + } + + drawAxesAnnotations() { + const w = this.w + if (w.globals.axisCharts) { + let yAnnotations = this.yAxisAnnotations.drawYAxisAnnotations() + let xAnnotations = this.xAxisAnnotations.drawXAxisAnnotations() + let pointAnnotations = this.pointsAnnotations.drawPointAnnotations() + + const initialAnim = w.config.chart.animations.enabled + + const annoArray = [yAnnotations, xAnnotations, pointAnnotations] + const annoElArray = [ + xAnnotations.node, + yAnnotations.node, + pointAnnotations.node + ] + for (let i = 0; i < 3; i++) { + w.globals.dom.elGraphical.add(annoArray[i]) + if (initialAnim && !w.globals.resized && !w.globals.dataChanged) { + // fixes apexcharts/apexcharts.js#685 + if ( + w.config.chart.type !== 'scatter' && + w.config.chart.type !== 'bubble' && + w.globals.dataPoints > 1 + ) { + annoElArray[i].classList.add('apexcharts-element-hidden') + } + } + w.globals.delayedElements.push({ el: annoElArray[i], index: 0 }) + } + + // background sizes needs to be calculated after text is drawn, so calling them last + this.helpers.annotationsBackground() + } + } + + drawImageAnnos() { + const w = this.w + + w.config.annotations.images.map((s, index) => { + this.addImage(s, index) + }) + } + + drawTextAnnos() { + const w = this.w + + w.config.annotations.texts.map((t, index) => { + this.addText(t, index) + }) + } + + addXaxisAnnotation(anno, parent, index) { + this.xAxisAnnotations.addXaxisAnnotation(anno, parent, index) + } + + addYaxisAnnotation(anno, parent, index) { + this.yAxisAnnotations.addYaxisAnnotation(anno, parent, index) + } + + addPointAnnotation(anno, parent, index) { + this.pointsAnnotations.addPointAnnotation(anno, parent, index) + } + + addText(params, index) { + const { + x, + y, + text, + textAnchor, + foreColor, + fontSize, + fontFamily, + fontWeight, + cssClass, + backgroundColor, + borderWidth, + strokeDashArray, + borderRadius, + borderColor, + appendTo = '.apexcharts-annotations', + paddingLeft = 4, + paddingRight = 4, + paddingBottom = 2, + paddingTop = 2 + } = params + + const w = this.w + + let elText = this.graphics.drawText({ + x, + y, + text, + textAnchor: textAnchor || 'start', + fontSize: fontSize || '12px', + fontWeight: fontWeight || 'regular', + fontFamily: fontFamily || w.config.chart.fontFamily, + foreColor: foreColor || w.config.chart.foreColor, + cssClass: 'apexcharts-text ' + cssClass ? cssClass : '' + }) + + const parent = w.globals.dom.baseEl.querySelector(appendTo) + if (parent) { + parent.appendChild(elText.node) + } + + const textRect = elText.bbox() + + if (text) { + const elRect = this.graphics.drawRect( + textRect.x - paddingLeft, + textRect.y - paddingTop, + textRect.width + paddingLeft + paddingRight, + textRect.height + paddingBottom + paddingTop, + borderRadius, + backgroundColor ? backgroundColor : 'transparent', + 1, + borderWidth, + borderColor, + strokeDashArray + ) + + parent.insertBefore(elRect.node, elText.node) + } + } + + addImage(params, index) { + const w = this.w + + const { + path, + x = 0, + y = 0, + width = 20, + height = 20, + appendTo = '.apexcharts-annotations' + } = params + + let img = w.globals.dom.Paper.image(path) + img.size(width, height).move(x, y) + + const parent = w.globals.dom.baseEl.querySelector(appendTo) + if (parent) { + parent.appendChild(img.node) + } + + return img + } + + // The addXaxisAnnotation method requires a parent class, and user calling this method externally on the chart instance may not specify parent, hence a different method + addXaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params, + pushToMemory, + context, + type: 'xaxis', + contextMethod: context.addXaxisAnnotation + }) + return context + } + + addYaxisAnnotationExternal(params, pushToMemory, context) { + this.addAnnotationExternal({ + params, + pushToMemory, + context, + type: 'yaxis', + contextMethod: context.addYaxisAnnotation + }) + return context + } + + addPointAnnotationExternal(params, pushToMemory, context) { + if (typeof this.invertAxis === 'undefined') { + this.invertAxis = context.w.globals.isBarHorizontal + } + + this.addAnnotationExternal({ + params, + pushToMemory, + context, + type: 'point', + contextMethod: context.addPointAnnotation + }) + return context + } + + addAnnotationExternal({ + params, + pushToMemory, + context, + type, + contextMethod + }) { + const me = context + const w = me.w + const parent = w.globals.dom.baseEl.querySelector( + `.apexcharts-${type}-annotations` + ) + const index = parent.childNodes.length + 1 + + const options = new Options() + const axesAnno = Object.assign( + {}, + type === 'xaxis' + ? options.xAxisAnnotation + : type === 'yaxis' + ? options.yAxisAnnotation + : options.pointAnnotation + ) + + const anno = Utils.extend(axesAnno, params) + + switch (type) { + case 'xaxis': + this.addXaxisAnnotation(anno, parent, index) + break + case 'yaxis': + this.addYaxisAnnotation(anno, parent, index) + break + case 'point': + this.addPointAnnotation(anno, parent, index) + break + } + + // add background + let axesAnnoLabel = w.globals.dom.baseEl.querySelector( + `.apexcharts-${type}-annotations .apexcharts-${type}-annotation-label[rel='${index}']` + ) + const elRect = this.helpers.addBackgroundToAnno(axesAnnoLabel, anno) + if (elRect) { + parent.insertBefore(elRect.node, axesAnnoLabel) + } + + if (pushToMemory) { + w.globals.memory.methodsToExec.push({ + context: me, + id: anno.id ? anno.id : Utils.randomId(), + method: contextMethod, + label: 'addAnnotation', + params + }) + } + + return context + } + + clearAnnotations(ctx) { + const w = ctx.w + let annos = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations' + ) + + // annotations added externally should be cleared out too + w.globals.memory.methodsToExec.map((m, i) => { + if (m.label === 'addText' || m.label === 'addAnnotation') { + w.globals.memory.methodsToExec.splice(i, 1) + } + }) + + annos = Utils.listToArray(annos) + + // delete the DOM elements + Array.prototype.forEach.call(annos, (a) => { + while (a.firstChild) { + a.removeChild(a.firstChild) + } + }) + } + + removeAnnotation(ctx, id) { + const w = ctx.w + let annos = w.globals.dom.baseEl.querySelectorAll(`.${id}`) + + if (annos) { + w.globals.memory.methodsToExec.map((m, i) => { + if (m.id === id) { + w.globals.memory.methodsToExec.splice(i, 1) + } + }) + + Array.prototype.forEach.call(annos, (a) => { + a.parentElement.removeChild(a) + }) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/annotations/Helpers.js b/public/assets/libs/apexcharts/src/modules/annotations/Helpers.js new file mode 100644 index 0000000..75ef5aa --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/annotations/Helpers.js @@ -0,0 +1,245 @@ +import CoreUtils from '../CoreUtils' + +export default class Helpers { + constructor(annoCtx) { + this.w = annoCtx.w + this.annoCtx = annoCtx + } + + setOrientations(anno, annoIndex = null) { + let w = this.w + + if (anno.label.orientation === 'vertical') { + const i = annoIndex !== null ? annoIndex : 0 + let xAnno = w.globals.dom.baseEl.querySelector( + `.apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='${i}']` + ) + + if (xAnno !== null) { + const xAnnoCoord = xAnno.getBoundingClientRect() + xAnno.setAttribute( + 'x', + parseFloat(xAnno.getAttribute('x')) - xAnnoCoord.height + 4 + ) + + if (anno.label.position === 'top') { + xAnno.setAttribute( + 'y', + parseFloat(xAnno.getAttribute('y')) + xAnnoCoord.width + ) + } else { + xAnno.setAttribute( + 'y', + parseFloat(xAnno.getAttribute('y')) - xAnnoCoord.width + ) + } + + let annoRotatingCenter = this.annoCtx.graphics.rotateAroundCenter(xAnno) + const x = annoRotatingCenter.x + const y = annoRotatingCenter.y + + xAnno.setAttribute('transform', `rotate(-90 ${x} ${y})`) + } + } + } + + addBackgroundToAnno(annoEl, anno) { + const w = this.w + + if ( + !annoEl || + typeof anno.label.text === 'undefined' || + (typeof anno.label.text !== 'undefined' && + !String(anno.label.text).trim()) + ) + return null + + const elGridRect = w.globals.dom.baseEl + .querySelector('.apexcharts-grid') + .getBoundingClientRect() + + const coords = annoEl.getBoundingClientRect() + + let pleft = anno.label.style.padding.left + let pright = anno.label.style.padding.right + let ptop = anno.label.style.padding.top + let pbottom = anno.label.style.padding.bottom + + if (anno.label.orientation === 'vertical') { + ptop = anno.label.style.padding.left + pbottom = anno.label.style.padding.right + pleft = anno.label.style.padding.top + pright = anno.label.style.padding.bottom + } + + const x1 = coords.left - elGridRect.left - pleft + const y1 = coords.top - elGridRect.top - ptop + const elRect = this.annoCtx.graphics.drawRect( + x1 - w.globals.barPadForNumericAxis, + y1, + coords.width + pleft + pright, + coords.height + ptop + pbottom, + anno.label.borderRadius, + anno.label.style.background, + 1, + anno.label.borderWidth, + anno.label.borderColor, + 0 + ) + + if (anno.id) { + // don't escapeString for this ID as it causes duplicate rects + elRect.node.classList.add(anno.id) + } + + return elRect + } + + annotationsBackground() { + const w = this.w + + const add = (anno, i, type) => { + let annoLabel = w.globals.dom.baseEl.querySelector( + `.apexcharts-${type}-annotations .apexcharts-${type}-annotation-label[rel='${i}']` + ) + + if (annoLabel) { + const parent = annoLabel.parentNode + const elRect = this.addBackgroundToAnno(annoLabel, anno) + + if (elRect) { + parent.insertBefore(elRect.node, annoLabel) + + if (anno.label.mouseEnter) { + elRect.node.addEventListener( + 'mouseenter', + anno.label.mouseEnter.bind(this, anno) + ) + } + if (anno.label.mouseLeave) { + elRect.node.addEventListener( + 'mouseleave', + anno.label.mouseLeave.bind(this, anno) + ) + } + } + } + } + + w.config.annotations.xaxis.map((anno, i) => { + add(anno, i, 'xaxis') + }) + + w.config.annotations.yaxis.map((anno, i) => { + add(anno, i, 'yaxis') + }) + + w.config.annotations.points.map((anno, i) => { + add(anno, i, 'point') + }) + } + + getY1Y2(type, anno) { + let y = type === 'y1' ? anno.y : anno.y2 + let yP + + const w = this.w + if (this.annoCtx.invertAxis) { + let catIndex = w.globals.labels.indexOf(y) + if (w.config.xaxis.convertedCatToNumeric) { + catIndex = w.globals.categoryLabels.indexOf(y) + } + const xLabel = w.globals.dom.baseEl.querySelector( + '.apexcharts-yaxis-texts-g text:nth-child(' + (catIndex + 1) + ')' + ) + if (xLabel) { + yP = parseFloat(xLabel.getAttribute('y')) + } + } else { + let yPos + if (w.config.yaxis[anno.yAxisIndex].logarithmic) { + const coreUtils = new CoreUtils(this.annoCtx.ctx) + y = coreUtils.getLogVal(y, anno.yAxisIndex) + yPos = y / w.globals.yLogRatio[anno.yAxisIndex] + } else { + yPos = + (y - w.globals.minYArr[anno.yAxisIndex]) / + (w.globals.yRange[anno.yAxisIndex] / w.globals.gridHeight) + } + yP = w.globals.gridHeight - yPos + + if ( + w.config.yaxis[anno.yAxisIndex] && + w.config.yaxis[anno.yAxisIndex].reversed + ) { + yP = yPos + } + } + + return yP + } + + getX1X2(type, anno) { + const w = this.w + let min = this.annoCtx.invertAxis ? w.globals.minY : w.globals.minX + let max = this.annoCtx.invertAxis ? w.globals.maxY : w.globals.maxX + const range = this.annoCtx.invertAxis + ? w.globals.yRange[0] + : w.globals.xRange + + let x1 = (anno.x - min) / (range / w.globals.gridWidth) + + if (this.annoCtx.inversedReversedAxis) { + x1 = (max - anno.x) / (range / w.globals.gridWidth) + } + + if ( + (w.config.xaxis.type === 'category' || + w.config.xaxis.convertedCatToNumeric) && + !this.annoCtx.invertAxis && + !w.globals.dataFormatXNumeric + ) { + x1 = this.getStringX(anno.x) + } + + let x2 = (anno.x2 - min) / (range / w.globals.gridWidth) + + if (this.annoCtx.inversedReversedAxis) { + x2 = (max - anno.x2) / (range / w.globals.gridWidth) + } + if ( + (w.config.xaxis.type === 'category' || + w.config.xaxis.convertedCatToNumeric) && + !this.annoCtx.invertAxis && + !w.globals.dataFormatXNumeric + ) { + x2 = this.getStringX(anno.x2) + } + + return type === 'x1' ? x1 : x2 + } + + getStringX(x) { + const w = this.w + let rX = x + + if ( + w.config.xaxis.convertedCatToNumeric && + w.globals.categoryLabels.length + ) { + x = w.globals.categoryLabels.indexOf(x) + 1 + } + + let catIndex = w.globals.labels.indexOf(x) + + const xLabel = w.globals.dom.baseEl.querySelector( + '.apexcharts-xaxis-texts-g text:nth-child(' + (catIndex + 1) + ')' + ) + + if (xLabel) { + rX = parseFloat(xLabel.getAttribute('x')) + } + + return rX + } +} diff --git a/public/assets/libs/apexcharts/src/modules/annotations/PointsAnnotations.js b/public/assets/libs/apexcharts/src/modules/annotations/PointsAnnotations.js new file mode 100644 index 0000000..dc32420 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/annotations/PointsAnnotations.js @@ -0,0 +1,122 @@ +import Utils from '../../utils/Utils' +import Helpers from './Helpers' + +export default class PointAnnotations { + constructor(annoCtx) { + this.w = annoCtx.w + this.annoCtx = annoCtx + this.helpers = new Helpers(this.annoCtx) + } + + addPointAnnotation(anno, parent, index) { + const w = this.w + + let x = this.helpers.getX1X2('x1', anno) + let y = this.helpers.getY1Y2('y1', anno) + + if (!Utils.isNumber(x)) return + + let optsPoints = { + pSize: anno.marker.size, + pointStrokeWidth: anno.marker.strokeWidth, + pointFillColor: anno.marker.fillColor, + pointStrokeColor: anno.marker.strokeColor, + shape: anno.marker.shape, + pRadius: anno.marker.radius, + class: `apexcharts-point-annotation-marker ${anno.marker.cssClass} ${ + anno.id ? anno.id : '' + }` + } + + let point = this.annoCtx.graphics.drawMarker( + x + anno.marker.offsetX, + y + anno.marker.offsetY, + optsPoints + ) + + parent.appendChild(point.node) + + const text = anno.label.text ? anno.label.text : '' + + let elText = this.annoCtx.graphics.drawText({ + x: x + anno.label.offsetX, + y: + y + + anno.label.offsetY - + anno.marker.size - + parseFloat(anno.label.style.fontSize) / 1.6, + text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: `apexcharts-point-annotation-label ${ + anno.label.style.cssClass + } ${anno.id ? anno.id : ''}` + }) + + elText.attr({ + rel: index + }) + + parent.appendChild(elText.node) + + // TODO: deprecate this as we will use custom + if (anno.customSVG.SVG) { + let g = this.annoCtx.graphics.group({ + class: + 'apexcharts-point-annotations-custom-svg ' + anno.customSVG.cssClass + }) + + g.attr({ + transform: `translate(${x + anno.customSVG.offsetX}, ${y + + anno.customSVG.offsetY})` + }) + + g.node.innerHTML = anno.customSVG.SVG + parent.appendChild(g.node) + } + + if (anno.image.path) { + let imgWidth = anno.image.width ? anno.image.width : 20 + let imgHeight = anno.image.height ? anno.image.height : 20 + + point = this.annoCtx.addImage({ + x: x + anno.image.offsetX - imgWidth / 2, + y: y + anno.image.offsetY - imgHeight / 2, + width: imgWidth, + height: imgHeight, + path: anno.image.path, + appendTo: '.apexcharts-point-annotations' + }) + } + + if (anno.mouseEnter) { + point.node.addEventListener( + 'mouseenter', + anno.mouseEnter.bind(this, anno) + ) + } + if (anno.mouseLeave) { + point.node.addEventListener( + 'mouseleave', + anno.mouseLeave.bind(this, anno) + ) + } + } + + drawPointAnnotations() { + let w = this.w + + let elg = this.annoCtx.graphics.group({ + class: 'apexcharts-point-annotations' + }) + + w.config.annotations.points.map((anno, index) => { + this.addPointAnnotation(anno, elg.node, index) + }) + + return elg + } +} diff --git a/public/assets/libs/apexcharts/src/modules/annotations/XAxisAnnotations.js b/public/assets/libs/apexcharts/src/modules/annotations/XAxisAnnotations.js new file mode 100644 index 0000000..ff16c93 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/annotations/XAxisAnnotations.js @@ -0,0 +1,118 @@ +import Utils from '../../utils/Utils' +import Helpers from './Helpers' + +export default class XAnnotations { + constructor(annoCtx) { + this.w = annoCtx.w + this.annoCtx = annoCtx + + this.invertAxis = this.annoCtx.invertAxis + + this.helpers = new Helpers(this.annoCtx) + } + + addXaxisAnnotation(anno, parent, index) { + let w = this.w + + let x1 = this.helpers.getX1X2('x1', anno) + let x2 + + const text = anno.label.text + + let strokeDashArray = anno.strokeDashArray + + if (!Utils.isNumber(x1)) return + + if (anno.x2 === null || typeof anno.x2 === 'undefined') { + let line = this.annoCtx.graphics.drawLine( + x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x1 + anno.offsetX, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, //dashArray + anno.borderWidth + ) + parent.appendChild(line.node) + if (anno.id) { + line.node.classList.add(anno.id) + } + } else { + x2 = this.helpers.getX1X2('x2', anno) + + if (x2 < x1) { + let temp = x1 + x1 = x2 + x2 = temp + } + + let rect = this.annoCtx.graphics.drawRect( + x1 + anno.offsetX, // x1 + 0 + anno.offsetY, // y1 + x2 - x1, // x2 + w.globals.gridHeight + anno.offsetY, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ) + rect.node.classList.add('apexcharts-annotation-rect') + rect.attr('clip-path', `url(#gridRectMask${w.globals.cuid})`) + parent.appendChild(rect.node) + if (anno.id) { + rect.node.classList.add(anno.id) + } + } + let textY = anno.label.position === 'top' ? 4 : w.globals.gridHeight + + let textRects = this.annoCtx.graphics.getTextRects( + text, + parseFloat(anno.label.style.fontSize) + ) + + let elText = this.annoCtx.graphics.drawText({ + x: x1 + anno.label.offsetX, + y: + textY + + anno.label.offsetY - + (anno.label.orientation === 'vertical' + ? anno.label.position === 'top' + ? textRects.width / 2 - 12 + : -textRects.width / 2 + : 0), + text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: `apexcharts-xaxis-annotation-label ${ + anno.label.style.cssClass + } ${anno.id ? anno.id : ''}` + }) + + elText.attr({ + rel: index + }) + + parent.appendChild(elText.node) + + // after placing the annotations on svg, set any vertically placed annotations + this.annoCtx.helpers.setOrientations(anno, index) + } + drawXAxisAnnotations() { + let w = this.w + + let elg = this.annoCtx.graphics.group({ + class: 'apexcharts-xaxis-annotations' + }) + + w.config.annotations.xaxis.map((anno, index) => { + this.addXaxisAnnotation(anno, elg.node, index) + }) + + return elg + } +} diff --git a/public/assets/libs/apexcharts/src/modules/annotations/YAxisAnnotations.js b/public/assets/libs/apexcharts/src/modules/annotations/YAxisAnnotations.js new file mode 100644 index 0000000..0ee2c6c --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/annotations/YAxisAnnotations.js @@ -0,0 +1,112 @@ +import Helpers from './Helpers' + +export default class YAnnotations { + constructor(annoCtx) { + this.w = annoCtx.w + this.annoCtx = annoCtx + + this.helpers = new Helpers(this.annoCtx) + } + + addYaxisAnnotation(anno, parent, index) { + let w = this.w + + let strokeDashArray = anno.strokeDashArray + + let y1 = this.helpers.getY1Y2('y1', anno) + let y2 + + const text = anno.label.text + + if (anno.y2 === null || typeof anno.y2 === 'undefined') { + let line = this.annoCtx.graphics.drawLine( + 0 + anno.offsetX, // x1 + y1 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 + anno.offsetY, // y2 + anno.borderColor, // lineColor + strokeDashArray, // dashArray + anno.borderWidth + ) + parent.appendChild(line.node) + if (anno.id) { + line.node.classList.add(anno.id) + } + } else { + y2 = this.helpers.getY1Y2('y2', anno) + + if (y2 > y1) { + let temp = y1 + y1 = y2 + y2 = temp + } + + let rect = this.annoCtx.graphics.drawRect( + 0 + anno.offsetX, // x1 + y2 + anno.offsetY, // y1 + this._getYAxisAnnotationWidth(anno), // x2 + y1 - y2, // y2 + 0, // radius + anno.fillColor, // color + anno.opacity, // opacity, + 1, // strokeWidth + anno.borderColor, // strokeColor + strokeDashArray // stokeDashArray + ) + rect.node.classList.add('apexcharts-annotation-rect') + rect.attr('clip-path', `url(#gridRectMask${w.globals.cuid})`) + + parent.appendChild(rect.node) + if (anno.id) { + rect.node.classList.add(anno.id) + } + } + let textX = anno.label.position === 'right' ? w.globals.gridWidth : 0 + + let elText = this.annoCtx.graphics.drawText({ + x: textX + anno.label.offsetX, + y: (y2 != null ? y2 : y1) + anno.label.offsetY - 3, + text, + textAnchor: anno.label.textAnchor, + fontSize: anno.label.style.fontSize, + fontFamily: anno.label.style.fontFamily, + fontWeight: anno.label.style.fontWeight, + foreColor: anno.label.style.color, + cssClass: `apexcharts-yaxis-annotation-label ${ + anno.label.style.cssClass + } ${anno.id ? anno.id : ''}` + }) + + elText.attr({ + rel: index + }) + + parent.appendChild(elText.node) + } + + _getYAxisAnnotationWidth(anno) { + // issue apexcharts.js#2009 + const w = this.w + let width = w.globals.gridWidth + if (anno.width.indexOf('%') > -1) { + width = (w.globals.gridWidth * parseInt(anno.width, 10)) / 100 + } else { + width = parseInt(anno.width, 10) + } + return width + anno.offsetX + } + + drawYAxisAnnotations() { + let w = this.w + + let elg = this.annoCtx.graphics.group({ + class: 'apexcharts-yaxis-annotations' + }) + + w.config.annotations.yaxis.map((anno, index) => { + this.addYaxisAnnotation(anno, elg.node, index) + }) + + return elg + } +} diff --git a/public/assets/libs/apexcharts/src/modules/axes/Axes.js b/public/assets/libs/apexcharts/src/modules/axes/Axes.js new file mode 100644 index 0000000..0ecfcbd --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/axes/Axes.js @@ -0,0 +1,39 @@ +import XAxis from './XAxis' +import YAxis from './YAxis' + +export default class Axes { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + drawAxis(type, xyRatios) { + let gl = this.w.globals + let cnf = this.w.config + + let xAxis = new XAxis(this.ctx) + let yAxis = new YAxis(this.ctx) + + if (gl.axisCharts && type !== 'radar') { + let elXaxis, elYaxis + + if (gl.isBarHorizontal) { + elYaxis = yAxis.drawYaxisInversed(0) + elXaxis = xAxis.drawXaxisInversed(0) + + gl.dom.elGraphical.add(elXaxis) + gl.dom.elGraphical.add(elYaxis) + } else { + elXaxis = xAxis.drawXaxis() + gl.dom.elGraphical.add(elXaxis) + + cnf.yaxis.map((yaxe, index) => { + if (gl.ignoreYAxisIndexes.indexOf(index) === -1) { + elYaxis = yAxis.drawYaxis(index) + gl.dom.Paper.add(elYaxis) + } + }) + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/axes/AxesUtils.js b/public/assets/libs/apexcharts/src/modules/axes/AxesUtils.js new file mode 100644 index 0000000..60c8307 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/axes/AxesUtils.js @@ -0,0 +1,247 @@ +import Formatters from '../Formatters' +import Graphics from '../Graphics' +import CoreUtils from '../CoreUtils' +import DateTime from '../../utils/DateTime' + +export default class AxesUtils { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + // Based on the formatter function, get the label text and position + getLabel( + labels, + timescaleLabels, + x, + i, + drawnLabels = [], + fontSize = '12px', + isLeafGroup = true + ) { + const w = this.w + let rawLabel = typeof labels[i] === 'undefined' ? '' : labels[i] + let label = rawLabel + + let xlbFormatter = w.globals.xLabelFormatter + let customFormatter = w.config.xaxis.labels.formatter + + let isBold = false + + let xFormat = new Formatters(this.ctx) + let timestamp = rawLabel + + if (isLeafGroup) { + label = xFormat.xLabelFormat(xlbFormatter, rawLabel, timestamp, { + i, + dateFormatter: new DateTime(this.ctx).formatDate, + w + }) + + if (customFormatter !== undefined) { + label = customFormatter(rawLabel, labels[i], { + i, + dateFormatter: new DateTime(this.ctx).formatDate, + w + }) + } + } + + const determineHighestUnit = (unit) => { + let highestUnit = null + timescaleLabels.forEach((t) => { + if (t.unit === 'month') { + highestUnit = 'year' + } else if (t.unit === 'day') { + highestUnit = 'month' + } else if (t.unit === 'hour') { + highestUnit = 'day' + } else if (t.unit === 'minute') { + highestUnit = 'hour' + } + }) + + return highestUnit === unit + } + if (timescaleLabels.length > 0) { + isBold = determineHighestUnit(timescaleLabels[i].unit) + x = timescaleLabels[i].position + label = timescaleLabels[i].value + } else { + if (w.config.xaxis.type === 'datetime' && customFormatter === undefined) { + label = '' + } + } + + if (typeof label === 'undefined') label = '' + + label = Array.isArray(label) ? label : label.toString() + + let graphics = new Graphics(this.ctx) + let textRect = {} + if (w.globals.rotateXLabels && isLeafGroup) { + textRect = graphics.getTextRects( + label, + parseInt(fontSize, 10), + null, + `rotate(${w.config.xaxis.labels.rotate} 0 0)`, + false + ) + } else { + textRect = graphics.getTextRects(label, parseInt(fontSize, 10)) + } + + const allowDuplicatesInTimeScale = + !w.config.xaxis.labels.showDuplicates && this.ctx.timeScale + + if ( + !Array.isArray(label) && + (label.indexOf('NaN') === 0 || + label.toLowerCase().indexOf('invalid') === 0 || + label.toLowerCase().indexOf('infinity') >= 0 || + (drawnLabels.indexOf(label) >= 0 && allowDuplicatesInTimeScale)) + ) { + label = '' + } + + return { + x, + text: label, + textRect, + isBold + } + } + + checkLabelBasedOnTickamount(i, label, labelsLen) { + const w = this.w + + let ticks = w.config.xaxis.tickAmount + if (ticks === 'dataPoints') ticks = Math.round(w.globals.gridWidth / 120) + + if (ticks > labelsLen) return label + let tickMultiple = Math.round(labelsLen / (ticks + 1)) + + if (i % tickMultiple === 0) { + return label + } else { + label.text = '' + } + + return label + } + + checkForOverflowingLabels( + i, + label, + labelsLen, + drawnLabels, + drawnLabelsRects + ) { + const w = this.w + + if (i === 0) { + // check if first label is being truncated + if (w.globals.skipFirstTimelinelabel) { + label.text = '' + } + } + + if (i === labelsLen - 1) { + // check if last label is being truncated + if (w.globals.skipLastTimelinelabel) { + label.text = '' + } + } + + if (w.config.xaxis.labels.hideOverlappingLabels && drawnLabels.length > 0) { + const prev = drawnLabelsRects[drawnLabelsRects.length - 1] + if ( + label.x < + prev.textRect.width / + (w.globals.rotateXLabels + ? Math.abs(w.config.xaxis.labels.rotate) / 12 + : 1.01) + + prev.x + ) { + label.text = '' + } + } + + return label + } + + checkForReversedLabels(i, labels) { + const w = this.w + if (w.config.yaxis[i] && w.config.yaxis[i].reversed) { + labels.reverse() + } + return labels + } + + isYAxisHidden(index) { + const w = this.w + const coreUtils = new CoreUtils(this.ctx) + + return ( + !w.config.yaxis[index].show || + (!w.config.yaxis[index].showForNullSeries && + coreUtils.isSeriesNull(index) && + w.globals.collapsedSeriesIndices.indexOf(index) === -1) + ) + } + + // get the label color for y-axis + // realIndex is the actual series index, while i is the tick Index + getYAxisForeColor(yColors, realIndex) { + const w = this.w + if (Array.isArray(yColors) && w.globals.yAxisScale[realIndex]) { + this.ctx.theme.pushExtraColors( + yColors, + w.globals.yAxisScale[realIndex].result.length, + false + ) + } + return yColors + } + + drawYAxisTicks( + x, + tickAmount, + axisBorder, + axisTicks, + realIndex, + labelsDivider, + elYaxis + ) { + let w = this.w + let graphics = new Graphics(this.ctx) + + // initial label position = 0; + let t = w.globals.translateY + + if (axisTicks.show && tickAmount > 0) { + if (w.config.yaxis[realIndex].opposite === true) x = x + axisTicks.width + + for (let i = tickAmount; i >= 0; i--) { + let tY = + t + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY - 1 + if (w.globals.isBarHorizontal) { + tY = labelsDivider * i + } + + if (w.config.chart.type === 'heatmap') { + tY = tY + labelsDivider / 2 + } + let elTick = graphics.drawLine( + x + axisBorder.offsetX - axisTicks.width + axisTicks.offsetX, + tY + axisTicks.offsetY, + x + axisBorder.offsetX + axisTicks.offsetX, + tY + axisTicks.offsetY, + axisTicks.color + ) + elYaxis.add(elTick) + t = t + labelsDivider + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/axes/Grid.js b/public/assets/libs/apexcharts/src/modules/axes/Grid.js new file mode 100644 index 0000000..1711405 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/axes/Grid.js @@ -0,0 +1,521 @@ +import CoreUtils from '../CoreUtils' +import Graphics from '../Graphics' +import XAxis from './XAxis' +import AxesUtils from './AxesUtils' + +/** + * ApexCharts Grid Class for drawing Cartesian Grid. + * + * @module Grid + **/ + +class Grid { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + const w = this.w + this.xaxisLabels = w.globals.labels.slice() + this.axesUtils = new AxesUtils(ctx) + + this.isRangeBar = w.globals.seriesRangeBar.length + + if (w.globals.timescaleLabels.length > 0) { + // timescaleLabels labels are there + this.xaxisLabels = w.globals.timescaleLabels.slice() + } + } + + // when using sparklines or when showing no grid, we need to have a grid area which is reused at many places for other calculations as well + drawGridArea(elGrid = null) { + let w = this.w + + let graphics = new Graphics(this.ctx) + + if (elGrid === null) { + elGrid = graphics.group({ + class: 'apexcharts-grid' + }) + } + + let elVerticalLine = graphics.drawLine( + w.globals.padHorizontal, + 1, + w.globals.padHorizontal, + w.globals.gridHeight, + 'transparent' + ) + + let elHorzLine = graphics.drawLine( + w.globals.padHorizontal, + w.globals.gridHeight, + w.globals.gridWidth, + w.globals.gridHeight, + 'transparent' + ) + + elGrid.add(elHorzLine) + elGrid.add(elVerticalLine) + + return elGrid + } + + drawGrid() { + let gl = this.w.globals + + let elgrid = null + + if (gl.axisCharts) { + // grid is drawn after xaxis and yaxis are drawn + elgrid = this.renderGrid() + + this.drawGridArea(elgrid.el) + } + return elgrid + } + + // This mask will clip off overflowing graphics from the drawable area + createGridMask() { + let w = this.w + let gl = w.globals + const graphics = new Graphics(this.ctx) + + let strokeSize = Array.isArray(w.config.stroke.width) + ? 0 + : w.config.stroke.width + + if (Array.isArray(w.config.stroke.width)) { + let strokeMaxSize = 0 + w.config.stroke.width.forEach((m) => { + strokeMaxSize = Math.max(strokeMaxSize, m) + }) + strokeSize = strokeMaxSize + } + + gl.dom.elGridRectMask = document.createElementNS(gl.SVGNS, 'clipPath') + gl.dom.elGridRectMask.setAttribute('id', `gridRectMask${gl.cuid}`) + + gl.dom.elGridRectMarkerMask = document.createElementNS(gl.SVGNS, 'clipPath') + gl.dom.elGridRectMarkerMask.setAttribute( + 'id', + `gridRectMarkerMask${gl.cuid}` + ) + + gl.dom.elForecastMask = document.createElementNS(gl.SVGNS, 'clipPath') + gl.dom.elForecastMask.setAttribute('id', `forecastMask${gl.cuid}`) + + gl.dom.elNonForecastMask = document.createElementNS(gl.SVGNS, 'clipPath') + gl.dom.elNonForecastMask.setAttribute('id', `nonForecastMask${gl.cuid}`) + + // let barHalfWidth = 0 + + const type = w.config.chart.type + const hasBar = + type === 'bar' || + type === 'rangeBar' || + type === 'candlestick' || + type === 'boxPlot' || + w.globals.comboBarCount > 0 + + let barWidthLeft = 0 + let barWidthRight = 0 + if (hasBar && w.globals.isXNumeric && !w.globals.isBarHorizontal) { + barWidthLeft = w.config.grid.padding.left + barWidthRight = w.config.grid.padding.right + + if (gl.barPadForNumericAxis > barWidthLeft) { + barWidthLeft = gl.barPadForNumericAxis + barWidthRight = gl.barPadForNumericAxis + } + } + gl.dom.elGridRect = graphics.drawRect( + -strokeSize / 2 - barWidthLeft - 2, + -strokeSize / 2, + gl.gridWidth + strokeSize + barWidthRight + barWidthLeft + 4, + gl.gridHeight + strokeSize, + 0, + '#fff' + ) + + let markerSize = w.globals.markers.largestSize + 1 + + gl.dom.elGridRectMarker = graphics.drawRect( + -markerSize * 2, + -markerSize * 2, + gl.gridWidth + markerSize * 4, + gl.gridHeight + markerSize * 4, + 0, + '#fff' + ) + gl.dom.elGridRectMask.appendChild(gl.dom.elGridRect.node) + gl.dom.elGridRectMarkerMask.appendChild(gl.dom.elGridRectMarker.node) + + let defs = gl.dom.baseEl.querySelector('defs') + defs.appendChild(gl.dom.elGridRectMask) + defs.appendChild(gl.dom.elForecastMask) + defs.appendChild(gl.dom.elNonForecastMask) + defs.appendChild(gl.dom.elGridRectMarkerMask) + } + + _drawGridLines({ i, x1, y1, x2, y2, xCount, parent }) { + const w = this.w + + const shouldDraw = () => { + if (i === 0 && w.globals.skipFirstTimelinelabel) { + return false + } + + if ( + i === xCount - 1 && + w.globals.skipLastTimelinelabel && + !w.config.xaxis.labels.formatter + ) { + return false + } + if (w.config.chart.type === 'radar') { + return false + } + return true + } + + if (shouldDraw()) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ x1, y1, x2, y2, parent }) + } + let y_2 = 0 + if (w.globals.hasGroups && w.config.xaxis.tickPlacement === 'between') { + const groups = w.globals.groups + if (groups) { + let gacc = 0 + for (let gi = 0; gacc < i && gi < groups.length; gi++) { + gacc += groups[gi].cols + } + if (gacc === i) { + y_2 = w.globals.xAxisLabelsHeight * 0.6 + } + } + } + + let xAxis = new XAxis(this.ctx) + xAxis.drawXaxisTicks(x1, y_2, this.elg) + } + } + + _drawGridLine({ x1, y1, x2, y2, parent }) { + const w = this.w + + const isHorzLine = parent.node.classList.contains( + 'apexcharts-gridlines-horizontal' + ) + + let strokeDashArray = w.config.grid.strokeDashArray + const offX = w.globals.barPadForNumericAxis + + const graphics = new Graphics(this) + let line = graphics.drawLine( + x1 - (isHorzLine ? offX : 0), + y1, + x2 + (isHorzLine ? offX : 0), + y2, + w.config.grid.borderColor, + strokeDashArray + ) + line.node.classList.add('apexcharts-gridline') + parent.add(line) + } + + _drawGridBandRect({ c, x1, y1, x2, y2, type }) { + const w = this.w + const graphics = new Graphics(this.ctx) + const offX = w.globals.barPadForNumericAxis + + if (type === 'column' && w.config.xaxis.type === 'datetime') return + + const color = w.config.grid[type].colors[c] + + let rect = graphics.drawRect( + x1 - (type === 'row' ? offX : 0), + y1, + x2 + (type === 'row' ? offX * 2 : 0), + y2, + 0, + color, + w.config.grid[type].opacity + ) + this.elg.add(rect) + rect.attr('clip-path', `url(#gridRectMask${w.globals.cuid})`) + rect.node.classList.add(`apexcharts-grid-${type}`) + } + + _drawXYLines({ xCount, tickAmount }) { + const w = this.w + + const datetimeLines = ({ xC, x1, y1, x2, y2 }) => { + for (let i = 0; i < xC; i++) { + x1 = this.xaxisLabels[i].position + x2 = this.xaxisLabels[i].position + + this._drawGridLines({ + i, + x1, + y1, + x2, + y2, + xCount, + parent: this.elgridLinesV + }) + } + } + + const categoryLines = ({ xC, x1, y1, x2, y2 }) => { + if ( + typeof w.config.xaxis.tickAmount !== 'undefined' && + w.config.xaxis.tickAmount !== 'dataPoints' && + w.config.xaxis.tickPlacement === 'on' + ) { + // user has specified tickamount in a category x-axis chart + const visibleLabels = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-text.apexcharts-xaxis-label tspan:not(:empty)' + ) + + visibleLabels.forEach((d, i) => { + const textRect = d.getBBox() + + this._drawGridLines({ + i, + x1: textRect.x + textRect.width / 2, + y1, + x2: textRect.x + textRect.width / 2, + y2, + xCount, + parent: this.elgridLinesV + }) + }) + } else { + for (let i = 0; i < xC + (w.globals.isXNumeric ? 0 : 1); i++) { + if (i === 0 && xC === 1 && w.globals.dataPoints === 1) { + // single datapoint + x1 = w.globals.gridWidth / 2 + x2 = x1 + } + this._drawGridLines({ + i, + x1, + y1, + x2, + y2, + xCount, + parent: this.elgridLinesV + }) + + x1 = x1 + w.globals.gridWidth / (w.globals.isXNumeric ? xC - 1 : xC) + x2 = x1 + } + } + } + + // draw vertical lines + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + let x1 = w.globals.padHorizontal + let y1 = 0 + let x2 + let y2 = w.globals.gridHeight + + if (w.globals.timescaleLabels.length) { + datetimeLines({ xC: xCount, x1, y1, x2, y2 }) + } else { + if (w.globals.isXNumeric) { + xCount = w.globals.xAxisScale.result.length + } + if (w.config.xaxis.convertedCatToNumeric) { + // in case of a convertedCatToNumeric, some labels might be skipped due to hideOverLapping labels, hence use this var to get the visible ticks + xCount = w.globals.xaxisLabelsCount + } + categoryLines({ xC: xCount, x1, y1, x2, y2 }) + } + } + + // draw horizontal lines + if (w.config.grid.yaxis.lines.show) { + let x1 = 0 + let y1 = 0 + let y2 = 0 + let x2 = w.globals.gridWidth + let tA = tickAmount + 1 + + if (this.isRangeBar) { + tA = w.globals.labels.length + } + + for (let i = 0; i < tA + (this.isRangeBar ? 1 : 0); i++) { + this._drawGridLine({ x1, y1, x2, y2, parent: this.elgridLinesH }) + + y1 = y1 + w.globals.gridHeight / (this.isRangeBar ? tA : tickAmount) + + y2 = y1 + } + } + } + + _drawInvertedXYLines({ xCount }) { + const w = this.w + + // draw vertical lines + if (w.config.grid.xaxis.lines.show || w.config.xaxis.axisTicks.show) { + let x1 = w.globals.padHorizontal + let y1 = 0 + let x2 + let y2 = w.globals.gridHeight + for (let i = 0; i < xCount + 1; i++) { + if (w.config.grid.xaxis.lines.show) { + this._drawGridLine({ x1, y1, x2, y2, parent: this.elgridLinesV }) + } + + let xAxis = new XAxis(this.ctx) + xAxis.drawXaxisTicks(x1, 0, this.elg) + x1 = x1 + w.globals.gridWidth / xCount + 0.3 + x2 = x1 + } + } + + // draw horizontal lines + if (w.config.grid.yaxis.lines.show) { + let x1 = 0 + let y1 = 0 + let y2 = 0 + let x2 = w.globals.gridWidth + + for (let i = 0; i < w.globals.dataPoints + 1; i++) { + this._drawGridLine({ x1, y1, x2, y2, parent: this.elgridLinesH }) + + y1 = y1 + w.globals.gridHeight / w.globals.dataPoints + y2 = y1 + } + } + } + + // actual grid rendering + renderGrid() { + let w = this.w + let graphics = new Graphics(this.ctx) + + this.elg = graphics.group({ + class: 'apexcharts-grid' + }) + this.elgridLinesH = graphics.group({ + class: 'apexcharts-gridlines-horizontal' + }) + this.elgridLinesV = graphics.group({ + class: 'apexcharts-gridlines-vertical' + }) + + this.elg.add(this.elgridLinesH) + this.elg.add(this.elgridLinesV) + + if (!w.config.grid.show) { + this.elgridLinesV.hide() + this.elgridLinesH.hide() + } + + let yTickAmount = w.globals.yAxisScale.length + ? w.globals.yAxisScale[0].result.length - 1 + : 5 + for (let i = 0; i < w.globals.series.length; i++) { + if (typeof w.globals.yAxisScale[i] !== 'undefined') { + yTickAmount = w.globals.yAxisScale[i].result.length - 1 + } + if (yTickAmount > 2) break + } + + let xCount + + if (!w.globals.isBarHorizontal || this.isRangeBar) { + xCount = this.xaxisLabels.length + + if (this.isRangeBar) { + yTickAmount = w.globals.labels.length + if (w.config.xaxis.tickAmount && w.config.xaxis.labels.formatter) { + xCount = w.config.xaxis.tickAmount + } + } + this._drawXYLines({ xCount, tickAmount: yTickAmount }) + } else { + xCount = yTickAmount + + // for horizontal bar chart, get the xaxis tickamount + yTickAmount = w.globals.xTickAmount + this._drawInvertedXYLines({ xCount, tickAmount: yTickAmount }) + } + + this.drawGridBands(xCount, yTickAmount) + return { + el: this.elg, + xAxisTickWidth: w.globals.gridWidth / xCount + } + } + + drawGridBands(xCount, tickAmount) { + const w = this.w + + // rows background bands + if ( + w.config.grid.row.colors !== undefined && + w.config.grid.row.colors.length > 0 + ) { + let x1 = 0 + let y1 = 0 + let y2 = w.globals.gridHeight / tickAmount + let x2 = w.globals.gridWidth + + for (let i = 0, c = 0; i < tickAmount; i++, c++) { + if (c >= w.config.grid.row.colors.length) { + c = 0 + } + this._drawGridBandRect({ + c, + x1, + y1, + x2, + y2, + type: 'row' + }) + + y1 = y1 + w.globals.gridHeight / tickAmount + } + } + + // columns background bands + if ( + w.config.grid.column.colors !== undefined && + w.config.grid.column.colors.length > 0 + ) { + const xc = + !w.globals.isBarHorizontal && + (w.config.xaxis.type === 'category' || + w.config.xaxis.convertedCatToNumeric) + ? xCount - 1 + : xCount + let x1 = w.globals.padHorizontal + let y1 = 0 + let x2 = w.globals.padHorizontal + w.globals.gridWidth / xc + let y2 = w.globals.gridHeight + for (let i = 0, c = 0; i < xCount; i++, c++) { + if (c >= w.config.grid.column.colors.length) { + c = 0 + } + this._drawGridBandRect({ + c, + x1, + y1, + x2, + y2, + type: 'column' + }) + + x1 = x1 + w.globals.gridWidth / xc + } + } + } +} + +export default Grid diff --git a/public/assets/libs/apexcharts/src/modules/axes/XAxis.js b/public/assets/libs/apexcharts/src/modules/axes/XAxis.js new file mode 100644 index 0000000..29bef23 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/axes/XAxis.js @@ -0,0 +1,633 @@ +import Graphics from '../Graphics' +import AxesUtils from './AxesUtils' + +/** + * ApexCharts XAxis Class for drawing X-Axis. + * + * @module XAxis + **/ + +export default class XAxis { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + const w = this.w + this.axesUtils = new AxesUtils(ctx) + + this.xaxisLabels = w.globals.labels.slice() + if (w.globals.timescaleLabels.length > 0 && !w.globals.isBarHorizontal) { + // timeline labels are there and chart is not rangeabr timeline + this.xaxisLabels = w.globals.timescaleLabels.slice() + } + + if (w.config.xaxis.overwriteCategories) { + this.xaxisLabels = w.config.xaxis.overwriteCategories + } + this.drawnLabels = [] + this.drawnLabelsRects = [] + + if (w.config.xaxis.position === 'top') { + this.offY = 0 + } else { + this.offY = w.globals.gridHeight + 1 + } + this.offY = this.offY + w.config.xaxis.axisBorder.offsetY + this.isCategoryBarHorizontal = + w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal + + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize + this.xaxisFontFamily = w.config.xaxis.labels.style.fontFamily + this.xaxisForeColors = w.config.xaxis.labels.style.colors + this.xaxisBorderWidth = w.config.xaxis.axisBorder.width + if (this.isCategoryBarHorizontal) { + this.xaxisBorderWidth = w.config.yaxis[0].axisBorder.width.toString() + } + + if (this.xaxisBorderWidth.indexOf('%') > -1) { + this.xaxisBorderWidth = + (w.globals.gridWidth * parseInt(this.xaxisBorderWidth, 10)) / 100 + } else { + this.xaxisBorderWidth = parseInt(this.xaxisBorderWidth, 10) + } + this.xaxisBorderHeight = w.config.xaxis.axisBorder.height + + // For bars, we will only consider single y xais, + // as we are not providing multiple yaxis for bar charts + this.yaxis = w.config.yaxis[0] + } + + drawXaxis() { + let w = this.w + let graphics = new Graphics(this.ctx) + + let elXaxis = graphics.group({ + class: 'apexcharts-xaxis', + transform: `translate(${w.config.xaxis.offsetX}, ${w.config.xaxis.offsetY})` + }) + + let elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: `translate(${w.globals.translateXAxisX}, ${w.globals.translateXAxisY})` + }) + + elXaxis.add(elXaxisTexts) + + let labels = [] + + for (let i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]) + } + + this.drawXAxisLabelAndGroup( + true, + graphics, + elXaxisTexts, + labels, + w.globals.isXNumeric, + (i, colWidth) => colWidth + ) + + if (w.globals.hasGroups) { + let labelsGroup = w.globals.groups + + labels = [] + for (let i = 0; i < labelsGroup.length; i++) { + labels.push(labelsGroup[i].title) + } + + let overwriteStyles = {} + if (w.config.xaxis.group.style) { + overwriteStyles.xaxisFontSize = w.config.xaxis.group.style.fontSize + overwriteStyles.xaxisFontFamily = w.config.xaxis.group.style.fontFamily + overwriteStyles.xaxisForeColors = w.config.xaxis.group.style.colors + overwriteStyles.fontWeight = w.config.xaxis.group.style.fontWeight + overwriteStyles.cssClass = w.config.xaxis.group.style.cssClass + } + + this.drawXAxisLabelAndGroup( + false, + graphics, + elXaxisTexts, + labels, + false, + (i, colWidth) => labelsGroup[i].cols * colWidth, + overwriteStyles + ) + } + + if (w.config.xaxis.title.text !== undefined) { + let elXaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title' + }) + + let elXAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: + this.offY + + parseFloat(this.xaxisFontSize) + + w.globals.xAxisLabelsHeight + + w.config.xaxis.title.offsetY, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: + 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }) + + elXaxisTitle.add(elXAxisTitleText) + + elXaxis.add(elXaxisTitle) + } + + if (w.config.xaxis.axisBorder.show) { + const offX = w.globals.barPadForNumericAxis + let elHorzLine = graphics.drawLine( + w.globals.padHorizontal + w.config.xaxis.axisBorder.offsetX - offX, + this.offY, + this.xaxisBorderWidth + offX, + this.offY, + w.config.xaxis.axisBorder.color, + 0, + this.xaxisBorderHeight + ) + + elXaxis.add(elHorzLine) + } + + return elXaxis + } + + drawXAxisLabelAndGroup( + isLeafGroup, + graphics, + elXaxisTexts, + labels, + isXNumeric, + colWidthCb, + overwriteStyles = {} + ) { + let drawnLabels = [] + let drawnLabelsRects = [] + let w = this.w + + const xaxisFontSize = overwriteStyles.xaxisFontSize || this.xaxisFontSize + const xaxisFontFamily = + overwriteStyles.xaxisFontFamily || this.xaxisFontFamily + const xaxisForeColors = + overwriteStyles.xaxisForeColors || this.xaxisForeColors + const fontWeight = + overwriteStyles.fontWeight || w.config.xaxis.labels.style.fontWeight + const cssClass = + overwriteStyles.cssClass || w.config.xaxis.labels.style.cssClass + + let colWidth + + // initial x Position (keep adding column width in the loop) + let xPos = w.globals.padHorizontal + + let labelsLen = labels.length + + /** + * labelsLen can be different (whether you are drawing x-axis labels or x-axis group labels) + * hence, we introduce dataPoints to be consistent. + * Also, in datetime/numeric xaxis, dataPoints can be misleading, so we resort to labelsLen for such xaxis type + */ + let dataPoints = + w.config.xaxis.type === 'category' ? w.globals.dataPoints : labelsLen + + if (isXNumeric) { + let len = dataPoints > 1 ? dataPoints - 1 : dataPoints + colWidth = w.globals.gridWidth / len + xPos = xPos + colWidthCb(0, colWidth) / 2 + w.config.xaxis.labels.offsetX + } else { + colWidth = w.globals.gridWidth / dataPoints + xPos = xPos + colWidthCb(0, colWidth) + w.config.xaxis.labels.offsetX + } + + for (let i = 0; i <= labelsLen - 1; i++) { + let x = xPos - colWidthCb(i, colWidth) / 2 + w.config.xaxis.labels.offsetX + + if ( + i === 0 && + labelsLen === 1 && + colWidth / 2 === xPos && + dataPoints === 1 + ) { + // single datapoint + x = w.globals.gridWidth / 2 + } + let label = this.axesUtils.getLabel( + labels, + w.globals.timescaleLabels, + x, + i, + drawnLabels, + xaxisFontSize, + isLeafGroup + ) + + let offsetYCorrection = 28 + if (w.globals.rotateXLabels && isLeafGroup) { + offsetYCorrection = 22 + } + + if (!isLeafGroup) { + offsetYCorrection = + offsetYCorrection + + parseFloat(xaxisFontSize) + + (w.globals.xAxisLabelsHeight - w.globals.xAxisGroupLabelsHeight) + + (w.globals.rotateXLabels ? 10 : 0) + } + + const isCategoryTickAmounts = + typeof w.config.xaxis.tickAmount !== 'undefined' && + w.config.xaxis.tickAmount !== 'dataPoints' && + w.config.xaxis.type !== 'datetime' + + if (isCategoryTickAmounts) { + label = this.axesUtils.checkLabelBasedOnTickamount(i, label, labelsLen) + } else { + label = this.axesUtils.checkForOverflowingLabels( + i, + label, + labelsLen, + drawnLabels, + drawnLabelsRects + ) + } + + const getCatForeColor = () => { + return isLeafGroup && w.config.xaxis.convertedCatToNumeric + ? xaxisForeColors[w.globals.minX + i - 1] + : xaxisForeColors[i] + } + + if (isLeafGroup && label.text) { + w.globals.xaxisLabelsCount++ + } + + if (w.config.xaxis.labels.show) { + let elText = graphics.drawText({ + x: label.x, + y: + this.offY + + w.config.xaxis.labels.offsetY + + offsetYCorrection - + (w.config.xaxis.position === 'top' + ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 + : 0), + text: label.text, + textAnchor: 'middle', + fontWeight: label.isBold ? 600 : fontWeight, + fontSize: xaxisFontSize, + fontFamily: xaxisFontFamily, + foreColor: Array.isArray(xaxisForeColors) + ? getCatForeColor() + : xaxisForeColors, + isPlainText: false, + cssClass: + (isLeafGroup + ? 'apexcharts-xaxis-label ' + : 'apexcharts-xaxis-group-label ') + cssClass + }) + elXaxisTexts.add(elText) + + if (isLeafGroup) { + let elTooltipTitle = document.createElementNS( + w.globals.SVGNS, + 'title' + ) + elTooltipTitle.textContent = Array.isArray(label.text) + ? label.text.join(' ') + : label.text + elText.node.appendChild(elTooltipTitle) + if (label.text !== '') { + drawnLabels.push(label.text) + drawnLabelsRects.push(label) + } + } + } + if (i < labelsLen - 1) { + xPos = xPos + colWidthCb(i + 1, colWidth) + } + } + } + + // this actually becomes the vertical axis (for bar charts) + drawXaxisInversed(realIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + + let translateYAxisX = w.config.yaxis[0].opposite + ? w.globals.translateYAxisX[realIndex] + : 0 + + let elYaxis = graphics.group({ + class: 'apexcharts-yaxis apexcharts-xaxis-inversed', + rel: realIndex + }) + + let elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g', + transform: 'translate(' + translateYAxisX + ', 0)' + }) + + elYaxis.add(elYaxisTexts) + + let colHeight + + // initial x Position (keep adding column width in the loop) + let yPos + let labels = [] + + if (w.config.yaxis[realIndex].show) { + for (let i = 0; i < this.xaxisLabels.length; i++) { + labels.push(this.xaxisLabels[i]) + } + } + + colHeight = w.globals.gridHeight / labels.length + yPos = -(colHeight / 2.2) + + let lbFormatter = w.globals.yLabelFormatters[0] + + const ylabels = w.config.yaxis[0].labels + + if (ylabels.show) { + for (let i = 0; i <= labels.length - 1; i++) { + let label = typeof labels[i] === 'undefined' ? '' : labels[i] + + label = lbFormatter(label, { + seriesIndex: realIndex, + dataPointIndex: i, + w + }) + + const yColors = this.axesUtils.getYAxisForeColor( + ylabels.style.colors, + realIndex + ) + const getForeColor = () => { + return Array.isArray(yColors) ? yColors[i] : yColors + } + + let multiY = 0 + if (Array.isArray(label)) { + multiY = (label.length / 2) * parseInt(ylabels.style.fontSize, 10) + } + let elLabel = graphics.drawText({ + x: ylabels.offsetX - 15, + y: yPos + colHeight + ylabels.offsetY - multiY, + text: label, + textAnchor: this.yaxis.opposite ? 'start' : 'end', + foreColor: getForeColor(), + fontSize: ylabels.style.fontSize, + fontFamily: ylabels.style.fontFamily, + fontWeight: ylabels.style.fontWeight, + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + ylabels.style.cssClass + }) + + elYaxisTexts.add(elLabel) + + let elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title') + elTooltipTitle.textContent = Array.isArray(label) + ? label.join(' ') + : label + elLabel.node.appendChild(elTooltipTitle) + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + let labelRotatingCenter = graphics.rotateAroundCenter(elLabel.node) + elLabel.node.setAttribute( + 'transform', + `rotate(${w.config.yaxis[realIndex].labels.rotate} 0 ${labelRotatingCenter.y})` + ) + } + yPos = yPos + colHeight + } + } + + if (w.config.yaxis[0].title.text !== undefined) { + let elXaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title apexcharts-xaxis-title-inversed', + transform: 'translate(' + translateYAxisX + ', 0)' + }) + + let elXAxisTitleText = graphics.drawText({ + x: 0, + y: w.globals.gridHeight / 2, + text: w.config.yaxis[0].title.text, + textAnchor: 'middle', + foreColor: w.config.yaxis[0].title.style.color, + fontSize: w.config.yaxis[0].title.style.fontSize, + fontWeight: w.config.yaxis[0].title.style.fontWeight, + fontFamily: w.config.yaxis[0].title.style.fontFamily, + cssClass: + 'apexcharts-yaxis-title-text ' + + w.config.yaxis[0].title.style.cssClass + }) + + elXaxisTitle.add(elXAxisTitleText) + + elYaxis.add(elXaxisTitle) + } + + let offX = 0 + if (this.isCategoryBarHorizontal && w.config.yaxis[0].opposite) { + offX = w.globals.gridWidth + } + const axisBorder = w.config.xaxis.axisBorder + if (axisBorder.show) { + let elVerticalLine = graphics.drawLine( + w.globals.padHorizontal + axisBorder.offsetX + offX, + 1 + axisBorder.offsetY, + w.globals.padHorizontal + axisBorder.offsetX + offX, + w.globals.gridHeight + axisBorder.offsetY, + axisBorder.color, + 0 + ) + + elYaxis.add(elVerticalLine) + } + + if (w.config.yaxis[0].axisTicks.show) { + this.axesUtils.drawYAxisTicks( + offX, + labels.length, + w.config.yaxis[0].axisBorder, + w.config.yaxis[0].axisTicks, + 0, + colHeight, + elYaxis + ) + } + + return elYaxis + } + + drawXaxisTicks(x1, y2, appendToElement) { + let w = this.w + let x2 = x1 + + if (x1 < 0 || x1 - 2 > w.globals.gridWidth) return + + let y1 = this.offY + w.config.xaxis.axisTicks.offsetY + y2 = y2 + y1 + w.config.xaxis.axisTicks.height + if (w.config.xaxis.position === 'top') { + y2 = y1 - w.config.xaxis.axisTicks.height + } + + if (w.config.xaxis.axisTicks.show) { + let graphics = new Graphics(this.ctx) + + let line = graphics.drawLine( + x1 + w.config.xaxis.axisTicks.offsetX, + y1 + w.config.xaxis.offsetY, + x2 + w.config.xaxis.axisTicks.offsetX, + y2 + w.config.xaxis.offsetY, + w.config.xaxis.axisTicks.color + ) + + // we are not returning anything, but appending directly to the element passed in param + appendToElement.add(line) + line.node.classList.add('apexcharts-xaxis-tick') + } + } + + getXAxisTicksPositions() { + const w = this.w + let xAxisTicksPositions = [] + + const xCount = this.xaxisLabels.length + let x1 = w.globals.padHorizontal + + if (w.globals.timescaleLabels.length > 0) { + for (let i = 0; i < xCount; i++) { + x1 = this.xaxisLabels[i].position + xAxisTicksPositions.push(x1) + } + } else { + let xCountForCategoryCharts = xCount + for (let i = 0; i < xCountForCategoryCharts; i++) { + let x1Count = xCountForCategoryCharts + if (w.globals.isXNumeric && w.config.chart.type !== 'bar') { + x1Count -= 1 + } + x1 = x1 + w.globals.gridWidth / x1Count + xAxisTicksPositions.push(x1) + } + } + + return xAxisTicksPositions + } + + // to rotate x-axis labels or to put ... for longer text in xaxis + xAxisLabelCorrections() { + let w = this.w + + let graphics = new Graphics(this.ctx) + + let xAxis = w.globals.dom.baseEl.querySelector('.apexcharts-xaxis-texts-g') + + let xAxisTexts = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-xaxis-texts-g text:not(.apexcharts-xaxis-group-label)' + ) + let yAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-yaxis-inversed text' + ) + let xAxisTextsInversed = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-xaxis-inversed-texts-g text tspan' + ) + + if (w.globals.rotateXLabels || w.config.xaxis.labels.rotateAlways) { + for (let xat = 0; xat < xAxisTexts.length; xat++) { + let textRotatingCenter = graphics.rotateAroundCenter(xAxisTexts[xat]) + textRotatingCenter.y = textRotatingCenter.y - 1 // + tickWidth/4; + textRotatingCenter.x = textRotatingCenter.x + 1 + + xAxisTexts[xat].setAttribute( + 'transform', + `rotate(${w.config.xaxis.labels.rotate} ${textRotatingCenter.x} ${textRotatingCenter.y})` + ) + + xAxisTexts[xat].setAttribute('text-anchor', `end`) + + let offsetHeight = 10 + + xAxis.setAttribute('transform', `translate(0, ${-offsetHeight})`) + + let tSpan = xAxisTexts[xat].childNodes + + if (w.config.xaxis.labels.trim) { + Array.prototype.forEach.call(tSpan, (ts) => { + graphics.placeTextWithEllipsis( + ts, + ts.textContent, + w.globals.xAxisLabelsHeight - + (w.config.legend.position === 'bottom' ? 20 : 10) + ) + }) + } + } + } else { + let width = w.globals.gridWidth / (w.globals.labels.length + 1) + + for (let xat = 0; xat < xAxisTexts.length; xat++) { + let tSpan = xAxisTexts[xat].childNodes + + if (w.config.xaxis.labels.trim && w.config.xaxis.type !== 'datetime') { + Array.prototype.forEach.call(tSpan, (ts) => { + graphics.placeTextWithEllipsis(ts, ts.textContent, width) + }) + } + } + } + + if (yAxisTextsInversed.length > 0) { + // truncate rotated y axis in bar chart (x axis) + let firstLabelPosX = yAxisTextsInversed[ + yAxisTextsInversed.length - 1 + ].getBBox() + let lastLabelPosX = yAxisTextsInversed[0].getBBox() + + if (firstLabelPosX.x < -20) { + yAxisTextsInversed[ + yAxisTextsInversed.length - 1 + ].parentNode.removeChild( + yAxisTextsInversed[yAxisTextsInversed.length - 1] + ) + } + + if ( + lastLabelPosX.x + lastLabelPosX.width > w.globals.gridWidth && + !w.globals.isBarHorizontal + ) { + yAxisTextsInversed[0].parentNode.removeChild(yAxisTextsInversed[0]) + } + + // truncate rotated x axis in bar chart (y axis) + for (let xat = 0; xat < xAxisTextsInversed.length; xat++) { + graphics.placeTextWithEllipsis( + xAxisTextsInversed[xat], + xAxisTextsInversed[xat].textContent, + w.config.yaxis[0].labels.maxWidth - + (w.config.yaxis[0].title.text + ? parseFloat(w.config.yaxis[0].title.style.fontSize) * 2 + : 0) - + 15 + ) + } + } + } + + // renderXAxisBands() { + // let w = this.w; + + // let plotBand = document.createElementNS(w.globals.SVGNS, 'rect') + // w.globals.dom.elGraphical.add(plotBand) + // } +} diff --git a/public/assets/libs/apexcharts/src/modules/axes/YAxis.js b/public/assets/libs/apexcharts/src/modules/axes/YAxis.js new file mode 100644 index 0000000..d8effd2 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/axes/YAxis.js @@ -0,0 +1,558 @@ +import Graphics from '../Graphics' +import Utils from '../../utils/Utils' +import AxesUtils from './AxesUtils' + +/** + * ApexCharts YAxis Class for drawing Y-Axis. + * + * @module YAxis + **/ + +export default class YAxis { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + const w = this.w + + this.xaxisFontSize = w.config.xaxis.labels.style.fontSize + this.axisFontFamily = w.config.xaxis.labels.style.fontFamily + + this.xaxisForeColors = w.config.xaxis.labels.style.colors + this.isCategoryBarHorizontal = + w.config.chart.type === 'bar' && w.config.plotOptions.bar.horizontal + + this.xAxisoffX = 0 + if (w.config.xaxis.position === 'bottom') { + this.xAxisoffX = w.globals.gridHeight + } + this.drawnLabels = [] + this.axesUtils = new AxesUtils(ctx) + } + + drawYaxis(realIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + + const yaxisStyle = w.config.yaxis[realIndex].labels.style + let yaxisFontSize = yaxisStyle.fontSize + let yaxisFontFamily = yaxisStyle.fontFamily + let yaxisFontWeight = yaxisStyle.fontWeight + + let elYaxis = graphics.group({ + class: 'apexcharts-yaxis', + rel: realIndex, + transform: 'translate(' + w.globals.translateYAxisX[realIndex] + ', 0)' + }) + + if (this.axesUtils.isYAxisHidden(realIndex)) { + return elYaxis + } + + let elYaxisTexts = graphics.group({ + class: 'apexcharts-yaxis-texts-g' + }) + + elYaxis.add(elYaxisTexts) + + let tickAmount = w.globals.yAxisScale[realIndex].result.length - 1 + + // labelsDivider is simply svg height/number of ticks + let labelsDivider = w.globals.gridHeight / tickAmount + + // initial label position = 0; + let l = w.globals.translateY + let lbFormatter = w.globals.yLabelFormatters[realIndex] + + let labels = w.globals.yAxisScale[realIndex].result.slice() + + labels = this.axesUtils.checkForReversedLabels(realIndex, labels) + + let firstLabel = '' + if (w.config.yaxis[realIndex].labels.show) { + for (let i = tickAmount; i >= 0; i--) { + let val = labels[i] + + val = lbFormatter(val, i, w) + + let xPad = w.config.yaxis[realIndex].labels.padding + if (w.config.yaxis[realIndex].opposite && w.config.yaxis.length !== 0) { + xPad = xPad * -1 + } + + const yColors = this.axesUtils.getYAxisForeColor( + yaxisStyle.colors, + realIndex + ) + const getForeColor = () => { + return Array.isArray(yColors) ? yColors[i] : yColors + } + + let label = graphics.drawText({ + x: xPad, + y: l + tickAmount / 10 + w.config.yaxis[realIndex].labels.offsetY + 1, + text: val, + textAnchor: w.config.yaxis[realIndex].opposite ? 'start' : 'end', + fontSize: yaxisFontSize, + fontFamily: yaxisFontFamily, + fontWeight: yaxisFontWeight, + maxWidth: w.config.yaxis[realIndex].labels.maxWidth, + foreColor: getForeColor(), + isPlainText: false, + cssClass: 'apexcharts-yaxis-label ' + yaxisStyle.cssClass + }) + if (i === tickAmount) { + firstLabel = label + } + elYaxisTexts.add(label) + + let elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title') + elTooltipTitle.textContent = Array.isArray(val) ? val.join(' ') : val + label.node.appendChild(elTooltipTitle) + + if (w.config.yaxis[realIndex].labels.rotate !== 0) { + let firstabelRotatingCenter = graphics.rotateAroundCenter( + firstLabel.node + ) + let labelRotatingCenter = graphics.rotateAroundCenter(label.node) + label.node.setAttribute( + 'transform', + `rotate(${w.config.yaxis[realIndex].labels.rotate} ${firstabelRotatingCenter.x} ${labelRotatingCenter.y})` + ) + } + l = l + labelsDivider + } + } + + if (w.config.yaxis[realIndex].title.text !== undefined) { + let elYaxisTitle = graphics.group({ + class: 'apexcharts-yaxis-title' + }) + + let x = 0 + if (w.config.yaxis[realIndex].opposite) { + x = w.globals.translateYAxisX[realIndex] + } + let elYAxisTitleText = graphics.drawText({ + x, + y: + w.globals.gridHeight / 2 + + w.globals.translateY + + w.config.yaxis[realIndex].title.offsetY, + text: w.config.yaxis[realIndex].title.text, + textAnchor: 'end', + foreColor: w.config.yaxis[realIndex].title.style.color, + fontSize: w.config.yaxis[realIndex].title.style.fontSize, + fontWeight: w.config.yaxis[realIndex].title.style.fontWeight, + fontFamily: w.config.yaxis[realIndex].title.style.fontFamily, + cssClass: + 'apexcharts-yaxis-title-text ' + + w.config.yaxis[realIndex].title.style.cssClass + }) + + elYaxisTitle.add(elYAxisTitleText) + + elYaxis.add(elYaxisTitle) + } + + let axisBorder = w.config.yaxis[realIndex].axisBorder + + let x = 31 + axisBorder.offsetX + if (w.config.yaxis[realIndex].opposite) { + x = -31 - axisBorder.offsetX + } + + if (axisBorder.show) { + let elVerticalLine = graphics.drawLine( + x, + w.globals.translateY + axisBorder.offsetY - 2, + x, + w.globals.gridHeight + w.globals.translateY + axisBorder.offsetY + 2, + axisBorder.color, + 0, + axisBorder.width + ) + + elYaxis.add(elVerticalLine) + } + if (w.config.yaxis[realIndex].axisTicks.show) { + this.axesUtils.drawYAxisTicks( + x, + tickAmount, + axisBorder, + w.config.yaxis[realIndex].axisTicks, + realIndex, + labelsDivider, + elYaxis + ) + } + + return elYaxis + } + + // This actually becomes horizontal axis (for bar charts) + drawYaxisInversed(realIndex) { + let w = this.w + let graphics = new Graphics(this.ctx) + + let elXaxis = graphics.group({ + class: 'apexcharts-xaxis apexcharts-yaxis-inversed' + }) + + let elXaxisTexts = graphics.group({ + class: 'apexcharts-xaxis-texts-g', + transform: `translate(${w.globals.translateXAxisX}, ${w.globals.translateXAxisY})` + }) + + elXaxis.add(elXaxisTexts) + + let tickAmount = w.globals.yAxisScale[realIndex].result.length - 1 + + // labelsDivider is simply svg width/number of ticks + let labelsDivider = w.globals.gridWidth / tickAmount + 0.1 + + // initial label position; + let l = labelsDivider + w.config.xaxis.labels.offsetX + + let lbFormatter = w.globals.xLabelFormatter + + let labels = w.globals.yAxisScale[realIndex].result.slice() + + let timescaleLabels = w.globals.timescaleLabels + if (timescaleLabels.length > 0) { + this.xaxisLabels = timescaleLabels.slice() + labels = timescaleLabels.slice() + tickAmount = labels.length + } + + labels = this.axesUtils.checkForReversedLabels(realIndex, labels) + + const tl = timescaleLabels.length + + if (w.config.xaxis.labels.show) { + for (let i = tl ? 0 : tickAmount; tl ? i < tl : i >= 0; tl ? i++ : i--) { + let val = labels[i] + val = lbFormatter(val, i, w) + + let x = + w.globals.gridWidth + + w.globals.padHorizontal - + (l - labelsDivider + w.config.xaxis.labels.offsetX) + + if (timescaleLabels.length) { + let label = this.axesUtils.getLabel( + labels, + timescaleLabels, + x, + i, + this.drawnLabels, + this.xaxisFontSize + ) + x = label.x + val = label.text + this.drawnLabels.push(label.text) + + if (i === 0 && w.globals.skipFirstTimelinelabel) { + val = '' + } + if (i === labels.length - 1 && w.globals.skipLastTimelinelabel) { + val = '' + } + } + let elTick = graphics.drawText({ + x, + y: + this.xAxisoffX + + w.config.xaxis.labels.offsetY + + 30 - + (w.config.xaxis.position === 'top' + ? w.globals.xAxisHeight + w.config.xaxis.axisTicks.height - 2 + : 0), + text: val, + textAnchor: 'middle', + foreColor: Array.isArray(this.xaxisForeColors) + ? this.xaxisForeColors[realIndex] + : this.xaxisForeColors, + fontSize: this.xaxisFontSize, + fontFamily: this.xaxisFontFamily, + fontWeight: w.config.xaxis.labels.style.fontWeight, + isPlainText: false, + cssClass: + 'apexcharts-xaxis-label ' + w.config.xaxis.labels.style.cssClass + }) + + elXaxisTexts.add(elTick) + + elTick.tspan(val) + + let elTooltipTitle = document.createElementNS(w.globals.SVGNS, 'title') + elTooltipTitle.textContent = val + elTick.node.appendChild(elTooltipTitle) + + l = l + labelsDivider + } + } + + this.inversedYAxisTitleText(elXaxis) + this.inversedYAxisBorder(elXaxis) + + return elXaxis + } + + inversedYAxisBorder(parent) { + const w = this.w + const graphics = new Graphics(this.ctx) + + let axisBorder = w.config.xaxis.axisBorder + if (axisBorder.show) { + let lineCorrection = 0 + if (w.config.chart.type === 'bar' && w.globals.isXNumeric) { + lineCorrection = lineCorrection - 15 + } + let elHorzLine = graphics.drawLine( + w.globals.padHorizontal + lineCorrection + axisBorder.offsetX, + this.xAxisoffX, + w.globals.gridWidth, + this.xAxisoffX, + axisBorder.color, + 0, + axisBorder.height + ) + + parent.add(elHorzLine) + } + } + + inversedYAxisTitleText(parent) { + const w = this.w + const graphics = new Graphics(this.ctx) + if (w.config.xaxis.title.text !== undefined) { + let elYaxisTitle = graphics.group({ + class: 'apexcharts-xaxis-title apexcharts-yaxis-title-inversed' + }) + + let elYAxisTitleText = graphics.drawText({ + x: w.globals.gridWidth / 2 + w.config.xaxis.title.offsetX, + y: + this.xAxisoffX + + parseFloat(this.xaxisFontSize) + + parseFloat(w.config.xaxis.title.style.fontSize) + + w.config.xaxis.title.offsetY + + 20, + text: w.config.xaxis.title.text, + textAnchor: 'middle', + fontSize: w.config.xaxis.title.style.fontSize, + fontFamily: w.config.xaxis.title.style.fontFamily, + fontWeight: w.config.xaxis.title.style.fontWeight, + foreColor: w.config.xaxis.title.style.color, + cssClass: + 'apexcharts-xaxis-title-text ' + w.config.xaxis.title.style.cssClass + }) + + elYaxisTitle.add(elYAxisTitleText) + + parent.add(elYaxisTitle) + } + } + + yAxisTitleRotate(realIndex, yAxisOpposite) { + let w = this.w + + let graphics = new Graphics(this.ctx) + + let yAxisLabelsCoord = { + width: 0, + height: 0 + } + let yAxisTitleCoord = { + width: 0, + height: 0 + } + + let elYAxisLabelsWrap = w.globals.dom.baseEl.querySelector( + ` .apexcharts-yaxis[rel='${realIndex}'] .apexcharts-yaxis-texts-g` + ) + + if (elYAxisLabelsWrap !== null) { + yAxisLabelsCoord = elYAxisLabelsWrap.getBoundingClientRect() + } + + let yAxisTitle = w.globals.dom.baseEl.querySelector( + `.apexcharts-yaxis[rel='${realIndex}'] .apexcharts-yaxis-title text` + ) + + if (yAxisTitle !== null) { + yAxisTitleCoord = yAxisTitle.getBoundingClientRect() + } + + if (yAxisTitle !== null) { + let x = this.xPaddingForYAxisTitle( + realIndex, + yAxisLabelsCoord, + yAxisTitleCoord, + yAxisOpposite + ) + + yAxisTitle.setAttribute('x', x.xPos - (yAxisOpposite ? 10 : 0)) + } + + if (yAxisTitle !== null) { + let titleRotatingCenter = graphics.rotateAroundCenter(yAxisTitle) + yAxisTitle.setAttribute( + 'transform', + `rotate(${ + yAxisOpposite + ? w.config.yaxis[realIndex].title.rotate * -1 + : w.config.yaxis[realIndex].title.rotate + } ${titleRotatingCenter.x} ${titleRotatingCenter.y})` + ) + } + } + + xPaddingForYAxisTitle( + realIndex, + yAxisLabelsCoord, + yAxisTitleCoord, + yAxisOpposite + ) { + let w = this.w + let oppositeAxisCount = 0 + + let x = 0 + let padd = 10 + + if (w.config.yaxis[realIndex].title.text === undefined || realIndex < 0) { + return { + xPos: x, + padd: 0 + } + } + + if (yAxisOpposite) { + x = + yAxisLabelsCoord.width + + w.config.yaxis[realIndex].title.offsetX + + yAxisTitleCoord.width / 2 + + padd / 2 + + oppositeAxisCount += 1 + + if (oppositeAxisCount === 0) { + x = x - padd / 2 + } + } else { + x = + yAxisLabelsCoord.width * -1 + + w.config.yaxis[realIndex].title.offsetX + + padd / 2 + + yAxisTitleCoord.width / 2 + + if (w.globals.isBarHorizontal) { + padd = 25 + x = + yAxisLabelsCoord.width * -1 - + w.config.yaxis[realIndex].title.offsetX - + padd + } + } + + return { + xPos: x, + padd + } + } + + // sets the x position of the y-axis by counting the labels width, title width and any offset + setYAxisXPosition(yaxisLabelCoords, yTitleCoords) { + let w = this.w + + let xLeft = 0 + let xRight = 0 + let leftOffsetX = 18 + let rightOffsetX = 1 + + if (w.config.yaxis.length > 1) { + this.multipleYs = true + } + + w.config.yaxis.map((yaxe, index) => { + let shouldNotDrawAxis = + w.globals.ignoreYAxisIndexes.indexOf(index) > -1 || + !yaxe.show || + yaxe.floating || + yaxisLabelCoords[index].width === 0 + + let axisWidth = yaxisLabelCoords[index].width + yTitleCoords[index].width + + if (!yaxe.opposite) { + xLeft = w.globals.translateX - leftOffsetX + + if (!shouldNotDrawAxis) { + leftOffsetX = leftOffsetX + axisWidth + 20 + } + + w.globals.translateYAxisX[index] = xLeft + yaxe.labels.offsetX + } else { + if (w.globals.isBarHorizontal) { + xRight = w.globals.gridWidth + w.globals.translateX - 1 + + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + } else { + xRight = w.globals.gridWidth + w.globals.translateX + rightOffsetX + + if (!shouldNotDrawAxis) { + rightOffsetX = rightOffsetX + axisWidth + 20 + } + + w.globals.translateYAxisX[index] = xRight - yaxe.labels.offsetX + 20 + } + } + }) + } + + setYAxisTextAlignments() { + const w = this.w + + let yaxis = w.globals.dom.baseEl.getElementsByClassName(`apexcharts-yaxis`) + yaxis = Utils.listToArray(yaxis) + yaxis.forEach((y, index) => { + const yaxe = w.config.yaxis[index] + // proceed only if user has specified alignment + if (yaxe && yaxe.labels.align !== undefined) { + const yAxisInner = w.globals.dom.baseEl.querySelector( + `.apexcharts-yaxis[rel='${index}'] .apexcharts-yaxis-texts-g` + ) + let yAxisTexts = w.globals.dom.baseEl.querySelectorAll( + `.apexcharts-yaxis[rel='${index}'] .apexcharts-yaxis-label` + ) + + yAxisTexts = Utils.listToArray(yAxisTexts) + + const rect = yAxisInner.getBoundingClientRect() + + if (yaxe.labels.align === 'left') { + yAxisTexts.forEach((label, lI) => { + label.setAttribute('text-anchor', 'start') + }) + if (!yaxe.opposite) { + yAxisInner.setAttribute('transform', `translate(-${rect.width}, 0)`) + } + } else if (yaxe.labels.align === 'center') { + yAxisTexts.forEach((label, lI) => { + label.setAttribute('text-anchor', 'middle') + }) + yAxisInner.setAttribute( + 'transform', + `translate(${(rect.width / 2) * (!yaxe.opposite ? -1 : 1)}, 0)` + ) + } else if (yaxe.labels.align === 'right') { + yAxisTexts.forEach((label, lI) => { + label.setAttribute('text-anchor', 'end') + }) + if (yaxe.opposite) { + yAxisInner.setAttribute('transform', `translate(${rect.width}, 0)`) + } + } + } + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/dimensions/Dimensions.js b/public/assets/libs/apexcharts/src/modules/dimensions/Dimensions.js new file mode 100644 index 0000000..8e6eab9 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/dimensions/Dimensions.js @@ -0,0 +1,336 @@ +import YAxis from '../axes/YAxis' +import Helpers from './Helpers' +import DimXAxis from './XAxis' +import DimYAxis from './YAxis' +import Grid from './Grid' + +/** + * ApexCharts Dimensions Class for calculating rects of all elements that are drawn and will be drawn. + * + * @module Dimensions + **/ + +export default class Dimensions { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + this.lgRect = {} + this.yAxisWidth = 0 + this.yAxisWidthLeft = 0 + this.yAxisWidthRight = 0 + this.xAxisHeight = 0 + this.isSparkline = this.w.config.chart.sparkline.enabled + + this.dimHelpers = new Helpers(this) + this.dimYAxis = new DimYAxis(this) + this.dimXAxis = new DimXAxis(this) + this.dimGrid = new Grid(this) + this.lgWidthForSideLegends = 0 + this.gridPad = this.w.config.grid.padding + this.xPadRight = 0 + this.xPadLeft = 0 + } + + /** + * @memberof Dimensions + * @param {object} w - chart context + **/ + plotCoords() { + let w = this.w + let gl = w.globals + + this.lgRect = this.dimHelpers.getLegendsRect() + + if ( + this.isSparkline && + (w.config.markers.discrete.length > 0 || w.config.markers.size > 0) + ) { + Object.entries(this.gridPad).forEach(([k, v]) => { + this.gridPad[k] = Math.max(v, this.w.globals.markers.largestSize / 1.5) + }) + } + + if (gl.axisCharts) { + // for line / area / scatter / column + this.setDimensionsForAxisCharts() + } else { + // for pie / donuts / circle + this.setDimensionsForNonAxisCharts() + } + + this.dimGrid.gridPadFortitleSubtitle() + + // after calculating everything, apply padding set by user + gl.gridHeight = gl.gridHeight - this.gridPad.top - this.gridPad.bottom + + gl.gridWidth = + gl.gridWidth - + this.gridPad.left - + this.gridPad.right - + this.xPadRight - + this.xPadLeft + + let barWidth = this.dimGrid.gridPadForColumnsInNumericAxis(gl.gridWidth) + + gl.gridWidth = gl.gridWidth - barWidth * 2 + + gl.translateX = + gl.translateX + + this.gridPad.left + + this.xPadLeft + + (barWidth > 0 ? barWidth + 4 : 0) + gl.translateY = gl.translateY + this.gridPad.top + } + + setDimensionsForAxisCharts() { + let w = this.w + let gl = w.globals + + let yaxisLabelCoords = this.dimYAxis.getyAxisLabelsCoords() + let yTitleCoords = this.dimYAxis.getyAxisTitleCoords() + + w.globals.yLabelsCoords = [] + w.globals.yTitleCoords = [] + w.config.yaxis.map((yaxe, index) => { + // store the labels and titles coords in global vars + w.globals.yLabelsCoords.push({ + width: yaxisLabelCoords[index].width, + index + }) + w.globals.yTitleCoords.push({ + width: yTitleCoords[index].width, + index + }) + }) + + this.yAxisWidth = this.dimYAxis.getTotalYAxisWidth() + + let xaxisLabelCoords = this.dimXAxis.getxAxisLabelsCoords() + let xaxisGroupLabelCoords = this.dimXAxis.getxAxisGroupLabelsCoords() + let xtitleCoords = this.dimXAxis.getxAxisTitleCoords() + + this.conditionalChecksForAxisCoords( + xaxisLabelCoords, + xtitleCoords, + xaxisGroupLabelCoords + ) + + gl.translateXAxisY = w.globals.rotateXLabels ? this.xAxisHeight / 8 : -4 + gl.translateXAxisX = + w.globals.rotateXLabels && + w.globals.isXNumeric && + w.config.xaxis.labels.rotate <= -45 + ? -this.xAxisWidth / 4 + : 0 + + if (w.globals.isBarHorizontal) { + gl.rotateXLabels = false + gl.translateXAxisY = + -1 * (parseInt(w.config.xaxis.labels.style.fontSize, 10) / 1.5) + } + + gl.translateXAxisY = gl.translateXAxisY + w.config.xaxis.labels.offsetY + gl.translateXAxisX = gl.translateXAxisX + w.config.xaxis.labels.offsetX + + let yAxisWidth = this.yAxisWidth + let xAxisHeight = this.xAxisHeight + gl.xAxisLabelsHeight = this.xAxisHeight - xtitleCoords.height + gl.xAxisGroupLabelsHeight = gl.xAxisLabelsHeight - xaxisLabelCoords.height + gl.xAxisLabelsWidth = this.xAxisWidth + gl.xAxisHeight = this.xAxisHeight + let translateY = 10 + + if (w.config.chart.type === 'radar' || this.isSparkline) { + yAxisWidth = 0 + xAxisHeight = gl.goldenPadding + } + + if (this.isSparkline) { + this.lgRect = { + height: 0, + width: 0 + } + } + + if (this.isSparkline || w.config.chart.type === 'treemap') { + yAxisWidth = 0 + xAxisHeight = 0 + translateY = 0 + } + + if (!this.isSparkline) { + this.dimXAxis.additionalPaddingXLabels(xaxisLabelCoords) + } + + const legendTopBottom = () => { + gl.translateX = yAxisWidth + gl.gridHeight = + gl.svgHeight - + this.lgRect.height - + xAxisHeight - + (!this.isSparkline && w.config.chart.type !== 'treemap' + ? w.globals.rotateXLabels + ? 10 + : 15 + : 0) + gl.gridWidth = gl.svgWidth - yAxisWidth + } + + if (w.config.xaxis.position === 'top') + translateY = gl.xAxisHeight - w.config.xaxis.axisTicks.height - 5 + + switch (w.config.legend.position) { + case 'bottom': + gl.translateY = translateY + legendTopBottom() + break + case 'top': + gl.translateY = this.lgRect.height + translateY + legendTopBottom() + break + case 'left': + gl.translateY = translateY + gl.translateX = this.lgRect.width + yAxisWidth + gl.gridHeight = gl.svgHeight - xAxisHeight - 12 + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth + break + case 'right': + gl.translateY = translateY + gl.translateX = yAxisWidth + gl.gridHeight = gl.svgHeight - xAxisHeight - 12 + gl.gridWidth = gl.svgWidth - this.lgRect.width - yAxisWidth - 5 + break + default: + throw new Error('Legend position not supported') + } + + this.dimGrid.setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) + + // after drawing everything, set the Y axis positions + let objyAxis = new YAxis(this.ctx) + objyAxis.setYAxisXPosition(yaxisLabelCoords, yTitleCoords) + } + + setDimensionsForNonAxisCharts() { + let w = this.w + let gl = w.globals + let cnf = w.config + let xPad = 0 + + if (w.config.legend.show && !w.config.legend.floating) { + xPad = 20 + } + + const type = + cnf.chart.type === 'pie' || + cnf.chart.type === 'polarArea' || + cnf.chart.type === 'donut' + ? 'pie' + : 'radialBar' + + let offY = cnf.plotOptions[type].offsetY + let offX = cnf.plotOptions[type].offsetX + + if (!cnf.legend.show || cnf.legend.floating) { + gl.gridHeight = + gl.svgHeight - cnf.grid.padding.left + cnf.grid.padding.right + gl.gridWidth = gl.gridHeight + + gl.translateY = offY + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2 + + return + } + + switch (cnf.legend.position) { + case 'bottom': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding + gl.gridWidth = gl.svgWidth + gl.translateY = offY - 10 + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2 + break + case 'top': + gl.gridHeight = gl.svgHeight - this.lgRect.height - gl.goldenPadding + gl.gridWidth = gl.svgWidth + gl.translateY = this.lgRect.height + offY + 10 + gl.translateX = offX + (gl.svgWidth - gl.gridWidth) / 2 + break + case 'left': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad + gl.gridHeight = + cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth + gl.translateY = offY + gl.translateX = offX + this.lgRect.width + xPad + break + case 'right': + gl.gridWidth = gl.svgWidth - this.lgRect.width - xPad - 5 + gl.gridHeight = + cnf.chart.height !== 'auto' ? gl.svgHeight : gl.gridWidth + gl.translateY = offY + gl.translateX = offX + 10 + break + default: + throw new Error('Legend position not supported') + } + } + + conditionalChecksForAxisCoords( + xaxisLabelCoords, + xtitleCoords, + xaxisGroupLabelCoords + ) { + const w = this.w + + const xAxisNum = w.globals.hasGroups ? 2 : 1 + + const baseXAxisHeight = + xaxisGroupLabelCoords.height + + xaxisLabelCoords.height + + xtitleCoords.height + const xAxisHeightMultiplicate = w.globals.isMultiLineX + ? 1.2 + : w.globals.LINE_HEIGHT_RATIO + const rotatedXAxisOffset = w.globals.rotateXLabels ? 22 : 10 + const rotatedXAxisLegendOffset = + w.globals.rotateXLabels && w.config.legend.position === 'bottom' + const additionalOffset = rotatedXAxisLegendOffset ? 10 : 0 + + this.xAxisHeight = + baseXAxisHeight * xAxisHeightMultiplicate + + xAxisNum * rotatedXAxisOffset + + additionalOffset + + this.xAxisWidth = xaxisLabelCoords.width + + if ( + this.xAxisHeight - xtitleCoords.height > + w.config.xaxis.labels.maxHeight + ) { + this.xAxisHeight = w.config.xaxis.labels.maxHeight + } + + if ( + w.config.xaxis.labels.minHeight && + this.xAxisHeight < w.config.xaxis.labels.minHeight + ) { + this.xAxisHeight = w.config.xaxis.labels.minHeight + } + + if (w.config.xaxis.floating) { + this.xAxisHeight = 0 + } + + let minYAxisWidth = 0 + let maxYAxisWidth = 0 + w.config.yaxis.forEach((y) => { + minYAxisWidth += y.labels.minWidth + maxYAxisWidth += y.labels.maxWidth + }) + if (this.yAxisWidth < minYAxisWidth) { + this.yAxisWidth = minYAxisWidth + } + if (this.yAxisWidth > maxYAxisWidth) { + this.yAxisWidth = maxYAxisWidth + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/dimensions/Grid.js b/public/assets/libs/apexcharts/src/modules/dimensions/Grid.js new file mode 100644 index 0000000..0dcb808 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/dimensions/Grid.js @@ -0,0 +1,151 @@ +import AxesUtils from '../axes/AxesUtils' + +export default class DimGrid { + constructor(dCtx) { + this.w = dCtx.w + this.dCtx = dCtx + } + + gridPadForColumnsInNumericAxis(gridWidth) { + const w = this.w + + if (w.globals.noData || w.globals.allSeriesCollapsed) { + return 0 + } + + const hasBar = (type) => { + return ( + type === 'bar' || + type === 'rangeBar' || + type === 'candlestick' || + type === 'boxPlot' + ) + } + + const type = w.config.chart.type + + let barWidth = 0 + let seriesLen = hasBar(type) ? w.config.series.length : 1 + + if (w.globals.comboBarCount > 0) { + seriesLen = w.globals.comboBarCount + } + w.globals.collapsedSeries.forEach((c) => { + if (hasBar(c.type)) { + seriesLen = seriesLen - 1 + } + }) + if (w.config.chart.stacked) { + seriesLen = 1 + } + + const barsPresent = hasBar(type) || w.globals.comboBarCount > 0 + + if ( + barsPresent && + w.globals.isXNumeric && + !w.globals.isBarHorizontal && + seriesLen > 0 + ) { + let xRatio = 0 + let xRange = Math.abs(w.globals.initialMaxX - w.globals.initialMinX) + + if (xRange <= 3) { + xRange = w.globals.dataPoints + } + + xRatio = xRange / gridWidth + + let xDivision + // max barwidth should be equal to minXDiff to avoid overlap + if (w.globals.minXDiff && w.globals.minXDiff / xRatio > 0) { + xDivision = w.globals.minXDiff / xRatio + } + + if (xDivision > gridWidth / 2) { + xDivision = xDivision / 2 + } + barWidth = + ((xDivision / seriesLen) * + parseInt(w.config.plotOptions.bar.columnWidth, 10)) / + 100 + + if (barWidth < 1) { + barWidth = 1 + } + + barWidth = barWidth / (seriesLen > 1 ? 1 : 1.5) + 5 + + w.globals.barPadForNumericAxis = barWidth + } + return barWidth + } + + gridPadFortitleSubtitle() { + const w = this.w + const gl = w.globals + let gridShrinkOffset = + this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 10 + + const titleSubtitle = ['title', 'subtitle'] + + titleSubtitle.forEach((t) => { + if (w.config[t].text !== undefined) { + gridShrinkOffset += w.config[t].margin + } else { + gridShrinkOffset += + this.dCtx.isSparkline || !w.globals.axisCharts ? 0 : 5 + } + }) + + if ( + w.config.legend.show && + w.config.legend.position === 'bottom' && + !w.config.legend.floating && + !w.globals.axisCharts + ) { + gridShrinkOffset += 10 + } + + let titleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('title') + let subtitleCoords = this.dCtx.dimHelpers.getTitleSubtitleCoords('subtitle') + + gl.gridHeight = + gl.gridHeight - + titleCoords.height - + subtitleCoords.height - + gridShrinkOffset + + gl.translateY = + gl.translateY + + titleCoords.height + + subtitleCoords.height + + gridShrinkOffset + } + + setGridXPosForDualYAxis(yTitleCoords, yaxisLabelCoords) { + let w = this.w + const axesUtils = new AxesUtils(this.dCtx.ctx) + + w.config.yaxis.map((yaxe, index) => { + if ( + w.globals.ignoreYAxisIndexes.indexOf(index) === -1 && + !yaxe.floating && + !axesUtils.isYAxisHidden(index) + ) { + if (yaxe.opposite) { + w.globals.translateX = + w.globals.translateX - + (yaxisLabelCoords[index].width + yTitleCoords[index].width) - + parseInt(w.config.yaxis[index].labels.style.fontSize, 10) / 1.2 - + 12 + } + + // fixes apexcharts.js#1599 + if (w.globals.translateX < 2) { + w.globals.translateX = 2 + } + } + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/dimensions/Helpers.js b/public/assets/libs/apexcharts/src/modules/dimensions/Helpers.js new file mode 100644 index 0000000..0404bf5 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/dimensions/Helpers.js @@ -0,0 +1,100 @@ +import Utils from '../../utils/Utils' + +export default class Helpers { + constructor(dCtx) { + this.w = dCtx.w + this.dCtx = dCtx + } + + /** + * Get Chart Title/Subtitle Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + getTitleSubtitleCoords(type) { + let w = this.w + let width = 0 + let height = 0 + + const floating = + type === 'title' ? w.config.title.floating : w.config.subtitle.floating + + let el = w.globals.dom.baseEl.querySelector(`.apexcharts-${type}-text`) + + if (el !== null && !floating) { + let coord = el.getBoundingClientRect() + width = coord.width + height = w.globals.axisCharts ? coord.height + 5 : coord.height + } + + return { + width, + height + } + } + + getLegendsRect() { + let w = this.w + + let elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend') + + if ( + !w.config.legend.height && + (w.config.legend.position === 'top' || + w.config.legend.position === 'bottom') + ) { + // avoid legend to take up all the space + elLegendWrap.style.maxHeight = w.globals.svgHeight / 2 + 'px' + } + + let lgRect = Object.assign({}, Utils.getBoundingClientRect(elLegendWrap)) + + if ( + elLegendWrap !== null && + !w.config.legend.floating && + w.config.legend.show + ) { + this.dCtx.lgRect = { + x: lgRect.x, + y: lgRect.y, + height: lgRect.height, + width: lgRect.height === 0 ? 0 : lgRect.width + } + } else { + this.dCtx.lgRect = { + x: 0, + y: 0, + height: 0, + width: 0 + } + } + + // if legend takes up all of the chart space, we need to restrict it. + if ( + w.config.legend.position === 'left' || + w.config.legend.position === 'right' + ) { + if (this.dCtx.lgRect.width * 1.5 > w.globals.svgWidth) { + this.dCtx.lgRect.width = w.globals.svgWidth / 1.5 + } + } + + return this.dCtx.lgRect + } + + getLargestStringFromMultiArr(val, arr) { + const w = this.w + let valArr = val + if (w.globals.isMultiLineX) { + // if the xaxis labels has multiline texts (array) + let maxArrs = arr.map((xl, idx) => { + return Array.isArray(xl) ? xl.length : 1 + }) + let maxArrLen = Math.max(...maxArrs) + let maxArrIndex = maxArrs.indexOf(maxArrLen) + valArr = arr[maxArrIndex] + } + + return valArr + } +} diff --git a/public/assets/libs/apexcharts/src/modules/dimensions/XAxis.js b/public/assets/libs/apexcharts/src/modules/dimensions/XAxis.js new file mode 100644 index 0000000..c247910 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/dimensions/XAxis.js @@ -0,0 +1,385 @@ +import Formatters from '../Formatters' +import Graphics from '../Graphics' +import Utils from '../../utils/Utils' +import DateTime from '../../utils/DateTime' + +export default class DimXAxis { + constructor(dCtx) { + this.w = dCtx.w + this.dCtx = dCtx + } + + /** + * Get X Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + getxAxisLabelsCoords() { + let w = this.w + + let xaxisLabels = w.globals.labels.slice() + if (w.config.xaxis.convertedCatToNumeric && xaxisLabels.length === 0) { + xaxisLabels = w.globals.categoryLabels + } + + let rect + + if (w.globals.timescaleLabels.length > 0) { + const coords = this.getxAxisTimeScaleLabelsCoords() + rect = { + width: coords.width, + height: coords.height + } + w.globals.rotateXLabels = false + } else { + this.dCtx.lgWidthForSideLegends = + (w.config.legend.position === 'left' || + w.config.legend.position === 'right') && + !w.config.legend.floating + ? this.dCtx.lgRect.width + : 0 + + // get the longest string from the labels array and also apply label formatter + let xlbFormatter = w.globals.xLabelFormatter + // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + let val = Utils.getLargestStringFromArr(xaxisLabels) + let valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr( + val, + xaxisLabels + ) + + // the labels gets changed for bar charts + if (w.globals.isBarHorizontal) { + val = w.globals.yAxisScale[0].result.reduce( + (a, b) => (a.length > b.length ? a : b), + 0 + ) + valArr = val + } + + let xFormat = new Formatters(this.dCtx.ctx) + let timestamp = val + val = xFormat.xLabelFormat(xlbFormatter, val, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w + }) + valArr = xFormat.xLabelFormat(xlbFormatter, valArr, timestamp, { + i: undefined, + dateFormatter: new DateTime(this.dCtx.ctx).formatDate, + w + }) + + if ( + (w.config.xaxis.convertedCatToNumeric && typeof val === 'undefined') || + String(val).trim() === '' + ) { + val = '1' + valArr = val + } + + let graphics = new Graphics(this.dCtx.ctx) + let xLabelrect = graphics.getTextRects( + val, + w.config.xaxis.labels.style.fontSize + ) + let xArrLabelrect = xLabelrect + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects( + valArr, + w.config.xaxis.labels.style.fontSize + ) + } + + rect = { + width: + xLabelrect.width >= xArrLabelrect.width + ? xLabelrect.width + : xArrLabelrect.width, + height: + xLabelrect.height >= xArrLabelrect.height + ? xLabelrect.height + : xArrLabelrect.height + } + + if ( + (rect.width * xaxisLabels.length > + w.globals.svgWidth - + this.dCtx.lgWidthForSideLegends - + this.dCtx.yAxisWidth - + this.dCtx.gridPad.left - + this.dCtx.gridPad.right && + w.config.xaxis.labels.rotate !== 0) || + w.config.xaxis.labels.rotateAlways + ) { + if (!w.globals.isBarHorizontal) { + w.globals.rotateXLabels = true + const getRotatedTextRects = (text) => { + return graphics.getTextRects( + text, + w.config.xaxis.labels.style.fontSize, + w.config.xaxis.labels.style.fontFamily, + `rotate(${w.config.xaxis.labels.rotate} 0 0)`, + false + ) + } + xLabelrect = getRotatedTextRects(val) + if (val !== valArr) { + xArrLabelrect = getRotatedTextRects(valArr) + } + + rect.height = + (xLabelrect.height > xArrLabelrect.height + ? xLabelrect.height + : xArrLabelrect.height) / 1.5 + rect.width = + xLabelrect.width > xArrLabelrect.width + ? xLabelrect.width + : xArrLabelrect.width + } + } else { + w.globals.rotateXLabels = false + } + } + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + } + } + + return { + width: rect.width, + height: rect.height + } + } + + /** + * Get X Axis Label Group height + * @memberof Dimensions + * @return {{width, height}} + */ + getxAxisGroupLabelsCoords() { + let w = this.w + + if (!w.globals.hasGroups) { + return { width: 0, height: 0 } + } + + const fontSize = + w.config.xaxis.group.style?.fontSize || + w.config.xaxis.labels.style.fontSize + + let xaxisLabels = w.globals.groups.map((g) => g.title) + + let rect + + // prevent changing xaxisLabels to avoid issues in multi-yaxes - fix #522 + let val = Utils.getLargestStringFromArr(xaxisLabels) + let valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr( + val, + xaxisLabels + ) + + let graphics = new Graphics(this.dCtx.ctx) + let xLabelrect = graphics.getTextRects(val, fontSize) + let xArrLabelrect = xLabelrect + if (val !== valArr) { + xArrLabelrect = graphics.getTextRects(valArr, fontSize) + } + + rect = { + width: + xLabelrect.width >= xArrLabelrect.width + ? xLabelrect.width + : xArrLabelrect.width, + height: + xLabelrect.height >= xArrLabelrect.height + ? xLabelrect.height + : xArrLabelrect.height + } + + if (!w.config.xaxis.labels.show) { + rect = { + width: 0, + height: 0 + } + } + + return { + width: rect.width, + height: rect.height + } + } + + /** + * Get X Axis Title Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + getxAxisTitleCoords() { + let w = this.w + let width = 0 + let height = 0 + + if (w.config.xaxis.title.text !== undefined) { + let graphics = new Graphics(this.dCtx.ctx) + + let rect = graphics.getTextRects( + w.config.xaxis.title.text, + w.config.xaxis.title.style.fontSize + ) + + width = rect.width + height = rect.height + } + + return { + width, + height + } + } + + getxAxisTimeScaleLabelsCoords() { + let w = this.w + let rect + + this.dCtx.timescaleLabels = w.globals.timescaleLabels.slice() + + let labels = this.dCtx.timescaleLabels.map((label) => label.value) + + // get the longest string from the labels array and also apply label formatter to it + let val = labels.reduce((a, b) => { + // if undefined, maybe user didn't pass the datetime(x) values + if (typeof a === 'undefined') { + console.error( + 'You have possibly supplied invalid Date format. Please supply a valid JavaScript Date' + ) + return 0 + } else { + return a.length > b.length ? a : b + } + }, 0) + + let graphics = new Graphics(this.dCtx.ctx) + rect = graphics.getTextRects(val, w.config.xaxis.labels.style.fontSize) + + let totalWidthRotated = rect.width * 1.05 * labels.length + + if ( + totalWidthRotated > w.globals.gridWidth && + w.config.xaxis.labels.rotate !== 0 + ) { + w.globals.overlappingXLabels = true + } + + return rect + } + + // In certain cases, the last labels gets cropped in xaxis. + // Hence, we add some additional padding based on the label length to avoid the last label being cropped or we don't draw it at all + additionalPaddingXLabels(xaxisLabelCoords) { + const w = this.w + const gl = w.globals + const cnf = w.config + const xtype = cnf.xaxis.type + + let lbWidth = xaxisLabelCoords.width + + gl.skipLastTimelinelabel = false + gl.skipFirstTimelinelabel = false + const isBarOpposite = + w.config.yaxis[0].opposite && w.globals.isBarHorizontal + + const isCollapsed = (i) => gl.collapsedSeriesIndices.indexOf(i) !== -1 + + const rightPad = (yaxe) => { + if (this.dCtx.timescaleLabels && this.dCtx.timescaleLabels.length) { + // for timeline labels, we take the last label and check if it exceeds gridWidth + const firstimescaleLabel = this.dCtx.timescaleLabels[0] + const lastTimescaleLabel = this.dCtx.timescaleLabels[ + this.dCtx.timescaleLabels.length - 1 + ] + + const lastLabelPosition = + lastTimescaleLabel.position + + lbWidth / 1.75 - + this.dCtx.yAxisWidthRight + + const firstLabelPosition = + firstimescaleLabel.position - + lbWidth / 1.75 + + this.dCtx.yAxisWidthLeft + + let lgRightRectWidth = + w.config.legend.position === 'right' && this.dCtx.lgRect.width > 0 + ? this.dCtx.lgRect.width + : 0 + if ( + lastLabelPosition > + gl.svgWidth - gl.translateX - lgRightRectWidth + ) { + gl.skipLastTimelinelabel = true + } + + if ( + firstLabelPosition < + -((!yaxe.show || yaxe.floating) && + (cnf.chart.type === 'bar' || + cnf.chart.type === 'candlestick' || + cnf.chart.type === 'rangeBar' || + cnf.chart.type === 'boxPlot') + ? lbWidth / 1.75 + : 10) + ) { + gl.skipFirstTimelinelabel = true + } + } else if (xtype === 'datetime') { + // If user has enabled DateTime, but uses own's formatter + if (this.dCtx.gridPad.right < lbWidth && !gl.rotateXLabels) { + gl.skipLastTimelinelabel = true + } + } else if (xtype !== 'datetime') { + if ( + this.dCtx.gridPad.right < lbWidth / 2 - this.dCtx.yAxisWidthRight && + !gl.rotateXLabels && + !w.config.xaxis.labels.trim && + (w.config.xaxis.tickPlacement !== 'between' || + w.globals.isBarHorizontal) + ) { + this.dCtx.xPadRight = lbWidth / 2 + 1 + } + } + } + + const padYAxe = (yaxe, i) => { + if (isCollapsed(i)) return + + // the code below causes issue apexcharts.js#1989 + // after testing with other use-cases, this has no actual value, hence commented + // if (xtype !== 'datetime') { + // if ( + // this.dCtx.gridPad.left < lbWidth / 2 - this.dCtx.yAxisWidthLeft && + // !gl.rotateXLabels && + // !cnf.xaxis.labels.trim + // ) { + // this.dCtx.xPadLeft = lbWidth / 2 + 1 + // } + // } + + rightPad(yaxe) + } + + cnf.yaxis.forEach((yaxe, i) => { + if (isBarOpposite) { + if (this.dCtx.gridPad.left < lbWidth) { + this.dCtx.xPadLeft = lbWidth / 2 + 1 + } + this.dCtx.xPadRight = lbWidth / 2 + 1 + } else { + padYAxe(yaxe, i) + } + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/dimensions/YAxis.js b/public/assets/libs/apexcharts/src/modules/dimensions/YAxis.js new file mode 100644 index 0000000..8adf715 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/dimensions/YAxis.js @@ -0,0 +1,205 @@ +import Graphics from '../Graphics' +import Utils from '../../utils/Utils' +import AxesUtils from '../axes/AxesUtils' + +export default class DimYAxis { + constructor(dCtx) { + this.w = dCtx.w + this.dCtx = dCtx + } + + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + getyAxisLabelsCoords() { + let w = this.w + + let width = 0 + let height = 0 + let ret = [] + let labelPad = 10 + const axesUtils = new AxesUtils(this.dCtx.ctx) + + w.config.yaxis.map((yaxe, index) => { + const yS = w.globals.yAxisScale[index] + let yAxisMinWidth = 0 + if ( + !axesUtils.isYAxisHidden(index) && + yaxe.labels.show && + yaxe.labels.minWidth !== undefined + ) + yAxisMinWidth = yaxe.labels.minWidth + + if ( + !axesUtils.isYAxisHidden(index) && + yaxe.labels.show && + yS.result.length + ) { + let lbFormatter = w.globals.yLabelFormatters[index] + let minV = yS.niceMin === Number.MIN_VALUE ? 0 : yS.niceMin + const longestStr = + String(minV).length > String(yS.niceMax).length ? minV : yS.niceMax + + // the second parameter -1 is the index of tick which user can use in the formatter + let val = lbFormatter(longestStr, { + seriesIndex: index, + dataPointIndex: -1, + w + }) + let valArr = val + + // if user has specified a custom formatter, and the result is null or empty, we need to discard the formatter and take the value as it is. + if (typeof val === 'undefined' || val.length === 0) { + val = longestStr + } + + if (w.globals.isBarHorizontal) { + labelPad = 0 + + let barYaxisLabels = w.globals.labels.slice() + + // get the longest string from the labels array and also apply label formatter to it + val = Utils.getLargestStringFromArr(barYaxisLabels) + + val = lbFormatter(val, { seriesIndex: index, dataPointIndex: -1, w }) + valArr = this.dCtx.dimHelpers.getLargestStringFromMultiArr( + val, + barYaxisLabels + ) + } + + let graphics = new Graphics(this.dCtx.ctx) + + let rotateStr = 'rotate('.concat(yaxe.labels.rotate, ' 0 0)') + let rect = graphics.getTextRects( + val, + yaxe.labels.style.fontSize, + yaxe.labels.style.fontFamily, + rotateStr, + false + ) + + let arrLabelrect = rect + + if (val !== valArr) { + arrLabelrect = graphics.getTextRects( + valArr, + yaxe.labels.style.fontSize, + yaxe.labels.style.fontFamily, + rotateStr, + false + ) + } + + ret.push({ + width: + (yAxisMinWidth > arrLabelrect.width || yAxisMinWidth > rect.width + ? yAxisMinWidth + : arrLabelrect.width > rect.width + ? arrLabelrect.width + : rect.width) + labelPad, + height: + arrLabelrect.height > rect.height + ? arrLabelrect.height + : rect.height + }) + } else { + ret.push({ + width, + height + }) + } + }) + + return ret + } + + /** + * Get Y Axis Dimensions + * @memberof Dimensions + * @return {{width, height}} + **/ + getyAxisTitleCoords() { + let w = this.w + let ret = [] + + w.config.yaxis.map((yaxe, index) => { + if (yaxe.show && yaxe.title.text !== undefined) { + let graphics = new Graphics(this.dCtx.ctx) + let rotateStr = 'rotate('.concat(yaxe.title.rotate, ' 0 0)') + let rect = graphics.getTextRects( + yaxe.title.text, + yaxe.title.style.fontSize, + yaxe.title.style.fontFamily, + rotateStr, + false + ) + + ret.push({ + width: rect.width, + height: rect.height + }) + } else { + ret.push({ + width: 0, + height: 0 + }) + } + }) + + return ret + } + + getTotalYAxisWidth() { + let w = this.w + let yAxisWidth = 0 + let yAxisWidthLeft = 0 + let yAxisWidthRight = 0 + let padding = w.globals.yAxisScale.length > 1 ? 10 : 0 + const axesUtils = new AxesUtils(this.dCtx.ctx) + + const isHiddenYAxis = function(index) { + return w.globals.ignoreYAxisIndexes.indexOf(index) > -1 + } + + const padForLabelTitle = (coord, index) => { + let floating = w.config.yaxis[index].floating + let width = 0 + + if (coord.width > 0 && !floating) { + width = coord.width + padding + if (isHiddenYAxis(index)) { + width = width - coord.width - padding + } + } else { + width = floating || axesUtils.isYAxisHidden(index) ? 0 : 5 + } + + w.config.yaxis[index].opposite + ? (yAxisWidthRight = yAxisWidthRight + width) + : (yAxisWidthLeft = yAxisWidthLeft + width) + + yAxisWidth = yAxisWidth + width + } + + w.globals.yLabelsCoords.map((yLabelCoord, index) => { + padForLabelTitle(yLabelCoord, index) + }) + + w.globals.yTitleCoords.map((yTitleCoord, index) => { + padForLabelTitle(yTitleCoord, index) + }) + + if (w.globals.isBarHorizontal && !w.config.yaxis[0].floating) { + yAxisWidth = + w.globals.yLabelsCoords[0].width + w.globals.yTitleCoords[0].width + 15 + } + + this.dCtx.yAxisWidthLeft = yAxisWidthLeft + this.dCtx.yAxisWidthRight = yAxisWidthRight + + return yAxisWidth + } +} diff --git a/public/assets/libs/apexcharts/src/modules/helpers/Destroy.js b/public/assets/libs/apexcharts/src/modules/helpers/Destroy.js new file mode 100644 index 0000000..578e3ce --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/helpers/Destroy.js @@ -0,0 +1,88 @@ +export default class Destroy { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + clear({ isUpdating }) { + if (this.ctx.zoomPanSelection) { + this.ctx.zoomPanSelection.destroy() + } + if (this.ctx.toolbar) { + this.ctx.toolbar.destroy() + } + + this.ctx.animations = null + this.ctx.axes = null + this.ctx.annotations = null + this.ctx.core = null + this.ctx.data = null + this.ctx.grid = null + this.ctx.series = null + this.ctx.responsive = null + this.ctx.theme = null + this.ctx.formatters = null + this.ctx.titleSubtitle = null + this.ctx.legend = null + this.ctx.dimensions = null + this.ctx.options = null + this.ctx.crosshairs = null + this.ctx.zoomPanSelection = null + this.ctx.updateHelpers = null + this.ctx.toolbar = null + this.ctx.localization = null + this.ctx.w.globals.tooltip = null + this.clearDomElements({ isUpdating }) + } + + killSVG(draw) { + draw.each(function(i, children) { + this.removeClass('*') + this.off() + this.stop() + }, true) + draw.ungroup() + draw.clear() + } + + clearDomElements({ isUpdating }) { + const elSVG = this.w.globals.dom.Paper.node + // fixes apexcharts.js#1654 & vue-apexcharts#256 + if (elSVG.parentNode && elSVG.parentNode.parentNode && !isUpdating) { + elSVG.parentNode.parentNode.style.minHeight = 'unset' + } + + // detach root event + const baseEl = this.w.globals.dom.baseEl + if (baseEl) { + // see https://github.com/apexcharts/vue-apexcharts/issues/275 + this.ctx.eventList.forEach((event) => { + baseEl.removeEventListener(event, this.ctx.events.documentEvent) + }) + } + + const domEls = this.w.globals.dom + + if (this.ctx.el !== null) { + // remove all child elements - resetting the whole chart + while (this.ctx.el.firstChild) { + this.ctx.el.removeChild(this.ctx.el.firstChild) + } + } + + this.killSVG(domEls.Paper) + domEls.Paper.remove() + + domEls.elWrap = null + domEls.elGraphical = null + domEls.elAnnotations = null + domEls.elLegendWrap = null + domEls.baseEl = null + domEls.elGridRect = null + domEls.elGridRectMask = null + domEls.elGridRectMarkerMask = null + domEls.elForecastMask = null + domEls.elNonForecastMask = null + domEls.elDefs = null + } +} diff --git a/public/assets/libs/apexcharts/src/modules/helpers/InitCtxVariables.js b/public/assets/libs/apexcharts/src/modules/helpers/InitCtxVariables.js new file mode 100644 index 0000000..b86e9a7 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/helpers/InitCtxVariables.js @@ -0,0 +1,104 @@ +import Events from '../Events' +import Localization from './Localization' +import Animations from '../Animations' +import Axes from '../axes/Axes' +import Config from '../settings/Config' +import CoreUtils from '../CoreUtils' +import Crosshairs from '../Crosshairs' +import Grid from '../axes/Grid' +import Graphics from '../Graphics' +import Exports from '../Exports' +import Options from '../settings/Options' +import Responsive from '../Responsive' +import Series from '../Series' +import Theme from '../Theme' +import Formatters from '../Formatters' +import TitleSubtitle from '../TitleSubtitle' +import Legend from '../legend/Legend' +import Toolbar from '../Toolbar' +import Dimensions from '../dimensions/Dimensions' +import ZoomPanSelection from '../ZoomPanSelection' +import Tooltip from '../tooltip/Tooltip' +import Core from '../Core' +import Data from '../Data' +import UpdateHelpers from './UpdateHelpers' + +import '../../svgjs/svg.js' +import 'svg.filter.js' +import 'svg.pathmorphing.js' +import 'svg.draggable.js' +import 'svg.select.js' +import 'svg.resize.js' + +// global Apex object which user can use to override chart's defaults globally +if (typeof window.Apex === 'undefined') { + window.Apex = {} +} + +export default class InitCtxVariables { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + initModules() { + this.ctx.publicMethods = [ + 'updateOptions', + 'updateSeries', + 'appendData', + 'appendSeries', + 'toggleSeries', + 'showSeries', + 'hideSeries', + 'setLocale', + 'resetSeries', + 'zoomX', + 'toggleDataPointSelection', + 'dataURI', + 'addXaxisAnnotation', + 'addYaxisAnnotation', + 'addPointAnnotation', + 'clearAnnotations', + 'removeAnnotation', + 'paper', + 'destroy' + ] + + this.ctx.eventList = [ + 'click', + 'mousedown', + 'mousemove', + 'mouseleave', + 'touchstart', + 'touchmove', + 'touchleave', + 'mouseup', + 'touchend' + ] + + this.ctx.animations = new Animations(this.ctx) + this.ctx.axes = new Axes(this.ctx) + this.ctx.core = new Core(this.ctx.el, this.ctx) + this.ctx.config = new Config({}) + this.ctx.data = new Data(this.ctx) + this.ctx.grid = new Grid(this.ctx) + this.ctx.graphics = new Graphics(this.ctx) + this.ctx.coreUtils = new CoreUtils(this.ctx) + this.ctx.crosshairs = new Crosshairs(this.ctx) + this.ctx.events = new Events(this.ctx) + this.ctx.exports = new Exports(this.ctx) + this.ctx.localization = new Localization(this.ctx) + this.ctx.options = new Options() + this.ctx.responsive = new Responsive(this.ctx) + this.ctx.series = new Series(this.ctx) + this.ctx.theme = new Theme(this.ctx) + this.ctx.formatters = new Formatters(this.ctx) + this.ctx.titleSubtitle = new TitleSubtitle(this.ctx) + this.ctx.legend = new Legend(this.ctx) + this.ctx.toolbar = new Toolbar(this.ctx) + this.ctx.dimensions = new Dimensions(this.ctx) + this.ctx.updateHelpers = new UpdateHelpers(this.ctx) + this.ctx.zoomPanSelection = new ZoomPanSelection(this.ctx) + this.ctx.w.globals.tooltip = new Tooltip(this.ctx) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/helpers/Localization.js b/public/assets/libs/apexcharts/src/modules/helpers/Localization.js new file mode 100644 index 0000000..c06e862 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/helpers/Localization.js @@ -0,0 +1,39 @@ +import Utils from '../../utils/Utils' + +import en from '../../locales/en.json' + +export default class Localization { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + setCurrentLocaleValues(localeName) { + let locales = this.w.config.chart.locales + + // check if user has specified locales in global Apex variable + // if yes - then extend those with local chart's locale + if ( + window.Apex.chart && + window.Apex.chart.locales && + window.Apex.chart.locales.length > 0 + ) { + locales = this.w.config.chart.locales.concat(window.Apex.chart.locales) + } + + // find the locale from the array of locales which user has set (either by chart.defaultLocale or by calling setLocale() method.) + const selectedLocale = locales.filter((c) => c.name === localeName)[0] + + if (selectedLocale) { + // create a complete locale object by extending defaults so you don't get undefined errors. + let ret = Utils.extend(en, selectedLocale) + + // store these locale options in global var for ease access + this.w.globals.locale = ret.options + } else { + throw new Error( + 'Wrong locale name provided. Please make sure you set the correct locale name in options' + ) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/helpers/UpdateHelpers.js b/public/assets/libs/apexcharts/src/modules/helpers/UpdateHelpers.js new file mode 100644 index 0000000..6af9d36 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/helpers/UpdateHelpers.js @@ -0,0 +1,282 @@ +import Defaults from '../settings/Defaults' +import Config from '../settings/Config' +import CoreUtils from '../CoreUtils' +import Graphics from '../Graphics' +import Utils from '../../utils/Utils' + +export default class UpdateHelpers { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + } + + /** + * private method to update Options. + * + * @param {object} options - A new config object can be passed which will be merged with the existing config object + * @param {boolean} redraw - should redraw from beginning or should use existing paths and redraw from there + * @param {boolean} animate - should animate or not on updating Options + * @param {boolean} overwriteInitialConfig - should update the initial config or not + */ + _updateOptions( + options, + redraw = false, + animate = true, + updateSyncedCharts = true, + overwriteInitialConfig = false + ) { + return new Promise((resolve) => { + let charts = [this.ctx] + if (updateSyncedCharts) { + charts = this.ctx.getSyncedCharts() + } + + if (this.ctx.w.globals.isExecCalled) { + // If the user called exec method, we don't want to get grouped charts as user specifically provided a chartID to update + charts = [this.ctx] + this.ctx.w.globals.isExecCalled = false + } + + charts.forEach((ch, chartIndex) => { + let w = ch.w + + w.globals.shouldAnimate = animate + + if (!redraw) { + w.globals.resized = true + w.globals.dataChanged = true + + if (animate) { + ch.series.getPreviousPaths() + } + } + + if (options && typeof options === 'object') { + ch.config = new Config(options) + options = CoreUtils.extendArrayProps(ch.config, options, w) + + // fixes #914, #623 + if (ch.w.globals.chartID !== this.ctx.w.globals.chartID) { + // don't overwrite series of synchronized charts + delete options.series + } + + w.config = Utils.extend(w.config, options) + + if (overwriteInitialConfig) { + // we need to forget the lastXAxis and lastYAxis as user forcefully overwriteInitialConfig. If we do not do this, and next time when user zooms the chart after setting yaxis.min/max or xaxis.min/max - the stored lastXAxis will never allow the chart to use the updated min/max by user. + w.globals.lastXAxis = options.xaxis + ? Utils.clone(options.xaxis) + : [] + w.globals.lastYAxis = options.yaxis + ? Utils.clone(options.yaxis) + : [] + + // After forgetting lastAxes, we need to restore the new config in initialConfig/initialSeries + w.globals.initialConfig = Utils.extend({}, w.config) + w.globals.initialSeries = Utils.clone(w.config.series) + + if (options.series) { + // Replace the collapsed series data + for (let i = 0; i < w.globals.collapsedSeriesIndices.length; i++) { + let series = w.config.series[w.globals.collapsedSeriesIndices[i]] + w.globals.collapsedSeries[i].data = w.globals.axisCharts ? series.data.slice() : series + } + for (let i = 0; i < w.globals.ancillaryCollapsedSeriesIndices.length; i++) { + let series = w.config.series[w.globals.ancillaryCollapsedSeriesIndices[i]] + w.globals.ancillaryCollapsedSeries[i].data = w.globals.axisCharts ? series.data.slice() : series + } + + // Ensure that auto-generated axes are scaled to the visible data + ch.series.emptyCollapsedSeries(w.config.series) + } + } + } + + return ch.update(options).then(() => { + if (chartIndex === charts.length - 1) { + resolve(ch) + } + }) + }) + }) + } + + /** + * Private method to update Series. + * + * @param {array} series - New series which will override the existing + */ + _updateSeries(newSeries, animate, overwriteInitialSeries = false) { + return new Promise((resolve) => { + const w = this.w + + w.globals.shouldAnimate = animate + + w.globals.dataChanged = true + + if (animate) { + this.ctx.series.getPreviousPaths() + } + + let existingSeries + + // axis charts + if (w.globals.axisCharts) { + existingSeries = newSeries.map((s, i) => { + return this._extendSeries(s, i) + }) + + if (existingSeries.length === 0) { + existingSeries = [{ data: [] }] + } + w.config.series = existingSeries + } else { + // non-axis chart (pie/radialbar) + w.config.series = newSeries.slice() + } + + if (overwriteInitialSeries) { + w.globals.initialSeries = Utils.clone(w.config.series) + } + return this.ctx.update().then(() => { + resolve(this.ctx) + }) + }) + } + + _extendSeries(s, i) { + const w = this.w + const ser = w.config.series[i] + + return { + ...w.config.series[i], + name: s.name ? s.name : ser && ser.name, + color: s.color ? s.color : ser && ser.color, + type: s.type ? s.type : ser && ser.type, + data: s.data ? s.data : ser && ser.data + } + } + + toggleDataPointSelection(seriesIndex, dataPointIndex) { + const w = this.w + let elPath = null + const parent = `.apexcharts-series[data\\:realIndex='${seriesIndex}']` + + if (w.globals.axisCharts) { + elPath = w.globals.dom.Paper.select( + `${parent} path[j='${dataPointIndex}'], ${parent} circle[j='${dataPointIndex}'], ${parent} rect[j='${dataPointIndex}']` + ).members[0] + } else { + // dataPointIndex will be undefined here, hence using seriesIndex + if (typeof dataPointIndex === 'undefined') { + elPath = w.globals.dom.Paper.select( + `${parent} path[j='${seriesIndex}']` + ).members[0] + + if ( + w.config.chart.type === 'pie' || + w.config.chart.type === 'polarArea' || + w.config.chart.type === 'donut' + ) { + this.ctx.pie.pieClicked(seriesIndex) + } + } + } + + if (elPath) { + const graphics = new Graphics(this.ctx) + graphics.pathMouseDown(elPath, null) + } else { + console.warn('toggleDataPointSelection: Element not found') + return null + } + + return elPath.node ? elPath.node : null + } + + forceXAxisUpdate(options) { + const w = this.w + const minmax = ['min', 'max'] + + minmax.forEach((a) => { + if (typeof options.xaxis[a] !== 'undefined') { + w.config.xaxis[a] = options.xaxis[a] + w.globals.lastXAxis[a] = options.xaxis[a] + } + }) + + if (options.xaxis.categories && options.xaxis.categories.length) { + w.config.xaxis.categories = options.xaxis.categories + } + + if (w.config.xaxis.convertedCatToNumeric) { + const defaults = new Defaults(options) + options = defaults.convertCatToNumericXaxis(options, this.ctx) + } + return options + } + + forceYAxisUpdate(options) { + const w = this.w + if (w.config.chart.stacked && w.config.chart.stackType === '100%') { + if (Array.isArray(options.yaxis)) { + options.yaxis.forEach((yaxe, index) => { + options.yaxis[index].min = 0 + options.yaxis[index].max = 100 + }) + } else { + options.yaxis.min = 0 + options.yaxis.max = 100 + } + } + return options + } + + /** + * This function reverts the yaxis and xaxis min/max values to what it was when the chart was defined. + * This function fixes an important bug where a user might load a new series after zooming in/out of previous series which resulted in wrong min/max + * Also, this should never be called internally on zoom/pan - the reset should only happen when user calls the updateSeries() function externally + * The function also accepts an object {xaxis, yaxis} which when present is set as the new xaxis/yaxis + */ + revertDefaultAxisMinMax(opts) { + const w = this.w + + let xaxis = w.globals.lastXAxis + let yaxis = w.globals.lastYAxis + + if (opts && opts.xaxis) { + xaxis = opts.xaxis + } + if (opts && opts.yaxis) { + yaxis = opts.yaxis + } + w.config.xaxis.min = xaxis.min + w.config.xaxis.max = xaxis.max + + const getLastYAxis = (index) => { + if (typeof yaxis[index] !== 'undefined') { + w.config.yaxis[index].min = yaxis[index].min + w.config.yaxis[index].max = yaxis[index].max + } + } + + w.config.yaxis.map((yaxe, index) => { + if (w.globals.zoomed) { + // user has zoomed, check the last yaxis + getLastYAxis(index) + } else { + // user hasn't zoomed, check the last yaxis first + if (typeof yaxis[index] !== 'undefined') { + getLastYAxis(index) + } else { + // if last y-axis don't exist, check the original yaxis + if (typeof this.ctx.opts.yaxis[index] !== 'undefined') { + yaxe.min = this.ctx.opts.yaxis[index].min + yaxe.max = this.ctx.opts.yaxis[index].max + } + } + } + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/legend/Helpers.js b/public/assets/libs/apexcharts/src/modules/legend/Helpers.js new file mode 100644 index 0000000..e16a600 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/legend/Helpers.js @@ -0,0 +1,296 @@ +import Graphics from '../Graphics' +import Utils from '../../utils/Utils' + +export default class Helpers { + constructor(lgCtx) { + this.w = lgCtx.w + this.lgCtx = lgCtx + } + + getLegendStyles() { + let stylesheet = document.createElement('style') + stylesheet.setAttribute('type', 'text/css') + + const text = ` + + .apexcharts-legend { + display: flex; + overflow: auto; + padding: 0 10px; + } + .apexcharts-legend.apx-legend-position-bottom, .apexcharts-legend.apx-legend-position-top { + flex-wrap: wrap + } + .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { + flex-direction: column; + bottom: 0; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-left, .apexcharts-legend.apx-legend-position-top.apexcharts-align-left, .apexcharts-legend.apx-legend-position-right, .apexcharts-legend.apx-legend-position-left { + justify-content: flex-start; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-center, .apexcharts-legend.apx-legend-position-top.apexcharts-align-center { + justify-content: center; + } + .apexcharts-legend.apx-legend-position-bottom.apexcharts-align-right, .apexcharts-legend.apx-legend-position-top.apexcharts-align-right { + justify-content: flex-end; + } + .apexcharts-legend-series { + cursor: pointer; + line-height: normal; + } + .apexcharts-legend.apx-legend-position-bottom .apexcharts-legend-series, .apexcharts-legend.apx-legend-position-top .apexcharts-legend-series{ + display: flex; + align-items: center; + } + .apexcharts-legend-text { + position: relative; + font-size: 14px; + } + .apexcharts-legend-text *, .apexcharts-legend-marker * { + pointer-events: none; + } + .apexcharts-legend-marker { + position: relative; + display: inline-block; + cursor: pointer; + margin-right: 3px; + border-style: solid; + } + + .apexcharts-legend.apexcharts-align-right .apexcharts-legend-series, .apexcharts-legend.apexcharts-align-left .apexcharts-legend-series{ + display: inline-block; + } + .apexcharts-legend-series.apexcharts-no-click { + cursor: auto; + } + .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series { + display: none !important; + } + .apexcharts-inactive-legend { + opacity: 0.45; + }` + + let rules = document.createTextNode(text) + + stylesheet.appendChild(rules) + + return stylesheet + } + + getLegendBBox() { + const w = this.w + let currLegendsWrap = w.globals.dom.baseEl.querySelector( + '.apexcharts-legend' + ) + let currLegendsWrapRect = currLegendsWrap.getBoundingClientRect() + + let currLegendsWrapWidth = currLegendsWrapRect.width + let currLegendsWrapHeight = currLegendsWrapRect.height + + return { + clwh: currLegendsWrapHeight, + clww: currLegendsWrapWidth + } + } + + appendToForeignObject() { + const gl = this.w.globals + + gl.dom.elLegendForeign = document.createElementNS(gl.SVGNS, 'foreignObject') + + let elForeign = gl.dom.elLegendForeign + + elForeign.setAttribute('x', 0) + elForeign.setAttribute('y', 0) + elForeign.setAttribute('width', gl.svgWidth) + elForeign.setAttribute('height', gl.svgHeight) + gl.dom.elLegendWrap.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml') + + elForeign.appendChild(gl.dom.elLegendWrap) + elForeign.appendChild(this.getLegendStyles()) + + //gl.dom.elGraphical.node.insertAdjacentElement('afterend', elForeign) + // the above line causes issue #1907 + gl.dom.Paper.node.insertBefore(elForeign, gl.dom.elGraphical.node) + } + + toggleDataSeries(seriesCnt, isHidden) { + const w = this.w + if (w.globals.axisCharts || w.config.chart.type === 'radialBar') { + w.globals.resized = true // we don't want initial animations again + + let seriesEl = null + + let realIndex = null + + // yes, make it null. 1 series will rise at a time + w.globals.risingSeries = [] + + if (w.globals.axisCharts) { + seriesEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[data\\:realIndex='${seriesCnt}']` + ) + realIndex = parseInt(seriesEl.getAttribute('data:realIndex'), 10) + } else { + seriesEl = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[rel='${seriesCnt + 1}']` + ) + realIndex = parseInt(seriesEl.getAttribute('rel'), 10) - 1 + } + + if (isHidden) { + const seriesToMakeVisible = [ + { + cs: w.globals.collapsedSeries, + csi: w.globals.collapsedSeriesIndices + }, + { + cs: w.globals.ancillaryCollapsedSeries, + csi: w.globals.ancillaryCollapsedSeriesIndices + } + ] + seriesToMakeVisible.forEach((r) => { + this.riseCollapsedSeries(r.cs, r.csi, realIndex) + }) + } else { + this.hideSeries({ seriesEl, realIndex }) + } + } else { + // for non-axis charts i.e pie / donuts + let seriesEl = w.globals.dom.Paper.select( + ` .apexcharts-series[rel='${seriesCnt + 1}'] path` + ) + + const type = w.config.chart.type + if (type === 'pie' || type === 'polarArea' || type === 'donut') { + let dataLabels = w.config.plotOptions.pie.donut.labels + + const graphics = new Graphics(this.lgCtx.ctx) + graphics.pathMouseDown(seriesEl.members[0], null) + this.lgCtx.ctx.pie.printDataLabelsInner( + seriesEl.members[0].node, + dataLabels + ) + } + + seriesEl.fire('click') + } + } + + hideSeries({ seriesEl, realIndex }) { + const w = this.w + + let series = Utils.clone(w.config.series) + + if (w.globals.axisCharts) { + let shouldNotHideYAxis = false + + if ( + w.config.yaxis[realIndex] && + w.config.yaxis[realIndex].show && + w.config.yaxis[realIndex].showAlways + ) { + shouldNotHideYAxis = true + if (w.globals.ancillaryCollapsedSeriesIndices.indexOf(realIndex) < 0) { + w.globals.ancillaryCollapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }) + w.globals.ancillaryCollapsedSeriesIndices.push(realIndex) + } + } + + if (!shouldNotHideYAxis) { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex].data.slice(), + type: seriesEl.parentNode.className.baseVal.split('-')[1] + }) + w.globals.collapsedSeriesIndices.push(realIndex) + + let removeIndexOfRising = w.globals.risingSeries.indexOf(realIndex) + + w.globals.risingSeries.splice(removeIndexOfRising, 1) + } + } else { + w.globals.collapsedSeries.push({ + index: realIndex, + data: series[realIndex] + }) + w.globals.collapsedSeriesIndices.push(realIndex) + } + + let seriesChildren = seriesEl.childNodes + for (let sc = 0; sc < seriesChildren.length; sc++) { + if ( + seriesChildren[sc].classList.contains('apexcharts-series-markers-wrap') + ) { + if (seriesChildren[sc].classList.contains('apexcharts-hide')) { + seriesChildren[sc].classList.remove('apexcharts-hide') + } else { + seriesChildren[sc].classList.add('apexcharts-hide') + } + } + } + + w.globals.allSeriesCollapsed = + w.globals.collapsedSeries.length === w.config.series.length + + series = this._getSeriesBasedOnCollapsedState(series) + this.lgCtx.ctx.updateHelpers._updateSeries( + series, + w.config.chart.animations.dynamicAnimation.enabled + ) + } + + riseCollapsedSeries(collapsedSeries, seriesIndices, realIndex) { + const w = this.w + let series = Utils.clone(w.config.series) + + if (collapsedSeries.length > 0) { + for (let c = 0; c < collapsedSeries.length; c++) { + if (collapsedSeries[c].index === realIndex) { + if (w.globals.axisCharts) { + series[realIndex].data = collapsedSeries[c].data.slice() + collapsedSeries.splice(c, 1) + seriesIndices.splice(c, 1) + w.globals.risingSeries.push(realIndex) + } else { + series[realIndex] = collapsedSeries[c].data + collapsedSeries.splice(c, 1) + seriesIndices.splice(c, 1) + w.globals.risingSeries.push(realIndex) + } + } + } + + series = this._getSeriesBasedOnCollapsedState(series) + + this.lgCtx.ctx.updateHelpers._updateSeries( + series, + w.config.chart.animations.dynamicAnimation.enabled + ) + } + } + + _getSeriesBasedOnCollapsedState(series) { + const w = this.w + + if (w.globals.axisCharts) { + series.forEach((s, sI) => { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI].data = [] + } + }) + } else { + series.forEach((s, sI) => { + if (w.globals.collapsedSeriesIndices.indexOf(sI) > -1) { + series[sI] = 0 + } + }) + } + + return series + } +} diff --git a/public/assets/libs/apexcharts/src/modules/legend/Legend.js b/public/assets/libs/apexcharts/src/modules/legend/Legend.js new file mode 100644 index 0000000..9fe8fec --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/legend/Legend.js @@ -0,0 +1,481 @@ +import CoreUtils from '../CoreUtils' +import Dimensions from '../dimensions/Dimensions' +import Graphics from '../Graphics' +import Series from '../Series' +import Utils from '../../utils/Utils' +import Helpers from './Helpers' + +/** + * ApexCharts Legend Class to draw legend. + * + * @module Legend + **/ + +class Legend { + constructor(ctx, opts) { + this.ctx = ctx + this.w = ctx.w + + this.onLegendClick = this.onLegendClick.bind(this) + this.onLegendHovered = this.onLegendHovered.bind(this) + + this.isBarsDistributed = + this.w.config.chart.type === 'bar' && + this.w.config.plotOptions.bar.distributed && + this.w.config.series.length === 1 + + this.legendHelpers = new Helpers(this) + } + + init() { + const w = this.w + + const gl = w.globals + const cnf = w.config + + const showLegendAlways = + (cnf.legend.showForSingleSeries && gl.series.length === 1) || + this.isBarsDistributed || + gl.series.length > 1 + + if ((showLegendAlways || !gl.axisCharts) && cnf.legend.show) { + while (gl.dom.elLegendWrap.firstChild) { + gl.dom.elLegendWrap.removeChild(gl.dom.elLegendWrap.firstChild) + } + + this.drawLegends() + if (!Utils.isIE11()) { + this.legendHelpers.appendToForeignObject() + } else { + // IE11 doesn't supports foreignObject, hence append it to + document + .getElementsByTagName('head')[0] + .appendChild(this.legendHelpers.getLegendStyles()) + } + + if (cnf.legend.position === 'bottom' || cnf.legend.position === 'top') { + this.legendAlignHorizontal() + } else if ( + cnf.legend.position === 'right' || + cnf.legend.position === 'left' + ) { + this.legendAlignVertical() + } + } + } + + drawLegends() { + let me = this + let w = this.w + + let fontFamily = w.config.legend.fontFamily + + let legendNames = w.globals.seriesNames + let fillcolor = w.globals.colors.slice() + + if (w.config.chart.type === 'heatmap') { + const ranges = w.config.plotOptions.heatmap.colorScale.ranges + legendNames = ranges.map((colorScale) => { + return colorScale.name + ? colorScale.name + : colorScale.from + ' - ' + colorScale.to + }) + fillcolor = ranges.map((color) => color.color) + } else if (this.isBarsDistributed) { + legendNames = w.globals.labels.slice() + } + + if (w.config.legend.customLegendItems.length) { + legendNames = w.config.legend.customLegendItems + } + let legendFormatter = w.globals.legendFormatter + + let isLegendInversed = w.config.legend.inverseOrder + + for ( + let i = isLegendInversed ? legendNames.length - 1 : 0; + isLegendInversed ? i >= 0 : i <= legendNames.length - 1; + isLegendInversed ? i-- : i++ + ) { + let text = legendFormatter(legendNames[i], { seriesIndex: i, w }) + + let collapsedSeries = false + let ancillaryCollapsedSeries = false + if (w.globals.collapsedSeries.length > 0) { + for (let c = 0; c < w.globals.collapsedSeries.length; c++) { + if (w.globals.collapsedSeries[c].index === i) { + collapsedSeries = true + } + } + } + + if (w.globals.ancillaryCollapsedSeriesIndices.length > 0) { + for ( + let c = 0; + c < w.globals.ancillaryCollapsedSeriesIndices.length; + c++ + ) { + if (w.globals.ancillaryCollapsedSeriesIndices[c] === i) { + ancillaryCollapsedSeries = true + } + } + } + + let elMarker = document.createElement('span') + elMarker.classList.add('apexcharts-legend-marker') + + let mOffsetX = w.config.legend.markers.offsetX + let mOffsetY = w.config.legend.markers.offsetY + let mHeight = w.config.legend.markers.height + let mWidth = w.config.legend.markers.width + let mBorderWidth = w.config.legend.markers.strokeWidth + let mBorderColor = w.config.legend.markers.strokeColor + let mBorderRadius = w.config.legend.markers.radius + + // todo - untested code below + // if (Array.isArray(w.config.legend.markers.shape)) { + // } else { + // if (w.config.legend.markers.shape !== 'circle') { + // mBorderRadius = 1 + // } + // } + + let mStyle = elMarker.style + + mStyle.background = fillcolor[i] + mStyle.color = fillcolor[i] + mStyle.setProperty('background', fillcolor[i], 'important') + + // override fill color with custom legend.markers.fillColors + if ( + w.config.legend.markers.fillColors && + w.config.legend.markers.fillColors[i] + ) { + mStyle.background = w.config.legend.markers.fillColors[i] + } + + // override with data color + if (w.globals.seriesColors[i] !== undefined) { + mStyle.background = w.globals.seriesColors[i] + mStyle.color = w.globals.seriesColors[i] + } + + mStyle.height = Array.isArray(mHeight) + ? parseFloat(mHeight[i]) + 'px' + : parseFloat(mHeight) + 'px' + mStyle.width = Array.isArray(mWidth) + ? parseFloat(mWidth[i]) + 'px' + : parseFloat(mWidth) + 'px' + mStyle.left = + (Array.isArray(mOffsetX) + ? parseFloat(mOffsetX[i]) + : parseFloat(mOffsetX)) + 'px' + mStyle.top = + (Array.isArray(mOffsetY) + ? parseFloat(mOffsetY[i]) + : parseFloat(mOffsetY)) + 'px' + mStyle.borderWidth = Array.isArray(mBorderWidth) + ? mBorderWidth[i] + : mBorderWidth + mStyle.borderColor = Array.isArray(mBorderColor) + ? mBorderColor[i] + : mBorderColor + mStyle.borderRadius = Array.isArray(mBorderRadius) + ? parseFloat(mBorderRadius[i]) + 'px' + : parseFloat(mBorderRadius) + 'px' + + if (w.config.legend.markers.customHTML) { + if (Array.isArray(w.config.legend.markers.customHTML)) { + if (w.config.legend.markers.customHTML[i]) { + elMarker.innerHTML = w.config.legend.markers.customHTML[i]() + } + } else { + elMarker.innerHTML = w.config.legend.markers.customHTML() + } + } + + Graphics.setAttrs(elMarker, { + rel: i + 1, + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }) + + if (collapsedSeries || ancillaryCollapsedSeries) { + elMarker.classList.add('apexcharts-inactive-legend') + } + + let elLegend = document.createElement('div') + + let elLegendText = document.createElement('span') + elLegendText.classList.add('apexcharts-legend-text') + elLegendText.innerHTML = Array.isArray(text) ? text.join(' ') : text + + let textColor = w.config.legend.labels.useSeriesColors + ? w.globals.colors[i] + : w.config.legend.labels.colors + + if (!textColor) { + textColor = w.config.chart.foreColor + } + + elLegendText.style.color = textColor + + elLegendText.style.fontSize = parseFloat(w.config.legend.fontSize) + 'px' + elLegendText.style.fontWeight = w.config.legend.fontWeight + elLegendText.style.fontFamily = fontFamily || w.config.chart.fontFamily + + Graphics.setAttrs(elLegendText, { + rel: i + 1, + i, + 'data:default-text': encodeURIComponent(text), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }) + + elLegend.appendChild(elMarker) + elLegend.appendChild(elLegendText) + + const coreUtils = new CoreUtils(this.ctx) + if (!w.config.legend.showForZeroSeries) { + const total = coreUtils.getSeriesTotalByIndex(i) + + if ( + total === 0 && + coreUtils.seriesHaveSameValues(i) && + !coreUtils.isSeriesNull(i) && + w.globals.collapsedSeriesIndices.indexOf(i) === -1 && + w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1 + ) { + elLegend.classList.add('apexcharts-hidden-zero-series') + } + } + + if (!w.config.legend.showForNullSeries) { + if ( + coreUtils.isSeriesNull(i) && + w.globals.collapsedSeriesIndices.indexOf(i) === -1 && + w.globals.ancillaryCollapsedSeriesIndices.indexOf(i) === -1 + ) { + elLegend.classList.add('apexcharts-hidden-null-series') + } + } + + w.globals.dom.elLegendWrap.appendChild(elLegend) + w.globals.dom.elLegendWrap.classList.add( + `apexcharts-align-${w.config.legend.horizontalAlign}` + ) + w.globals.dom.elLegendWrap.classList.add( + 'apx-legend-position-' + w.config.legend.position + ) + + elLegend.classList.add('apexcharts-legend-series') + elLegend.style.margin = `${w.config.legend.itemMargin.vertical}px ${w.config.legend.itemMargin.horizontal}px` + w.globals.dom.elLegendWrap.style.width = w.config.legend.width + ? w.config.legend.width + 'px' + : '' + w.globals.dom.elLegendWrap.style.height = w.config.legend.height + ? w.config.legend.height + 'px' + : '' + + Graphics.setAttrs(elLegend, { + rel: i + 1, + seriesName: Utils.escapeString(legendNames[i]), + 'data:collapsed': collapsedSeries || ancillaryCollapsedSeries + }) + + if (collapsedSeries || ancillaryCollapsedSeries) { + elLegend.classList.add('apexcharts-inactive-legend') + } + + if (!w.config.legend.onItemClick.toggleDataSeries) { + elLegend.classList.add('apexcharts-no-click') + } + } + + w.globals.dom.elWrap.addEventListener('click', me.onLegendClick, true) + + if ( + w.config.legend.onItemHover.highlightDataSeries && + w.config.legend.customLegendItems.length === 0 + ) { + w.globals.dom.elWrap.addEventListener( + 'mousemove', + me.onLegendHovered, + true + ) + w.globals.dom.elWrap.addEventListener( + 'mouseout', + me.onLegendHovered, + true + ) + } + } + + setLegendWrapXY(offsetX, offsetY) { + let w = this.w + + let elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend') + + const legendRect = elLegendWrap.getBoundingClientRect() + + let x = 0 + let y = 0 + + if (w.config.legend.position === 'bottom') { + y = y + (w.globals.svgHeight - legendRect.height / 2) + } else if (w.config.legend.position === 'top') { + const dim = new Dimensions(this.ctx) + const titleH = dim.dimHelpers.getTitleSubtitleCoords('title').height + const subtitleH = dim.dimHelpers.getTitleSubtitleCoords('subtitle').height + + y = + y + + (titleH > 0 ? titleH - 10 : 0) + + (subtitleH > 0 ? subtitleH - 10 : 0) + } + + elLegendWrap.style.position = 'absolute' + + x = x + offsetX + w.config.legend.offsetX + y = y + offsetY + w.config.legend.offsetY + + elLegendWrap.style.left = x + 'px' + elLegendWrap.style.top = y + 'px' + + if (w.config.legend.position === 'bottom') { + elLegendWrap.style.top = 'auto' + elLegendWrap.style.bottom = 5 - w.config.legend.offsetY + 'px' + } else if (w.config.legend.position === 'right') { + elLegendWrap.style.left = 'auto' + elLegendWrap.style.right = 25 + w.config.legend.offsetX + 'px' + } + + const fixedHeigthWidth = ['width', 'height'] + fixedHeigthWidth.forEach((hw) => { + if (elLegendWrap.style[hw]) { + elLegendWrap.style[hw] = parseInt(w.config.legend[hw], 10) + 'px' + } + }) + } + + legendAlignHorizontal() { + let w = this.w + + let elLegendWrap = w.globals.dom.baseEl.querySelector('.apexcharts-legend') + + elLegendWrap.style.right = 0 + + let lRect = this.legendHelpers.getLegendBBox() + + let dimensions = new Dimensions(this.ctx) + let titleRect = dimensions.dimHelpers.getTitleSubtitleCoords('title') + let subtitleRect = dimensions.dimHelpers.getTitleSubtitleCoords('subtitle') + + let offsetX = 20 + let offsetY = 0 + + // the whole legend box is set to bottom + if (w.config.legend.position === 'bottom') { + offsetY = -lRect.clwh / 1.8 + } else if (w.config.legend.position === 'top') { + offsetY = + titleRect.height + + subtitleRect.height + + w.config.title.margin + + w.config.subtitle.margin - + 10 + } + + this.setLegendWrapXY(offsetX, offsetY) + } + + legendAlignVertical() { + let w = this.w + + let lRect = this.legendHelpers.getLegendBBox() + + let offsetY = 20 + let offsetX = 0 + + if (w.config.legend.position === 'left') { + offsetX = 20 + } + + if (w.config.legend.position === 'right') { + offsetX = w.globals.svgWidth - lRect.clww - 10 + } + + this.setLegendWrapXY(offsetX, offsetY) + } + + onLegendHovered(e) { + const w = this.w + + const hoverOverLegend = + e.target.classList.contains('apexcharts-legend-text') || + e.target.classList.contains('apexcharts-legend-marker') + + if (w.config.chart.type !== 'heatmap' && !this.isBarsDistributed) { + if ( + !e.target.classList.contains('apexcharts-inactive-legend') && + hoverOverLegend + ) { + let series = new Series(this.ctx) + series.toggleSeriesOnHover(e, e.target) + } + } else { + // for heatmap handling + if (hoverOverLegend) { + let seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1 + this.ctx.events.fireEvent('legendHover', [this.ctx, seriesCnt, this.w]) + + let series = new Series(this.ctx) + series.highlightRangeInSeries(e, e.target) + } + } + } + + onLegendClick(e) { + const w = this.w + + if (w.config.legend.customLegendItems.length) return + + if ( + e.target.classList.contains('apexcharts-legend-text') || + e.target.classList.contains('apexcharts-legend-marker') + ) { + let seriesCnt = parseInt(e.target.getAttribute('rel'), 10) - 1 + let isHidden = e.target.getAttribute('data:collapsed') === 'true' + + const legendClick = this.w.config.chart.events.legendClick + if (typeof legendClick === 'function') { + legendClick(this.ctx, seriesCnt, this.w) + } + + this.ctx.events.fireEvent('legendClick', [this.ctx, seriesCnt, this.w]) + + const markerClick = this.w.config.legend.markers.onClick + if ( + typeof markerClick === 'function' && + e.target.classList.contains('apexcharts-legend-marker') + ) { + markerClick(this.ctx, seriesCnt, this.w) + this.ctx.events.fireEvent('legendMarkerClick', [ + this.ctx, + seriesCnt, + this.w + ]) + } + + // for now - just prevent click on heatmap legend - and allow hover only + const clickAllowed = + w.config.chart.type !== 'treemap' && + w.config.chart.type !== 'heatmap' && + !this.isBarsDistributed + + if (clickAllowed && w.config.legend.onItemClick.toggleDataSeries) { + this.legendHelpers.toggleDataSeries(seriesCnt, isHidden) + } + } + } +} + +export default Legend diff --git a/public/assets/libs/apexcharts/src/modules/settings/Config.js b/public/assets/libs/apexcharts/src/modules/settings/Config.js new file mode 100644 index 0000000..5fc677f --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/settings/Config.js @@ -0,0 +1,345 @@ +import Defaults from './Defaults' +import Utils from './../../utils/Utils' +import Options from './Options' + +/** + * ApexCharts Config Class for extending user options with pre-defined ApexCharts config. + * + * @module Config + **/ +export default class Config { + constructor(opts) { + this.opts = opts + } + + init({ responsiveOverride }) { + let opts = this.opts + let options = new Options() + let defaults = new Defaults(opts) + + this.chartType = opts.chart.type + + if (this.chartType === 'histogram') { + // technically, a histogram can be drawn by a column chart with no spaces in between + opts.chart.type = 'bar' + opts = Utils.extend( + { + plotOptions: { + bar: { + columnWidth: '99.99%' + } + } + }, + opts + ) + } + + opts = this.extendYAxis(opts) + opts = this.extendAnnotations(opts) + + let config = options.init() + let newDefaults = {} + if (opts && typeof opts === 'object') { + let chartDefaults = {} + const chartTypes = [ + 'line', + 'area', + 'bar', + 'candlestick', + 'boxPlot', + 'rangeBar', + 'histogram', + 'bubble', + 'scatter', + 'heatmap', + 'treemap', + 'pie', + 'polarArea', + 'donut', + 'radar', + 'radialBar' + ] + + if (chartTypes.indexOf(opts.chart.type) !== -1) { + chartDefaults = defaults[opts.chart.type]() + } else { + chartDefaults = defaults.line() + } + + if (opts.chart.brush && opts.chart.brush.enabled) { + chartDefaults = defaults.brush(chartDefaults) + } + + if (opts.chart.stacked && opts.chart.stackType === '100%') { + opts = defaults.stacked100(opts) + } + + // If user has specified a dark theme, make the tooltip dark too + this.checkForDarkTheme(window.Apex) // check global window Apex options + this.checkForDarkTheme(opts) // check locally passed options + + opts.xaxis = opts.xaxis || window.Apex.xaxis || {} + + // an important boolean needs to be set here + // otherwise all the charts will have this flag set to true window.Apex.xaxis is set globally + if (!responsiveOverride) { + opts.xaxis.convertedCatToNumeric = false + } + + opts = this.checkForCatToNumericXAxis(this.chartType, chartDefaults, opts) + + if ( + (opts.chart.sparkline && opts.chart.sparkline.enabled) || + (window.Apex.chart && + window.Apex.chart.sparkline && + window.Apex.chart.sparkline.enabled) + ) { + chartDefaults = defaults.sparkline(chartDefaults) + } + newDefaults = Utils.extend(config, chartDefaults) + } + + // config should cascade in this fashion + // default-config < global-apex-variable-config < user-defined-config + + // get GLOBALLY defined options and merge with the default config + let mergedWithDefaultConfig = Utils.extend(newDefaults, window.Apex) + + // get the merged config and extend with user defined config + config = Utils.extend(mergedWithDefaultConfig, opts) + + // some features are not supported. those mismatches should be handled + config = this.handleUserInputErrors(config) + + return config + } + + checkForCatToNumericXAxis(chartType, chartDefaults, opts) { + let defaults = new Defaults(opts) + + const isBarHorizontal = + (chartType === 'bar' || chartType === 'boxPlot') && + opts.plotOptions && + opts.plotOptions.bar && + opts.plotOptions.bar.horizontal + + const unsupportedZoom = + chartType === 'pie' || + chartType === 'polarArea' || + chartType === 'donut' || + chartType === 'radar' || + chartType === 'radialBar' || + chartType === 'heatmap' + + const notNumericXAxis = + opts.xaxis.type !== 'datetime' && opts.xaxis.type !== 'numeric' + + let tickPlacement = opts.xaxis.tickPlacement + ? opts.xaxis.tickPlacement + : chartDefaults.xaxis && chartDefaults.xaxis.tickPlacement + if ( + !isBarHorizontal && + !unsupportedZoom && + notNumericXAxis && + tickPlacement !== 'between' + ) { + opts = defaults.convertCatToNumeric(opts) + } + + return opts + } + + extendYAxis(opts, w) { + let options = new Options() + + if ( + typeof opts.yaxis === 'undefined' || + !opts.yaxis || + (Array.isArray(opts.yaxis) && opts.yaxis.length === 0) + ) { + opts.yaxis = {} + } + + // extend global yaxis config (only if object is provided / not an array) + if ( + opts.yaxis.constructor !== Array && + window.Apex.yaxis && + window.Apex.yaxis.constructor !== Array + ) { + opts.yaxis = Utils.extend(opts.yaxis, window.Apex.yaxis) + } + + // as we can't extend nested object's array with extend, we need to do it first + // user can provide either an array or object in yaxis config + if (opts.yaxis.constructor !== Array) { + // convert the yaxis to array if user supplied object + opts.yaxis = [Utils.extend(options.yAxis, opts.yaxis)] + } else { + opts.yaxis = Utils.extendArray(opts.yaxis, options.yAxis) + } + + let isLogY = false + opts.yaxis.forEach((y) => { + if (y.logarithmic) { + isLogY = true + } + }) + + let series = opts.series + if (w && !series) { + series = w.config.series + } + + // A logarithmic chart works correctly when each series has a corresponding y-axis + // If this is not the case, we manually create yaxis for multi-series log chart + if (isLogY && series.length !== opts.yaxis.length && series.length) { + opts.yaxis = series.map((s, i) => { + if (!s.name) { + series[i].name = `series-${i + 1}` + } + if (opts.yaxis[i]) { + opts.yaxis[i].seriesName = series[i].name + return opts.yaxis[i] + } else { + const newYaxis = Utils.extend(options.yAxis, opts.yaxis[0]) + newYaxis.show = false + return newYaxis + } + }) + } + + if (isLogY && series.length > 1 && series.length !== opts.yaxis.length) { + console.warn( + 'A multi-series logarithmic chart should have equal number of series and y-axes. Please make sure to equalize both.' + ) + } + return opts + } + + // annotations also accepts array, so we need to extend them manually + extendAnnotations(opts) { + if (typeof opts.annotations === 'undefined') { + opts.annotations = {} + opts.annotations.yaxis = [] + opts.annotations.xaxis = [] + opts.annotations.points = [] + } + + opts = this.extendYAxisAnnotations(opts) + opts = this.extendXAxisAnnotations(opts) + opts = this.extendPointAnnotations(opts) + + return opts + } + + extendYAxisAnnotations(opts) { + let options = new Options() + + opts.annotations.yaxis = Utils.extendArray( + typeof opts.annotations.yaxis !== 'undefined' + ? opts.annotations.yaxis + : [], + options.yAxisAnnotation + ) + return opts + } + + extendXAxisAnnotations(opts) { + let options = new Options() + + opts.annotations.xaxis = Utils.extendArray( + typeof opts.annotations.xaxis !== 'undefined' + ? opts.annotations.xaxis + : [], + options.xAxisAnnotation + ) + return opts + } + extendPointAnnotations(opts) { + let options = new Options() + + opts.annotations.points = Utils.extendArray( + typeof opts.annotations.points !== 'undefined' + ? opts.annotations.points + : [], + options.pointAnnotation + ) + return opts + } + + checkForDarkTheme(opts) { + if (opts.theme && opts.theme.mode === 'dark') { + if (!opts.tooltip) { + opts.tooltip = {} + } + if (opts.tooltip.theme !== 'light') { + opts.tooltip.theme = 'dark' + } + + if (!opts.chart.foreColor) { + opts.chart.foreColor = '#f6f7f8' + } + + if (!opts.chart.background) { + opts.chart.background = '#424242' + } + + if (!opts.theme.palette) { + opts.theme.palette = 'palette4' + } + } + } + + handleUserInputErrors(opts) { + let config = opts + // conflicting tooltip option. intersect makes sure to focus on 1 point at a time. Shared cannot be used along with it + if (config.tooltip.shared && config.tooltip.intersect) { + throw new Error( + 'tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.' + ) + } + + if (config.chart.type === 'bar' && config.plotOptions.bar.horizontal) { + // No multiple yaxis for bars + if (config.yaxis.length > 1) { + throw new Error( + 'Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false' + ) + } + + // if yaxis is reversed in horizontal bar chart, you should draw the y-axis on right side + if (config.yaxis[0].reversed) { + config.yaxis[0].opposite = true + } + + config.xaxis.tooltip.enabled = false // no xaxis tooltip for horizontal bar + config.yaxis[0].tooltip.enabled = false // no xaxis tooltip for horizontal bar + config.chart.zoom.enabled = false // no zooming for horz bars + } + + if (config.chart.type === 'bar' || config.chart.type === 'rangeBar') { + if (config.tooltip.shared) { + if ( + config.xaxis.crosshairs.width === 'barWidth' && + config.series.length > 1 + ) { + config.xaxis.crosshairs.width = 'tickWidth' + } + } + } + + if ( + config.chart.type === 'candlestick' || + config.chart.type === 'boxPlot' + ) { + if (config.yaxis[0].reversed) { + console.warn( + `Reversed y-axis in ${config.chart.type} chart is not supported.` + ) + config.yaxis[0].reversed = false + } + } + + return config + } +} diff --git a/public/assets/libs/apexcharts/src/modules/settings/Defaults.js b/public/assets/libs/apexcharts/src/modules/settings/Defaults.js new file mode 100644 index 0000000..5858a0e --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/settings/Defaults.js @@ -0,0 +1,857 @@ +import Utils from '../../utils/Utils' +import RangeBar from '../../charts/RangeBar' + +/** + * ApexCharts Default Class for setting default options for all chart types. + * + * @module Defaults + **/ + +export default class Defaults { + constructor(opts) { + this.opts = opts + } + + line() { + return { + chart: { + animations: { + easing: 'swing' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 5, + curve: 'straight' + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + } + } + + sparkline(defaults) { + this.opts.yaxis[0].show = false + this.opts.yaxis[0].title.text = '' + this.opts.yaxis[0].axisBorder.show = false + this.opts.yaxis[0].axisTicks.show = false + this.opts.yaxis[0].floating = true + + const ret = { + grid: { + show: false, + padding: { + left: 0, + right: 0, + top: 0, + bottom: 0 + } + }, + legend: { + show: false + }, + xaxis: { + labels: { + show: false + }, + tooltip: { + enabled: false + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + chart: { + toolbar: { + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + } + } + + return Utils.extend(defaults, ret) + } + + bar() { + return { + chart: { + stacked: false, + animations: { + easing: 'swing' + } + }, + plotOptions: { + bar: { + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + style: { + colors: ['#fff'] + }, + background: { + enabled: false + } + }, + stroke: { + width: 0, + lineCap: 'round' + }, + fill: { + opacity: 0.85 + }, + legend: { + markers: { + shape: 'square', + radius: 2, + size: 8 + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + tooltip: { + enabled: false + }, + tickPlacement: 'between', + crosshairs: { + width: 'barWidth', + position: 'back', + fill: { + type: 'gradient' + }, + dropShadow: { + enabled: false + }, + stroke: { + width: 0 + } + } + } + } + } + + candlestick() { + return { + stroke: { + width: 1, + colors: ['#333'] + }, + fill: { + opacity: 1 + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: ({ seriesIndex, dataPointIndex, w }) => { + return this._getBoxTooltip( + w, + seriesIndex, + dataPointIndex, + ['Open', 'High', '', 'Low', 'Close'], + 'candlestick' + ) + } + }, + states: { + active: { + filter: { + type: 'none' + } + } + }, + xaxis: { + crosshairs: { + width: 1 + } + } + } + } + + boxPlot() { + return { + chart: { + animations: { + dynamicAnimation: { + enabled: false + } + } + }, + stroke: { + width: 1, + colors: ['#24292e'] + }, + dataLabels: { + enabled: false + }, + tooltip: { + shared: true, + custom: ({ seriesIndex, dataPointIndex, w }) => { + return this._getBoxTooltip( + w, + seriesIndex, + dataPointIndex, + ['Minimum', 'Q1', 'Median', 'Q3', 'Maximum'], + 'boxPlot' + ) + } + }, + markers: { + size: 5, + strokeWidth: 1, + strokeColors: '#111' + }, + xaxis: { + crosshairs: { + width: 1 + } + } + } + } + + rangeBar() { + const handleTimelineTooltip = (opts) => { + const rangeCtx = new RangeBar(opts.ctx, null) + + const { + color, + seriesName, + ylabel, + startVal, + endVal + } = rangeCtx.getTooltipValues(opts) + return rangeCtx.buildCustomTooltipHTML({ + color, + seriesName, + ylabel, + start: startVal, + end: endVal + }) + } + + const handleRangeColumnTooltip = (opts) => { + const rangeCtx = new RangeBar(opts.ctx, null) + + const { + color, + seriesName, + ylabel, + start, + end + } = rangeCtx.getTooltipValues(opts) + return rangeCtx.buildCustomTooltipHTML({ + color, + seriesName, + ylabel, + start, + end + }) + } + return { + stroke: { + width: 0, + lineCap: 'square' + }, + plotOptions: { + bar: { + borderRadius: 0, + dataLabels: { + position: 'center' + } + } + }, + dataLabels: { + enabled: false, + formatter(val, { ctx, seriesIndex, dataPointIndex, w }) { + const start = w.globals.seriesRangeStart[seriesIndex][dataPointIndex] + const end = w.globals.seriesRangeEnd[seriesIndex][dataPointIndex] + return end - start + }, + background: { + enabled: false + }, + style: { + colors: ['#fff'] + } + }, + tooltip: { + shared: false, + followCursor: true, + custom(opts) { + if ( + opts.w.config.plotOptions && + opts.w.config.plotOptions.bar && + opts.w.config.plotOptions.bar.horizontal + ) { + return handleTimelineTooltip(opts) + } else { + return handleRangeColumnTooltip(opts) + } + } + }, + xaxis: { + tickPlacement: 'between', + tooltip: { + enabled: false + }, + crosshairs: { + stroke: { + width: 0 + } + } + } + } + } + + area() { + return { + stroke: { + width: 4, + fill: { + type: 'solid', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + } + }, + fill: { + type: 'gradient', + gradient: { + inverseColors: false, + shade: 'light', + type: 'vertical', + opacityFrom: 0.65, + opacityTo: 0.5, + stops: [0, 100, 100] + } + }, + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + tooltip: { + followCursor: false + } + } + } + + brush(defaults) { + const ret = { + chart: { + toolbar: { + autoSelected: 'selection', + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 1 + }, + tooltip: { + enabled: false + }, + xaxis: { + tooltip: { + enabled: false + } + } + } + + return Utils.extend(defaults, ret) + } + + stacked100(opts) { + opts.dataLabels = opts.dataLabels || {} + opts.dataLabels.formatter = opts.dataLabels.formatter || undefined + const existingDataLabelFormatter = opts.dataLabels.formatter + + opts.yaxis.forEach((yaxe, index) => { + opts.yaxis[index].min = 0 + opts.yaxis[index].max = 100 + }) + + const isBar = opts.chart.type === 'bar' + + if (isBar) { + opts.dataLabels.formatter = + existingDataLabelFormatter || + function(val) { + if (typeof val === 'number') { + return val ? val.toFixed(0) + '%' : val + } + return val + } + } + return opts + } + + // This function removes the left and right spacing in chart for line/area/scatter if xaxis type = category for those charts by converting xaxis = numeric. Numeric/Datetime xaxis prevents the unnecessary spacing in the left/right of the chart area + convertCatToNumeric(opts) { + opts.xaxis.convertedCatToNumeric = true + + return opts + } + + convertCatToNumericXaxis(opts, ctx, cats) { + opts.xaxis.type = 'numeric' + opts.xaxis.labels = opts.xaxis.labels || {} + opts.xaxis.labels.formatter = + opts.xaxis.labels.formatter || + function(val) { + return Utils.isNumber(val) ? Math.floor(val) : val + } + + const defaultFormatter = opts.xaxis.labels.formatter + let labels = + opts.xaxis.categories && opts.xaxis.categories.length + ? opts.xaxis.categories + : opts.labels + + if (cats && cats.length) { + labels = cats.map((c) => { + return Array.isArray(c) ? c : String(c) + }) + } + + if (labels && labels.length) { + opts.xaxis.labels.formatter = function(val) { + return Utils.isNumber(val) + ? defaultFormatter(labels[Math.floor(val) - 1]) + : defaultFormatter(val) + } + } + + opts.xaxis.categories = [] + opts.labels = [] + opts.xaxis.tickAmount = opts.xaxis.tickAmount || 'dataPoints' + return opts + } + + bubble() { + return { + dataLabels: { + style: { + colors: ['#fff'] + } + }, + tooltip: { + shared: false, + intersect: true + }, + xaxis: { + crosshairs: { + width: 0 + } + }, + fill: { + type: 'solid', + gradient: { + shade: 'light', + inverse: true, + shadeIntensity: 0.55, + opacityFrom: 0.4, + opacityTo: 0.8 + } + } + } + } + + scatter() { + return { + dataLabels: { + enabled: false + }, + tooltip: { + shared: false, + intersect: true + }, + markers: { + size: 6, + strokeWidth: 1, + hover: { + sizeOffset: 2 + } + } + } + } + + heatmap() { + return { + chart: { + stacked: false + }, + fill: { + opacity: 1 + }, + dataLabels: { + style: { + colors: ['#fff'] + } + }, + stroke: { + colors: ['#fff'] + }, + tooltip: { + followCursor: true, + marker: { + show: false + }, + x: { + show: false + } + }, + legend: { + position: 'top', + markers: { + shape: 'square', + size: 10, + offsetY: 2 + } + }, + grid: { + padding: { + right: 20 + } + } + } + } + + treemap() { + return { + chart: { + zoom: { + enabled: false + } + }, + dataLabels: { + style: { + fontSize: 14, + fontWeight: 600, + colors: ['#fff'] + } + }, + stroke: { + show: true, + width: 2, + colors: ['#fff'] + }, + legend: { + show: false + }, + fill: { + gradient: { + stops: [0, 100] + } + }, + tooltip: { + followCursor: true, + x: { + show: false + } + }, + grid: { + padding: { + left: 0, + right: 0 + } + }, + xaxis: { + crosshairs: { + show: false + }, + tooltip: { + enabled: false + } + } + } + } + + pie() { + return { + chart: { + toolbar: { + show: false + } + }, + plotOptions: { + pie: { + donut: { + labels: { + show: false + } + } + } + }, + dataLabels: { + formatter(val) { + return val.toFixed(1) + '%' + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + stops: [0, 100] + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + } + } + + donut() { + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter(val) { + return val.toFixed(1) + '%' + }, + style: { + colors: ['#fff'] + }, + background: { + enabled: false + }, + dropShadow: { + enabled: true + } + }, + stroke: { + colors: ['#fff'] + }, + fill: { + opacity: 1, + gradient: { + shade: 'light', + shadeIntensity: 0.35, + stops: [80, 100], + opacityFrom: 1, + opacityTo: 1 + } + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + } + } + + polarArea() { + this.opts.yaxis[0].tickAmount = this.opts.yaxis[0].tickAmount + ? this.opts.yaxis[0].tickAmount + : 6 + + return { + chart: { + toolbar: { + show: false + } + }, + dataLabels: { + formatter(val) { + return val.toFixed(1) + '%' + }, + enabled: false + }, + stroke: { + show: true, + width: 2 + }, + fill: { + opacity: 0.7 + }, + tooltip: { + theme: 'dark', + fillSeriesColor: true + }, + legend: { + position: 'right' + } + } + } + + radar() { + this.opts.yaxis[0].labels.offsetY = this.opts.yaxis[0].labels.offsetY + ? this.opts.yaxis[0].labels.offsetY + : 6 + + return { + dataLabels: { + enabled: false, + style: { + fontSize: '11px' + } + }, + stroke: { + width: 2 + }, + markers: { + size: 3, + strokeWidth: 1, + strokeOpacity: 1 + }, + fill: { + opacity: 0.2 + }, + tooltip: { + shared: false, + intersect: true, + followCursor: true + }, + grid: { + show: false + }, + xaxis: { + labels: { + formatter: (val) => val, + style: { + colors: ['#a8a8a8'], + fontSize: '11px' + } + }, + tooltip: { + enabled: false + }, + crosshairs: { + show: false + } + } + } + } + + radialBar() { + return { + chart: { + animations: { + dynamicAnimation: { + enabled: true, + speed: 800 + } + }, + toolbar: { + show: false + } + }, + fill: { + gradient: { + shade: 'dark', + shadeIntensity: 0.4, + inverseColors: false, + type: 'diagonal2', + opacityFrom: 1, + opacityTo: 1, + stops: [70, 98, 100] + } + }, + legend: { + show: false, + position: 'right' + }, + tooltip: { + enabled: false, + fillSeriesColor: true + } + } + } + + _getBoxTooltip(w, seriesIndex, dataPointIndex, labels, chartType) { + const o = w.globals.seriesCandleO[seriesIndex][dataPointIndex] + const h = w.globals.seriesCandleH[seriesIndex][dataPointIndex] + const m = w.globals.seriesCandleM[seriesIndex][dataPointIndex] + const l = w.globals.seriesCandleL[seriesIndex][dataPointIndex] + const c = w.globals.seriesCandleC[seriesIndex][dataPointIndex] + + if ( + w.config.series[seriesIndex].type && + w.config.series[seriesIndex].type !== chartType + ) { + return `
    + ${ + w.config.series[seriesIndex].name + ? w.config.series[seriesIndex].name + : 'series-' + (seriesIndex + 1) + }: ${w.globals.series[seriesIndex][dataPointIndex]} +
    ` + } else { + return ( + `
    ` + + `
    ${labels[0]}: ` + + o + + '
    ' + + `
    ${labels[1]}: ` + + h + + '
    ' + + (m + ? `
    ${labels[2]}: ` + m + '
    ' + : '') + + `
    ${labels[3]}: ` + + l + + '
    ' + + `
    ${labels[4]}: ` + + c + + '
    ' + + '
    ' + ) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/settings/Globals.js b/public/assets/libs/apexcharts/src/modules/settings/Globals.js new file mode 100644 index 0000000..9e161e1 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/settings/Globals.js @@ -0,0 +1,226 @@ +import Utils from './../../utils/Utils' + +export default class Globals { + initGlobalVars(gl) { + gl.series = [] // the MAIN series array (y values) + gl.seriesCandleO = [] + gl.seriesCandleH = [] + gl.seriesCandleM = [] + gl.seriesCandleL = [] + gl.seriesCandleC = [] + gl.seriesRangeStart = [] + gl.seriesRangeEnd = [] + gl.seriesRangeBar = [] + gl.seriesPercent = [] + gl.seriesGoals = [] + gl.seriesX = [] + gl.seriesZ = [] + gl.seriesNames = [] + gl.seriesTotals = [] + gl.seriesLog = [] + gl.seriesColors = [] + gl.stackedSeriesTotals = [] + gl.seriesXvalues = [] // we will need this in tooltip (it's x position) + // when we will have unequal x values, we will need + // some way to get x value depending on mouse pointer + gl.seriesYvalues = [] // we will need this when deciding which series + // user hovered on + gl.labels = [] + gl.hasGroups = false + gl.groups = [] + gl.categoryLabels = [] + gl.timescaleLabels = [] + gl.noLabelsProvided = false + gl.resizeTimer = null + gl.selectionResizeTimer = null + gl.delayedElements = [] + gl.pointsArray = [] + gl.dataLabelsRects = [] + gl.isXNumeric = false + gl.xaxisLabelsCount = 0 + gl.skipLastTimelinelabel = false + gl.skipFirstTimelinelabel = false + gl.isDataXYZ = false + gl.isMultiLineX = false + gl.isMultipleYAxis = false + gl.maxY = -Number.MAX_VALUE + gl.minY = Number.MIN_VALUE + gl.minYArr = [] + gl.maxYArr = [] + gl.maxX = -Number.MAX_VALUE + gl.minX = Number.MAX_VALUE + gl.initialMaxX = -Number.MAX_VALUE + gl.initialMinX = Number.MAX_VALUE + gl.maxDate = 0 + gl.minDate = Number.MAX_VALUE + gl.minZ = Number.MAX_VALUE + gl.maxZ = -Number.MAX_VALUE + gl.minXDiff = Number.MAX_VALUE + gl.yAxisScale = [] + gl.xAxisScale = null + gl.xAxisTicksPositions = [] + gl.yLabelsCoords = [] + gl.yTitleCoords = [] + gl.barPadForNumericAxis = 0 + gl.padHorizontal = 0 + gl.xRange = 0 + gl.yRange = [] + gl.zRange = 0 + gl.dataPoints = 0 + gl.xTickAmount = 0 + } + + globalVars(config) { + return { + chartID: null, // chart ID - apexcharts-cuid + cuid: null, // chart ID - random numbers excluding "apexcharts" part + events: { + beforeMount: [], + mounted: [], + updated: [], + clicked: [], + selection: [], + dataPointSelection: [], + zoomed: [], + scrolled: [] + }, + colors: [], + clientX: null, + clientY: null, + fill: { + colors: [] + }, + stroke: { + colors: [] + }, + dataLabels: { + style: { + colors: [] + } + }, + radarPolygons: { + fill: { + colors: [] + } + }, + markers: { + colors: [], + size: config.markers.size, + largestSize: 0 + }, + animationEnded: false, + isTouchDevice: 'ontouchstart' in window || navigator.msMaxTouchPoints, + isDirty: false, // chart has been updated after the initial render. This is different than dataChanged property. isDirty means user manually called some method to update + isExecCalled: false, // whether user updated the chart through the exec method + initialConfig: null, // we will store the first config user has set to go back when user finishes interactions like zooming and come out of it + initialSeries: [], + lastXAxis: [], + lastYAxis: [], + columnSeries: null, + labels: [], // store the text to draw on x axis + // Don't mutate the labels, many things including tooltips depends on it! + timescaleLabels: [], // store the timescaleLabels Labels in another variable + noLabelsProvided: false, // if user didn't provide any categories/labels or x values, fallback to 1,2,3,4... + allSeriesCollapsed: false, + collapsedSeries: [], // when user collapses a series, it goes into this array + collapsedSeriesIndices: [], // this stores the index of the collapsedSeries instead of whole object for quick access + ancillaryCollapsedSeries: [], // when user collapses an "alwaysVisible" series, it goes into this array + ancillaryCollapsedSeriesIndices: [], // this stores the index of the ancillaryCollapsedSeries whose y-axis is always visible + risingSeries: [], // when user re-opens a collapsed series, it goes here + dataFormatXNumeric: false, // boolean value to indicate user has passed numeric x values + capturedSeriesIndex: -1, + capturedDataPointIndex: -1, + selectedDataPoints: [], + goldenPadding: 35, // this value is used at a lot of places for spacing purpose + invalidLogScale: false, // if a user enabled log scale but the data provided is not valid to generate a log scale, turn on this flag + ignoreYAxisIndexes: [], // when series are being collapsed in multiple y axes, ignore certain index + yAxisSameScaleIndices: [], + maxValsInArrayIndex: 0, + radialSize: 0, + selection: undefined, + zoomEnabled: + config.chart.toolbar.autoSelected === 'zoom' && + config.chart.toolbar.tools.zoom && + config.chart.zoom.enabled, + panEnabled: + config.chart.toolbar.autoSelected === 'pan' && + config.chart.toolbar.tools.pan, + selectionEnabled: + config.chart.toolbar.autoSelected === 'selection' && + config.chart.toolbar.tools.selection, + yaxis: null, + mousedown: false, + lastClientPosition: {}, // don't reset this variable this the chart is destroyed. It is used to detect right or left mousemove in panning + visibleXRange: undefined, + yValueDecimal: 0, // are there floating numbers in the series. If yes, this represent the len of the decimals + total: 0, + SVGNS: 'http://www.w3.org/2000/svg', // svg namespace + svgWidth: 0, // the whole svg width + svgHeight: 0, // the whole svg height + noData: false, // whether there is any data to display or not + locale: {}, // the current locale values will be preserved here for global access + dom: {}, // for storing all dom nodes in this particular property + memory: { + methodsToExec: [] + }, + shouldAnimate: true, + skipLastTimelinelabel: false, // when last label is cropped, skip drawing it + skipFirstTimelinelabel: false, // when first label is cropped, skip drawing it + delayedElements: [], // element which appear after animation has finished + axisCharts: true, // chart type = line or area or bar + // (refer them also as plot charts in the code) + isDataXYZ: false, // bool: data was provided in a {[x,y,z]} pattern + resized: false, // bool: user has resized + resizeTimer: null, // timeout function to make a small delay before + // drawing when user resized + comboCharts: false, // bool: whether it's a combination of line/column + dataChanged: false, // bool: has data changed dynamically + previousPaths: [], // array: when data is changed, it will animate from + // previous paths + allSeriesHasEqualX: true, + pointsArray: [], // store the points positions here to draw later on hover + // format is - [[x,y],[x,y]... [x,y]] + dataLabelsRects: [], // store the positions of datalabels to prevent collision + lastDrawnDataLabelsIndexes: [], + hasNullValues: false, // bool: whether series contains null values + easing: null, // function: animation effect to apply + zoomed: false, // whether user has zoomed or not + gridWidth: 0, // drawable width of actual graphs (series paths) + gridHeight: 0, // drawable height of actual graphs (series paths) + rotateXLabels: false, + defaultLabels: false, + xLabelFormatter: undefined, // formatter for x axis labels + yLabelFormatters: [], + xaxisTooltipFormatter: undefined, // formatter for x axis tooltip + ttKeyFormatter: undefined, + ttVal: undefined, + ttZFormatter: undefined, + LINE_HEIGHT_RATIO: 1.618, + xAxisLabelsHeight: 0, + xAxisGroupLabelsHeight: 0, + xAxisLabelsWidth: 0, + yAxisLabelsWidth: 0, + scaleX: 1, + scaleY: 1, + translateX: 0, + translateY: 0, + translateYAxisX: [], + yAxisWidths: [], + translateXAxisY: 0, + translateXAxisX: 0, + tooltip: null + } + } + + init(config) { + let globals = this.globalVars(config) + this.initGlobalVars(globals) + + globals.initialConfig = Utils.extend({}, config) + globals.initialSeries = Utils.clone(config.series) + + globals.lastXAxis = Utils.clone(globals.initialConfig.xaxis) + globals.lastYAxis = Utils.clone(globals.initialConfig.yaxis) + return globals + } +} diff --git a/public/assets/libs/apexcharts/src/modules/settings/Options.js b/public/assets/libs/apexcharts/src/modules/settings/Options.js new file mode 100644 index 0000000..210b50c --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/settings/Options.js @@ -0,0 +1,1082 @@ +/** + * ApexCharts Options for setting the initial configuration of ApexCharts + **/ +import en from './../../locales/en.json' + +export default class Options { + constructor() { + this.yAxis = { + show: true, + showAlways: false, + showForNullSeries: true, + seriesName: undefined, + opposite: false, + reversed: false, + logarithmic: false, + logBase: 10, + tickAmount: undefined, + forceNiceScale: false, + max: undefined, + min: undefined, + floating: false, + decimalsInFloat: undefined, + labels: { + show: true, + minWidth: 0, + maxWidth: 160, + offsetX: 0, + offsetY: 0, + align: undefined, + rotate: 0, + padding: 20, + style: { + colors: [], + fontSize: '11px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + formatter: undefined + }, + axisBorder: { + show: false, + color: '#e0e0e0', + width: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: false, + color: '#e0e0e0', + width: 6, + offsetX: 0, + offsetY: 0 + }, + title: { + text: undefined, + rotate: -90, + offsetY: 0, + offsetX: 0, + style: { + color: undefined, + fontSize: '11px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + tooltip: { + enabled: false, + offsetX: 0 + }, + crosshairs: { + show: true, + position: 'front', + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 0 + } + } + } + + this.pointAnnotation = { + id: undefined, + x: 0, + y: null, + yAxisIndex: 0, + seriesIndex: 0, + mouseEnter: undefined, + mouseLeave: undefined, + marker: { + size: 4, + fillColor: '#fff', + strokeWidth: 2, + strokeColor: '#333', + shape: 'circle', + offsetX: 0, + offsetY: 0, + radius: 2, + cssClass: '' + }, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + }, + customSVG: { + // this will be deprecated in the next major version as it is going to be replaced with a better alternative below + SVG: undefined, + cssClass: undefined, + offsetX: 0, + offsetY: 0 + }, + image: { + path: undefined, + width: 20, + height: 20, + offsetX: 0, + offsetY: 0 + } + } + + this.yAxisAnnotation = { + id: undefined, + y: 0, + y2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + width: '100%', + yAxisIndex: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'end', + position: 'right', + offsetX: 0, + offsetY: -3, + mouseEnter: undefined, + mouseLeave: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + } + + this.xAxisAnnotation = { + id: undefined, + x: 0, + x2: null, + strokeDashArray: 1, + fillColor: '#c2c2c2', + borderColor: '#c2c2c2', + borderWidth: 1, + opacity: 0.3, + offsetX: 0, + offsetY: 0, + label: { + borderColor: '#c2c2c2', + borderWidth: 1, + borderRadius: 2, + text: undefined, + textAnchor: 'middle', + orientation: 'vertical', + position: 'top', + offsetX: 0, + offsetY: 0, + mouseEnter: undefined, + mouseLeave: undefined, + style: { + background: '#fff', + color: undefined, + fontSize: '11px', + fontFamily: undefined, + fontWeight: 400, + cssClass: '', + padding: { + left: 5, + right: 5, + top: 2, + bottom: 2 + } + } + } + } + + this.text = { + x: 0, + y: 0, + text: '', + textAnchor: 'start', + foreColor: undefined, + fontSize: '13px', + fontFamily: undefined, + fontWeight: 400, + appendTo: '.apexcharts-annotations', + backgroundColor: 'transparent', + borderColor: '#c2c2c2', + borderRadius: 0, + borderWidth: 0, + paddingLeft: 4, + paddingRight: 4, + paddingTop: 2, + paddingBottom: 2 + } + } + init() { + return { + annotations: { + position: 'front', + yaxis: [this.yAxisAnnotation], + xaxis: [this.xAxisAnnotation], + points: [this.pointAnnotation], + texts: [], + images: [], + shapes: [] + }, + chart: { + animations: { + enabled: true, + easing: 'easeinout', // linear, easeout, easein, easeinout, swing, bounce, elastic + speed: 800, + animateGradually: { + delay: 150, + enabled: true + }, + dynamicAnimation: { + enabled: true, + speed: 350 + } + }, + background: 'transparent', + locales: [en], + defaultLocale: 'en', + dropShadow: { + enabled: false, + enabledOnSeries: undefined, + top: 2, + left: 2, + blur: 4, + color: '#000', + opacity: 0.35 + }, + events: { + animationEnd: undefined, + beforeMount: undefined, + mounted: undefined, + updated: undefined, + click: undefined, + mouseMove: undefined, + mouseLeave: undefined, + legendClick: undefined, + markerClick: undefined, + selection: undefined, + dataPointSelection: undefined, + dataPointMouseEnter: undefined, + dataPointMouseLeave: undefined, + beforeZoom: undefined, + beforeResetZoom: undefined, + zoomed: undefined, + scrolled: undefined, + brushScrolled: undefined + }, + foreColor: '#373d3f', + fontFamily: 'Helvetica, Arial, sans-serif', + height: 'auto', + parentHeightOffset: 15, + redrawOnParentResize: true, + redrawOnWindowResize: true, + id: undefined, + group: undefined, + offsetX: 0, + offsetY: 0, + selection: { + enabled: false, + type: 'x', + // selectedPoints: undefined, // default datapoints that should be selected automatically + fill: { + color: '#24292e', + opacity: 0.1 + }, + stroke: { + width: 1, + color: '#24292e', + opacity: 0.4, + dashArray: 3 + }, + xaxis: { + min: undefined, + max: undefined + }, + yaxis: { + min: undefined, + max: undefined + } + }, + sparkline: { + enabled: false + }, + brush: { + enabled: false, + autoScaleYaxis: true, + target: undefined + }, + stacked: false, + stackType: 'normal', + toolbar: { + show: true, + offsetX: 0, + offsetY: 0, + tools: { + download: true, + selection: true, + zoom: true, + zoomin: true, + zoomout: true, + pan: true, + reset: true, + customIcons: [] + }, + export: { + csv: { + filename: undefined, + columnDelimiter: ',', + headerCategory: 'category', + headerValue: 'value', + dateFormatter(timestamp) { + return new Date(timestamp).toDateString() + } + }, + png: { + filename: undefined + }, + svg: { + filename: undefined + } + }, + autoSelected: 'zoom' // accepts -> zoom, pan, selection + }, + type: 'line', + width: '100%', + zoom: { + enabled: true, + type: 'x', + autoScaleYaxis: false, + zoomedArea: { + fill: { + color: '#90CAF9', + opacity: 0.4 + }, + stroke: { + color: '#0D47A1', + opacity: 0.4, + width: 1 + } + } + } + }, + plotOptions: { + area: { + fillTo: 'origin' + }, + bar: { + horizontal: false, + columnWidth: '70%', // should be in percent 0 - 100 + barHeight: '70%', // should be in percent 0 - 100 + distributed: false, + borderRadius: 0, + rangeBarOverlap: true, + rangeBarGroupRows: false, + colors: { + ranges: [], + backgroundBarColors: [], + backgroundBarOpacity: 1, + backgroundBarRadius: 0 + }, + dataLabels: { + position: 'top', // top, center, bottom + maxItems: 100, + hideOverflowingLabels: true, + orientation: 'horizontal' + // TODO: provide stackedLabels for stacked charts which gives additions of values + } + }, + bubble: { + minBubbleRadius: undefined, + maxBubbleRadius: undefined + }, + candlestick: { + colors: { + upward: '#00B746', + downward: '#EF403C' + }, + wick: { + useFillColor: true + } + }, + boxPlot: { + colors: { + upper: '#00E396', + lower: '#008FFB' + } + }, + heatmap: { + radius: 2, + enableShades: true, + shadeIntensity: 0.5, + reverseNegativeShade: false, + distributed: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + treemap: { + enableShades: true, + shadeIntensity: 0.5, + distributed: false, + reverseNegativeShade: false, + useFillColorAsStroke: false, + colorScale: { + inverse: false, + ranges: [], + min: undefined, + max: undefined + } + }, + radialBar: { + inverseOrder: false, + startAngle: 0, + endAngle: 360, + offsetX: 0, + offsetY: 0, + hollow: { + margin: 5, + size: '50%', + background: 'transparent', + image: undefined, + imageWidth: 150, + imageHeight: 150, + imageOffsetX: 0, + imageOffsetY: 0, + imageClipped: true, + position: 'front', + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + track: { + show: true, + startAngle: undefined, + endAngle: undefined, + background: '#f2f2f2', + strokeWidth: '97%', + opacity: 1, + margin: 5, // margin is in pixels + dropShadow: { + enabled: false, + top: 0, + left: 0, + blur: 3, + color: '#000', + opacity: 0.5 + } + }, + dataLabels: { + show: true, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: 0, + formatter(val) { + return val + } + }, + value: { + show: true, + fontSize: '14px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 16, + formatter(val) { + return val + '%' + } + }, + total: { + show: false, + label: 'Total', + fontSize: '16px', + fontWeight: 600, + fontFamily: undefined, + color: undefined, + formatter(w) { + return ( + w.globals.seriesTotals.reduce((a, b) => a + b, 0) / + w.globals.series.length + + '%' + ) + } + } + } + }, + pie: { + customScale: 1, + offsetX: 0, + offsetY: 0, + startAngle: 0, + endAngle: 360, + expandOnClick: true, + dataLabels: { + // These are the percentage values which are displayed on slice + offset: 0, // offset by which labels will move outside + minAngleToShowLabel: 10 + }, + donut: { + size: '65%', + background: 'transparent', + labels: { + // These are the inner labels appearing inside donut + show: false, + name: { + show: true, + fontSize: '16px', + fontFamily: undefined, + fontWeight: 600, + color: undefined, + offsetY: -10, + formatter(val) { + return val + } + }, + value: { + show: true, + fontSize: '20px', + fontFamily: undefined, + fontWeight: 400, + color: undefined, + offsetY: 10, + formatter(val) { + return val + } + }, + total: { + show: false, + showAlways: false, + label: 'Total', + fontSize: '16px', + fontWeight: 400, + fontFamily: undefined, + color: undefined, + formatter(w) { + return w.globals.seriesTotals.reduce((a, b) => a + b, 0) + } + } + } + } + }, + polarArea: { + rings: { + strokeWidth: 1, + strokeColor: '#e8e8e8' + }, + spokes: { + strokeWidth: 1, + connectorColors: '#e8e8e8' + } + }, + radar: { + size: undefined, + offsetX: 0, + offsetY: 0, + polygons: { + // strokeColor: '#e8e8e8', // should be deprecated in the minor version i.e 3.2 + strokeWidth: 1, + strokeColors: '#e8e8e8', + connectorColors: '#e8e8e8', + fill: { + colors: undefined + } + } + } + }, + colors: undefined, + dataLabels: { + enabled: true, + enabledOnSeries: undefined, + formatter(val) { + return val !== null ? val : '' + }, + textAnchor: 'middle', + distributed: false, + offsetX: 0, + offsetY: 0, + style: { + fontSize: '12px', + fontFamily: undefined, + fontWeight: 600, + colors: undefined + }, + background: { + enabled: true, + foreColor: '#fff', + borderRadius: 2, + padding: 4, + opacity: 0.9, + borderWidth: 1, + borderColor: '#fff', + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + dropShadow: { + enabled: false, + top: 1, + left: 1, + blur: 1, + color: '#000', + opacity: 0.45 + } + }, + fill: { + type: 'solid', + colors: undefined, // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + }, + image: { + src: [], + width: undefined, // optional + height: undefined // optional + }, + pattern: { + style: 'squares', // String | Array of Strings + width: 6, + height: 6, + strokeWidth: 2 + } + }, + forecastDataPoints: { + count: 0, + fillOpacity: 0.5, + strokeWidth: undefined, + dashArray: 4 + }, + grid: { + show: true, + borderColor: '#e0e0e0', + strokeDashArray: 0, + position: 'back', + xaxis: { + lines: { + show: false + } + }, + yaxis: { + lines: { + show: true + } + }, + row: { + colors: undefined, // takes as array which will be repeated on rows + opacity: 0.5 + }, + column: { + colors: undefined, // takes an array which will be repeated on columns + opacity: 0.5 + }, + padding: { + top: 0, + right: 10, + bottom: 0, + left: 12 + } + }, + labels: [], + legend: { + show: true, + showForSingleSeries: false, + showForNullSeries: true, + showForZeroSeries: true, + floating: false, + position: 'bottom', // whether to position legends in 1 of 4 + // direction - top, bottom, left, right + horizontalAlign: 'center', // when position top/bottom, you can specify whether to align legends left, right or center + inverseOrder: false, + fontSize: '12px', + fontFamily: undefined, + fontWeight: 400, + width: undefined, + height: undefined, + formatter: undefined, + tooltipHoverFormatter: undefined, + offsetX: -20, + offsetY: 4, + customLegendItems: [], + labels: { + colors: undefined, + useSeriesColors: false + }, + markers: { + width: 12, + height: 12, + strokeWidth: 0, + fillColors: undefined, + strokeColor: '#fff', + radius: 12, + customHTML: undefined, + offsetX: 0, + offsetY: 0, + onClick: undefined + }, + itemMargin: { + horizontal: 5, + vertical: 2 + }, + onItemClick: { + toggleDataSeries: true + }, + onItemHover: { + highlightDataSeries: true + } + }, + markers: { + discrete: [], + size: 0, + colors: undefined, + //strokeColor: '#fff', // TODO: deprecate in major version 4.0 + strokeColors: '#fff', + strokeWidth: 2, + strokeOpacity: 0.9, + strokeDashArray: 0, + fillOpacity: 1, + shape: 'circle', + width: 8, // only applicable when shape is rect/square + height: 8, // only applicable when shape is rect/square + radius: 2, + offsetX: 0, + offsetY: 0, + onClick: undefined, + onDblClick: undefined, + showNullDataPoints: true, + hover: { + size: undefined, + sizeOffset: 3 + } + }, + noData: { + text: undefined, + align: 'center', + verticalAlign: 'middle', + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '14px', + fontFamily: undefined + } + }, + responsive: [], // breakpoints should follow ascending order 400, then 700, then 1000 + series: undefined, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'lighten', + value: 0.1 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'darken', + value: 0.5 + } + } + }, + title: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 0, + floating: false, + style: { + fontSize: '14px', + fontWeight: 900, + fontFamily: undefined, + color: undefined + } + }, + subtitle: { + text: undefined, + align: 'left', + margin: 5, + offsetX: 0, + offsetY: 30, + floating: false, + style: { + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + color: undefined + } + }, + stroke: { + show: true, + curve: 'smooth', // "smooth" / "straight" / "stepline" + lineCap: 'butt', // round, butt , square + width: 2, + colors: undefined, // array of colors + dashArray: 0, // single value or array of values + fill: { + type: 'solid', + colors: undefined, // array of colors + opacity: 0.85, + gradient: { + shade: 'dark', + type: 'horizontal', + shadeIntensity: 0.5, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [0, 50, 100], + colorStops: [] + } + } + }, + tooltip: { + enabled: true, + enabledOnSeries: undefined, + shared: true, + followCursor: false, // when disabled, the tooltip will show on top of the series instead of mouse position + intersect: false, // when enabled, tooltip will only show when user directly hovers over point + inverseOrder: false, + custom: undefined, + fillSeriesColor: false, + theme: 'light', + cssClass: '', + style: { + fontSize: '12px', + fontFamily: undefined + }, + onDatasetHover: { + highlightDataSeries: false + }, + x: { + // x value + show: true, + format: 'dd MMM', // dd/MM, dd MMM yy, dd MMM yyyy + formatter: undefined // a custom user supplied formatter function + }, + y: { + formatter: undefined, + title: { + formatter(seriesName) { + return seriesName ? seriesName + ': ' : '' + } + } + }, + z: { + formatter: undefined, + title: 'Size: ' + }, + marker: { + show: true, + fillColors: undefined + }, + items: { + display: 'flex' + }, + fixed: { + enabled: false, + position: 'topRight', // topRight, topLeft, bottomRight, bottomLeft + offsetX: 0, + offsetY: 0 + } + }, + xaxis: { + type: 'category', + categories: [], + convertedCatToNumeric: false, // internal property which should not be altered outside + offsetX: 0, + offsetY: 0, + overwriteCategories: undefined, + labels: { + show: true, + rotate: -45, + rotateAlways: false, + hideOverlappingLabels: true, + trim: false, + minHeight: undefined, + maxHeight: 120, + showDuplicates: true, + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + }, + offsetX: 0, + offsetY: 0, + format: undefined, + formatter: undefined, // custom formatter function which will override format + datetimeUTC: true, + datetimeFormatter: { + year: 'yyyy', + month: "MMM 'yy", + day: 'dd MMM', + hour: 'HH:mm', + minute: 'HH:mm:ss', + second: 'HH:mm:ss' + } + }, + group: { + groups: [], + style: { + colors: [], + fontSize: '12px', + fontWeight: 400, + fontFamily: undefined, + cssClass: '' + } + }, + axisBorder: { + show: true, + color: '#e0e0e0', + width: '100%', + height: 1, + offsetX: 0, + offsetY: 0 + }, + axisTicks: { + show: true, + color: '#e0e0e0', + height: 6, + offsetX: 0, + offsetY: 0 + }, + tickAmount: undefined, + tickPlacement: 'on', + min: undefined, + max: undefined, + range: undefined, + floating: false, + decimalsInFloat: undefined, + position: 'bottom', + title: { + text: undefined, + offsetX: 0, + offsetY: 0, + style: { + color: undefined, + fontSize: '12px', + fontWeight: 900, + fontFamily: undefined, + cssClass: '' + } + }, + crosshairs: { + show: true, + width: 1, // tickWidth/barWidth or an integer + position: 'back', + opacity: 0.9, + stroke: { + color: '#b6b6b6', + width: 1, + dashArray: 3 + }, + fill: { + type: 'solid', // solid, gradient + color: '#B1B9C4', + gradient: { + colorFrom: '#D8E3F0', + colorTo: '#BED1E6', + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5 + } + }, + dropShadow: { + enabled: false, + left: 0, + top: 0, + blur: 1, + opacity: 0.4 + } + }, + tooltip: { + enabled: true, + offsetY: 0, + formatter: undefined, + style: { + fontSize: '12px', + fontFamily: undefined + } + } + }, + yaxis: this.yAxis, + theme: { + mode: 'light', + palette: 'palette1', // If defined, it will overwrite globals.colors variable + monochrome: { + // monochrome allows you to select just 1 color and fill out the rest with light/dark shade (intensity can be selected) + enabled: false, + color: '#008FFB', + shadeTo: 'light', + shadeIntensity: 0.65 + } + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/AxesTooltip.js b/public/assets/libs/apexcharts/src/modules/tooltip/AxesTooltip.js new file mode 100644 index 0000000..320e7d4 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/AxesTooltip.js @@ -0,0 +1,193 @@ +/** + * ApexCharts Tooltip.AxesTooltip Class. + * This file deals with the x-axis and y-axis tooltips. + * + * @module Tooltip.AxesTooltip + **/ + +class AxesTooltip { + constructor(tooltipContext) { + this.w = tooltipContext.w + this.ttCtx = tooltipContext + } + + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + drawXaxisTooltip() { + let w = this.w + const ttCtx = this.ttCtx + + const isBottom = w.config.xaxis.position === 'bottom' + + ttCtx.xaxisOffY = isBottom + ? w.globals.gridHeight + 1 + : -w.globals.xAxisHeight - w.config.xaxis.axisTicks.height + 3 + const tooltipCssClass = isBottom + ? 'apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom' + : 'apexcharts-xaxistooltip apexcharts-xaxistooltip-top' + + let renderTo = w.globals.dom.elWrap + + if (ttCtx.isXAxisTooltipEnabled) { + let xaxisTooltip = w.globals.dom.baseEl.querySelector( + '.apexcharts-xaxistooltip' + ) + + if (xaxisTooltip === null) { + ttCtx.xaxisTooltip = document.createElement('div') + ttCtx.xaxisTooltip.setAttribute( + 'class', + tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme + ) + + renderTo.appendChild(ttCtx.xaxisTooltip) + + ttCtx.xaxisTooltipText = document.createElement('div') + ttCtx.xaxisTooltipText.classList.add('apexcharts-xaxistooltip-text') + + ttCtx.xaxisTooltipText.style.fontFamily = + w.config.xaxis.tooltip.style.fontFamily || w.config.chart.fontFamily + ttCtx.xaxisTooltipText.style.fontSize = + w.config.xaxis.tooltip.style.fontSize + + ttCtx.xaxisTooltip.appendChild(ttCtx.xaxisTooltipText) + } + } + } + + /** + * This method adds the secondary tooltip which appears below x axis + * @memberof Tooltip + **/ + drawYaxisTooltip() { + let w = this.w + const ttCtx = this.ttCtx + + for (let i = 0; i < w.config.yaxis.length; i++) { + const isRight = + w.config.yaxis[i].opposite || w.config.yaxis[i].crosshairs.opposite + + ttCtx.yaxisOffX = isRight ? w.globals.gridWidth + 1 : 1 + let tooltipCssClass = isRight + ? `apexcharts-yaxistooltip apexcharts-yaxistooltip-${i} apexcharts-yaxistooltip-right` + : `apexcharts-yaxistooltip apexcharts-yaxistooltip-${i} apexcharts-yaxistooltip-left` + + w.globals.yAxisSameScaleIndices.map((samescales, ssi) => { + samescales.map((s, si) => { + if (si === i) { + tooltipCssClass += w.config.yaxis[si].show + ? ` ` + : ` apexcharts-yaxistooltip-hidden` + } + }) + }) + + let renderTo = w.globals.dom.elWrap + + let yaxisTooltip = w.globals.dom.baseEl.querySelector( + `.apexcharts-yaxistooltip apexcharts-yaxistooltip-${i}` + ) + + if (yaxisTooltip === null) { + ttCtx.yaxisTooltip = document.createElement('div') + ttCtx.yaxisTooltip.setAttribute( + 'class', + tooltipCssClass + ' apexcharts-theme-' + w.config.tooltip.theme + ) + + renderTo.appendChild(ttCtx.yaxisTooltip) + + if (i === 0) ttCtx.yaxisTooltipText = [] + + ttCtx.yaxisTooltipText[i] = document.createElement('div') + ttCtx.yaxisTooltipText[i].classList.add('apexcharts-yaxistooltip-text') + + ttCtx.yaxisTooltip.appendChild(ttCtx.yaxisTooltipText[i]) + } + } + } + + /** + * @memberof Tooltip + **/ + setXCrosshairWidth() { + let w = this.w + const ttCtx = this.ttCtx + + // set xcrosshairs width + const xcrosshairs = ttCtx.getElXCrosshairs() + ttCtx.xcrosshairsWidth = parseInt(w.config.xaxis.crosshairs.width, 10) + + if (!w.globals.comboCharts) { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + let count = w.globals.labels.length + ttCtx.xcrosshairsWidth = w.globals.gridWidth / count + } else if (w.config.xaxis.crosshairs.width === 'barWidth') { + let bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area') + if (bar !== null) { + let barWidth = parseFloat(bar.getAttribute('barWidth')) + ttCtx.xcrosshairsWidth = barWidth + } else { + ttCtx.xcrosshairsWidth = 1 + } + } + } else { + let bar = w.globals.dom.baseEl.querySelector('.apexcharts-bar-area') + if (bar !== null && w.config.xaxis.crosshairs.width === 'barWidth') { + let barWidth = parseFloat(bar.getAttribute('barWidth')) + ttCtx.xcrosshairsWidth = barWidth + } else { + if (w.config.xaxis.crosshairs.width === 'tickWidth') { + let count = w.globals.labels.length + ttCtx.xcrosshairsWidth = w.globals.gridWidth / count + } + } + } + + if (w.globals.isBarHorizontal) { + ttCtx.xcrosshairsWidth = 0 + } + if (xcrosshairs !== null && ttCtx.xcrosshairsWidth > 0) { + xcrosshairs.setAttribute('width', ttCtx.xcrosshairsWidth) + } + } + + handleYCrosshair() { + let w = this.w + const ttCtx = this.ttCtx + + // set ycrosshairs height + ttCtx.ycrosshairs = w.globals.dom.baseEl.querySelector( + '.apexcharts-ycrosshairs' + ) + + ttCtx.ycrosshairsHidden = w.globals.dom.baseEl.querySelector( + '.apexcharts-ycrosshairs-hidden' + ) + } + + drawYaxisTooltipText(index, clientY, xyRatios) { + const ttCtx = this.ttCtx + const w = this.w + + let lbFormatter = w.globals.yLabelFormatters[index] + + if (ttCtx.yaxisTooltips[index]) { + const elGrid = ttCtx.getElGrid() + const seriesBound = elGrid.getBoundingClientRect() + + const hoverY = (clientY - seriesBound.top) * xyRatios.yRatio[index] + const height = w.globals.maxYArr[index] - w.globals.minYArr[index] + + const val = w.globals.minYArr[index] + (height - hoverY) + + ttCtx.tooltipPosition.moveYCrosshairs(clientY - seriesBound.top) + ttCtx.yaxisTooltipText[index].innerHTML = lbFormatter(val) + ttCtx.tooltipPosition.moveYAxisTooltip(index) + } + } +} + +export default AxesTooltip diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Intersect.js b/public/assets/libs/apexcharts/src/modules/tooltip/Intersect.js new file mode 100644 index 0000000..e3a33b8 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Intersect.js @@ -0,0 +1,369 @@ +import Utils from '../../utils/Utils' + +/** + * ApexCharts Tooltip.Intersect Class. + * This file deals with functions related to intersecting tooltips + * (tooltips that appear when user hovers directly over a data-point whether) + * + * @module Tooltip.Intersect + **/ + +class Intersect { + constructor(tooltipContext) { + this.w = tooltipContext.w + this.ttCtx = tooltipContext + } + + // a helper function to get an element's attribute value + getAttr(e, attr) { + return parseFloat(e.target.getAttribute(attr)) + } + + // handle tooltip for heatmaps and treemaps + handleHeatTreeTooltip({ e, opt, x, y, type }) { + const ttCtx = this.ttCtx + const w = this.w + + if (e.target.classList.contains(`apexcharts-${type}-rect`)) { + let i = this.getAttr(e, 'i') + let j = this.getAttr(e, 'j') + let cx = this.getAttr(e, 'cx') + let cy = this.getAttr(e, 'cy') + let width = this.getAttr(e, 'width') + let height = this.getAttr(e, 'height') + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i, + j, + shared: false, + e + }) + + w.globals.capturedSeriesIndex = i + w.globals.capturedDataPointIndex = j + + x = cx + ttCtx.tooltipRect.ttWidth / 2 + width + y = cy + ttCtx.tooltipRect.ttHeight / 2 - height / 2 + + ttCtx.tooltipPosition.moveXCrosshairs(cx + width / 2) + + if (x > w.globals.gridWidth / 2) { + x = cx - ttCtx.tooltipRect.ttWidth / 2 + width + } + if (ttCtx.w.config.tooltip.followCursor) { + let seriesBound = w.globals.dom.elWrap.getBoundingClientRect() + x = + w.globals.clientX - + seriesBound.left - + (x > w.globals.gridWidth / 2 ? ttCtx.tooltipRect.ttWidth : 0) + y = + w.globals.clientY - + seriesBound.top - + (y > w.globals.gridHeight / 2 ? ttCtx.tooltipRect.ttHeight : 0) + } + } + + return { + x, + y + } + } + + /** + * handle tooltips for line/area/scatter charts where tooltip.intersect is true + * when user hovers over the marker directly, this function is executed + */ + handleMarkerTooltip({ e, opt, x, y }) { + let w = this.w + const ttCtx = this.ttCtx + + let i + let j + if (e.target.classList.contains('apexcharts-marker')) { + let cx = parseInt(opt.paths.getAttribute('cx'), 10) + let cy = parseInt(opt.paths.getAttribute('cy'), 10) + let val = parseFloat(opt.paths.getAttribute('val')) + + j = parseInt(opt.paths.getAttribute('rel'), 10) + i = + parseInt( + opt.paths.parentNode.parentNode.parentNode.getAttribute('rel'), + 10 + ) - 1 + + if (ttCtx.intersect) { + const el = Utils.findAncestor(opt.paths, 'apexcharts-series') + if (el) { + i = parseInt(el.getAttribute('data:realIndex'), 10) + } + } + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i, + j, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e + }) + + if (e.type === 'mouseup') { + ttCtx.markerClick(e, i, j) + } + + w.globals.capturedSeriesIndex = i + w.globals.capturedDataPointIndex = j + + x = cx + y = cy + w.globals.translateY - ttCtx.tooltipRect.ttHeight * 1.4 + + if (ttCtx.w.config.tooltip.followCursor) { + const elGrid = ttCtx.getElGrid() + const seriesBound = elGrid.getBoundingClientRect() + y = ttCtx.e.clientY + w.globals.translateY - seriesBound.top + } + + if (val < 0) { + y = cy + } + ttCtx.marker.enlargeCurrentPoint(j, opt.paths, x, y) + } + + return { + x, + y + } + } + + /** + * handle tooltips for bar/column charts + */ + handleBarTooltip({ e, opt }) { + const w = this.w + const ttCtx = this.ttCtx + + const tooltipEl = ttCtx.getElTooltip() + + let bx = 0 + let x = 0 + let y = 0 + let i = 0 + let strokeWidth + let barXY = this.getBarTooltipXY({ + e, + opt + }) + i = barXY.i + let barHeight = barXY.barHeight + let j = barXY.j + + w.globals.capturedSeriesIndex = i + w.globals.capturedDataPointIndex = j + + if ( + (w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars()) || + !w.config.tooltip.shared + ) { + x = barXY.x + y = barXY.y + strokeWidth = Array.isArray(w.config.stroke.width) + ? w.config.stroke.width[i] + : w.config.stroke.width + bx = x + } else { + if (!w.globals.comboCharts && !w.config.tooltip.shared) { + // todo: re-check this condition as it's always 0 + bx = bx / 2 + } + } + + // y is NaN, make it touch the bottom of grid area + if (isNaN(y)) { + y = w.globals.svgHeight - ttCtx.tooltipRect.ttHeight + } else if (y < 0) { + y = 0 + } + + const seriesIndex = parseInt( + opt.paths.parentNode.getAttribute('data:realIndex'), + 10 + ) + + const isReversed = w.globals.isMultipleYAxis + ? w.config.yaxis[seriesIndex] && w.config.yaxis[seriesIndex].reversed + : w.config.yaxis[0].reversed + + if (x + ttCtx.tooltipRect.ttWidth > w.globals.gridWidth && !isReversed) { + x = x - ttCtx.tooltipRect.ttWidth + } else if (x < 0) { + x = 0 + } + + if (ttCtx.w.config.tooltip.followCursor) { + const elGrid = ttCtx.getElGrid() + const seriesBound = elGrid.getBoundingClientRect() + y = ttCtx.e.clientY - seriesBound.top + } + + // if tooltip is still null, querySelector + if (ttCtx.tooltip === null) { + ttCtx.tooltip = w.globals.dom.baseEl.querySelector('.apexcharts-tooltip') + } + + if (!w.config.tooltip.shared) { + if (w.globals.comboBarCount > 0) { + ttCtx.tooltipPosition.moveXCrosshairs(bx + strokeWidth / 2) + } else { + ttCtx.tooltipPosition.moveXCrosshairs(bx) + } + } + + // move tooltip here + if ( + !ttCtx.fixedTooltip && + (!w.config.tooltip.shared || + (w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars())) + ) { + if (isReversed) { + x = x - ttCtx.tooltipRect.ttWidth + if (x < 0) { + x = 0 + } + } + if ( + isReversed && + !(w.globals.isBarHorizontal && ttCtx.tooltipUtil.hasBars()) + ) { + y = y + barHeight - (w.globals.series[i][j] < 0 ? barHeight : 0) * 2 + } + if (ttCtx.tooltipRect.ttHeight + y > w.globals.gridHeight) { + y = + w.globals.gridHeight - + ttCtx.tooltipRect.ttHeight + + w.globals.translateY + } else { + y = y + w.globals.translateY - ttCtx.tooltipRect.ttHeight / 2 + + if (y < 0) { + y = 0 + } + } + + tooltipEl.style.left = x + w.globals.translateX + 'px' + tooltipEl.style.top = y + 'px' + } + } + + getBarTooltipXY({ e, opt }) { + let w = this.w + let j = null + const ttCtx = this.ttCtx + let i = 0 + let x = 0 + let y = 0 + let barWidth = 0 + let barHeight = 0 + + const cl = e.target.classList + + if ( + cl.contains('apexcharts-bar-area') || + cl.contains('apexcharts-candlestick-area') || + cl.contains('apexcharts-boxPlot-area') || + cl.contains('apexcharts-rangebar-area') + ) { + let bar = e.target + let barRect = bar.getBoundingClientRect() + + let seriesBound = opt.elGrid.getBoundingClientRect() + + let bh = barRect.height + barHeight = barRect.height + let bw = barRect.width + + let cx = parseInt(bar.getAttribute('cx'), 10) + let cy = parseInt(bar.getAttribute('cy'), 10) + barWidth = parseFloat(bar.getAttribute('barWidth')) + const clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX + + j = parseInt(bar.getAttribute('j'), 10) + i = parseInt(bar.parentNode.getAttribute('rel'), 10) - 1 + + let y1 = bar.getAttribute('data-range-y1') + let y2 = bar.getAttribute('data-range-y2') + + if (w.globals.comboCharts) { + i = parseInt(bar.parentNode.getAttribute('data:realIndex'), 10) + } + + // if (w.config.tooltip.shared) { + // this check not needed at the moment + // const yDivisor = w.globals.gridHeight / (w.globals.series.length) + // const hoverY = ttCtx.clientY - ttCtx.seriesBound.top + + // j = Math.ceil(hoverY / yDivisor) + // } + + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i, + j, + y1: y1 ? parseInt(y1, 10) : null, + y2: y2 ? parseInt(y2, 10) : null, + shared: ttCtx.showOnIntersect ? false : w.config.tooltip.shared, + e + }) + + if (w.config.tooltip.followCursor) { + if (w.globals.isBarHorizontal) { + x = clientX - seriesBound.left + 15 + y = + cy - + ttCtx.dataPointsDividedHeight + + bh / 2 - + ttCtx.tooltipRect.ttHeight / 2 + } else { + if (w.globals.isXNumeric) { + x = cx - bw / 2 + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2 + } + y = e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 - 15 + } + } else { + if (w.globals.isBarHorizontal) { + x = cx + if (x < ttCtx.xyRatios.baseLineInvertedY) { + x = cx - ttCtx.tooltipRect.ttWidth + } + + y = + cy - + ttCtx.dataPointsDividedHeight + + bh / 2 - + ttCtx.tooltipRect.ttHeight / 2 + } else { + // if columns + if (w.globals.isXNumeric) { + x = cx - bw / 2 + } else { + x = cx - ttCtx.dataPointsDividedWidth + bw / 2 + } + + y = cy // - ttCtx.tooltipRect.ttHeight / 2 + 10 + } + } + } + + return { + x, + y, + barHeight, + barWidth, + i, + j + } + } +} + +export default Intersect diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Labels.js b/public/assets/libs/apexcharts/src/modules/tooltip/Labels.js new file mode 100644 index 0000000..7e05bfe --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Labels.js @@ -0,0 +1,506 @@ +import Formatters from '../Formatters' +import DateTime from '../../utils/DateTime' +import Utils from './Utils' + +/** + * ApexCharts Tooltip.Labels Class to draw texts on the tooltip. + * This file deals with printing actual text on the tooltip. + * + * @module Tooltip.Labels + **/ + +export default class Labels { + constructor(tooltipContext) { + this.w = tooltipContext.w + this.ctx = tooltipContext.ctx + this.ttCtx = tooltipContext + this.tooltipUtil = new Utils(tooltipContext) + } + + drawSeriesTexts({ shared = true, ttItems, i = 0, j = null, y1, y2, e }) { + let w = this.w + + if (w.config.tooltip.custom !== undefined) { + this.handleCustomTooltip({ i, j, y1, y2, w }) + } else { + this.toggleActiveInactiveSeries(shared) + } + + let values = this.getValuesToPrint({ + i, + j + }) + + this.printLabels({ + i, + j, + values, + ttItems, + shared, + e + }) + + // Re-calculate tooltip dimensions now that we have drawn the text + const tooltipEl = this.ttCtx.getElTooltip() + + this.ttCtx.tooltipRect.ttWidth = tooltipEl.getBoundingClientRect().width + this.ttCtx.tooltipRect.ttHeight = tooltipEl.getBoundingClientRect().height + } + + printLabels({ i, j, values, ttItems, shared, e }) { + const w = this.w + let val + let goalVals = [] + const hasGoalValues = (gi) => { + return ( + w.globals.seriesGoals[gi] && + w.globals.seriesGoals[gi][j] && + Array.isArray(w.globals.seriesGoals[gi][j]) + ) + } + + const { xVal, zVal, xAxisTTVal } = values + + let seriesName = '' + + let pColor = w.globals.colors[i] // The pColor here is for the markers inside tooltip + if (j !== null && w.config.plotOptions.bar.distributed) { + pColor = w.globals.colors[j] + } + + for ( + let t = 0, inverset = w.globals.series.length - 1; + t < w.globals.series.length; + t++, inverset-- + ) { + let f = this.getFormatters(i) + seriesName = this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: i, + seriesIndex: i, + j + }) + + if (w.config.chart.type === 'treemap') { + seriesName = f.yLbTitleFormatter(String(w.config.series[i].data[j].x), { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w + }) + } + + const tIndex = w.config.tooltip.inverseOrder ? inverset : t + + if (w.globals.axisCharts) { + const getValBySeriesIndex = (index) => { + return f.yLbFormatter(w.globals.series[index][j], { + series: w.globals.series, + seriesIndex: index, + dataPointIndex: j, + w + }) + } + if (shared) { + f = this.getFormatters(tIndex) + + seriesName = this.getSeriesName({ + fn: f.yLbTitleFormatter, + index: tIndex, + seriesIndex: i, + j + }) + pColor = w.globals.colors[tIndex] + + val = getValBySeriesIndex(tIndex) + if (hasGoalValues(tIndex)) { + goalVals = w.globals.seriesGoals[tIndex][j].map((goal) => { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: tIndex, + dataPointIndex: j, + w + }) + } + }) + } + } else { + // get a color from a hover area (if it's a line pattern then get from a first line) + const targetFill = e?.target?.getAttribute('fill'); + if (targetFill) { + pColor = (targetFill.indexOf("url") !== -1) ? ( + document + .querySelector(targetFill.substr(4).slice(0, -1)) + .childNodes[0] + .getAttribute("stroke") + ) : targetFill; + } + val = getValBySeriesIndex(i) + if (hasGoalValues(i) && Array.isArray(w.globals.seriesGoals[i][j])) { + goalVals = w.globals.seriesGoals[i][j].map((goal) => { + return { + attrs: goal, + val: f.yLbFormatter(goal.value, { + seriesIndex: i, + dataPointIndex: j, + w + }) + } + }) + } + } + } + + // for pie / donuts + if (j === null) { + val = f.yLbFormatter(w.globals.series[i], { + ...w, + seriesIndex: i, + dataPointIndex: i + }) + } + + this.DOMHandling({ + i, + t: tIndex, + j, + ttItems, + values: { + val, + goalVals, + xVal, + xAxisTTVal, + zVal + }, + seriesName, + shared, + pColor + }) + } + } + + getFormatters(i) { + const w = this.w + + let yLbFormatter = w.globals.yLabelFormatters[i] + let yLbTitleFormatter + + if (w.globals.ttVal !== undefined) { + if (Array.isArray(w.globals.ttVal)) { + yLbFormatter = w.globals.ttVal[i] && w.globals.ttVal[i].formatter + yLbTitleFormatter = + w.globals.ttVal[i] && + w.globals.ttVal[i].title && + w.globals.ttVal[i].title.formatter + } else { + yLbFormatter = w.globals.ttVal.formatter + if (typeof w.globals.ttVal.title.formatter === 'function') { + yLbTitleFormatter = w.globals.ttVal.title.formatter + } + } + } else { + yLbTitleFormatter = w.config.tooltip.y.title.formatter + } + + if (typeof yLbFormatter !== 'function') { + if (w.globals.yLabelFormatters[0]) { + yLbFormatter = w.globals.yLabelFormatters[0] + } else { + yLbFormatter = function (label) { + return label + } + } + } + + if (typeof yLbTitleFormatter !== 'function') { + yLbTitleFormatter = function (label) { + return label + } + } + + return { + yLbFormatter, + yLbTitleFormatter + } + } + + getSeriesName({ fn, index, seriesIndex, j }) { + const w = this.w + return fn(String(w.globals.seriesNames[index]), { + series: w.globals.series, + seriesIndex, + dataPointIndex: j, + w + }) + } + + DOMHandling({ i, t, j, ttItems, values, seriesName, shared, pColor }) { + const w = this.w + const ttCtx = this.ttCtx + + const { val, goalVals, xVal, xAxisTTVal, zVal } = values + + let ttItemsChildren = null + ttItemsChildren = ttItems[t].children + + if (w.config.tooltip.fillSeriesColor) { + ttItems[t].style.backgroundColor = pColor + ttItemsChildren[0].style.display = 'none' + } + + if (ttCtx.showTooltipTitle) { + if (ttCtx.tooltipTitle === null) { + // get it once if null, and store it in class property + ttCtx.tooltipTitle = w.globals.dom.baseEl.querySelector( + '.apexcharts-tooltip-title' + ) + } + ttCtx.tooltipTitle.innerHTML = xVal + } + + // if xaxis tooltip is constructed, we need to replace the innerHTML + if (ttCtx.isXAxisTooltipEnabled) { + ttCtx.xaxisTooltipText.innerHTML = xAxisTTVal !== '' ? xAxisTTVal : xVal + } + + const ttYLabel = ttItems[t].querySelector( + '.apexcharts-tooltip-text-y-label' + ) + if (ttYLabel) { + ttYLabel.innerHTML = seriesName ? seriesName : '' + } + const ttYVal = ttItems[t].querySelector('.apexcharts-tooltip-text-y-value') + if (ttYVal) { + ttYVal.innerHTML = typeof val !== 'undefined' ? val : '' + } + + if ( + ttItemsChildren[0] && + ttItemsChildren[0].classList.contains('apexcharts-tooltip-marker') + ) { + if ( + w.config.tooltip.marker.fillColors && + Array.isArray(w.config.tooltip.marker.fillColors) + ) { + pColor = w.config.tooltip.marker.fillColors[t] + } + + ttItemsChildren[0].style.backgroundColor = pColor + } + + if (!w.config.tooltip.marker.show) { + ttItemsChildren[0].style.display = 'none' + } + + const ttGLabel = ttItems[t].querySelector( + '.apexcharts-tooltip-text-goals-label' + ) + const ttGVal = ttItems[t].querySelector( + '.apexcharts-tooltip-text-goals-value' + ) + + if (goalVals.length && w.globals.seriesGoals[t]) { + const createGoalsHtml = () => { + let gLabels = '
    ' + let gVals = '
    ' + goalVals.forEach((goal, gi) => { + gLabels += `
    ${goal.attrs.name}
    ` + gVals += `
    ${goal.val}
    ` + }) + ttGLabel.innerHTML = gLabels + `
    ` + ttGVal.innerHTML = gVals + `
    ` + } + if (shared) { + if ( + w.globals.seriesGoals[t][j] && + Array.isArray(w.globals.seriesGoals[t][j]) + ) { + createGoalsHtml() + } else { + ttGLabel.innerHTML = '' + ttGVal.innerHTML = '' + } + } else { + createGoalsHtml() + } + } else { + ttGLabel.innerHTML = '' + ttGVal.innerHTML = '' + } + + if (zVal !== null) { + const ttZLabel = ttItems[t].querySelector( + '.apexcharts-tooltip-text-z-label' + ) + ttZLabel.innerHTML = w.config.tooltip.z.title + const ttZVal = ttItems[t].querySelector( + '.apexcharts-tooltip-text-z-value' + ) + ttZVal.innerHTML = typeof zVal !== 'undefined' ? zVal : '' + } + + if (shared && ttItemsChildren[0]) { + // hide when no Val or series collapsed + if ( + typeof val === 'undefined' || + val === null || + w.globals.ancillaryCollapsedSeriesIndices.indexOf(t) > -1 || + w.globals.collapsedSeriesIndices.indexOf(t) > -1 + ) { + ttItemsChildren[0].parentNode.style.display = 'none' + } else { + ttItemsChildren[0].parentNode.style.display = + w.config.tooltip.items.display + } + + // TODO: issue #1240 needs to be looked at again. commenting it because this also hides single series values with 0 in it (shared tooltip) + + // if (w.globals.stackedSeriesTotals[j] === 0) { + // // shared tooltip and all values are null, so we need to hide the x value too + // let allYZeroForJ = false + // for (let si = 1; si < w.globals.seriesYvalues.length; si++) { + // if ( + // w.globals.seriesYvalues[si][j] === + // w.globals.seriesYvalues[si - 1][j] + // ) { + // allYZeroForJ = true + // } + // } + + // if (allYZeroForJ) { + // ttCtx.tooltipTitle.style.display = 'none' + // } else { + // ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display + // } + // } else { + // ttCtx.tooltipTitle.style.display = w.config.tooltip.items.display + // } + } + } + + toggleActiveInactiveSeries(shared) { + const w = this.w + if (shared) { + // make all tooltips active + this.tooltipUtil.toggleAllTooltipSeriesGroups('enable') + } else { + // disable all tooltip text groups + this.tooltipUtil.toggleAllTooltipSeriesGroups('disable') + + // enable the first tooltip text group + let firstTooltipSeriesGroup = w.globals.dom.baseEl.querySelector( + '.apexcharts-tooltip-series-group' + ) + + if (firstTooltipSeriesGroup) { + firstTooltipSeriesGroup.classList.add('apexcharts-active') + firstTooltipSeriesGroup.style.display = w.config.tooltip.items.display + } + } + } + + getValuesToPrint({ i, j }) { + const w = this.w + const filteredSeriesX = this.ctx.series.filteredSeriesX() + + let xVal = '' + let xAxisTTVal = '' + let zVal = null + let val = null + + const customFormatterOpts = { + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + w + } + + let zFormatter = w.globals.ttZFormatter + + if (j === null) { + val = w.globals.series[i] + } else { + if (w.globals.isXNumeric && w.config.chart.type !== 'treemap') { + xVal = filteredSeriesX[i][j] + if (filteredSeriesX[i].length === 0) { + // a series (possibly the first one) might be collapsed, so get the next active index + const firstActiveSeriesIndex = this.tooltipUtil.getFirstActiveXArray( + filteredSeriesX + ) + xVal = filteredSeriesX[firstActiveSeriesIndex][j] + } + } else { + xVal = + typeof w.globals.labels[j] !== 'undefined' ? w.globals.labels[j] : '' + } + } + + let bufferXVal = xVal + + if (w.globals.isXNumeric && w.config.xaxis.type === 'datetime') { + let xFormat = new Formatters(this.ctx) + xVal = xFormat.xLabelFormat( + w.globals.ttKeyFormatter, + bufferXVal, + bufferXVal, + { + i: undefined, + dateFormatter: new DateTime(this.ctx).formatDate, + w: this.w + } + ) + } else { + if (w.globals.isBarHorizontal) { + xVal = w.globals.yLabelFormatters[0](bufferXVal, customFormatterOpts) + } else { + xVal = w.globals.xLabelFormatter(bufferXVal, customFormatterOpts) + } + } + + // override default x-axis formatter with tooltip formatter + if (w.config.tooltip.x.formatter !== undefined) { + xVal = w.globals.ttKeyFormatter(bufferXVal, customFormatterOpts) + } + + if (w.globals.seriesZ.length > 0 && w.globals.seriesZ[i].length > 0) { + zVal = zFormatter(w.globals.seriesZ[i][j], w) + } + + if (typeof w.config.xaxis.tooltip.formatter === 'function') { + xAxisTTVal = w.globals.xaxisTooltipFormatter( + bufferXVal, + customFormatterOpts + ) + } else { + xAxisTTVal = xVal + } + + return { + val: Array.isArray(val) ? val.join(' ') : val, + xVal: Array.isArray(xVal) ? xVal.join(' ') : xVal, + xAxisTTVal: Array.isArray(xAxisTTVal) ? xAxisTTVal.join(' ') : xAxisTTVal, + zVal + } + } + + handleCustomTooltip({ i, j, y1, y2, w }) { + const tooltipEl = this.ttCtx.getElTooltip() + let fn = w.config.tooltip.custom + + if (Array.isArray(fn) && fn[i]) { + fn = fn[i] + } + + // override everything with a custom html tooltip and replace it + tooltipEl.innerHTML = fn({ + ctx: this.ctx, + series: w.globals.series, + seriesIndex: i, + dataPointIndex: j, + y1, + y2, + w + }) + } +} diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Marker.js b/public/assets/libs/apexcharts/src/modules/tooltip/Marker.js new file mode 100644 index 0000000..9a6d6bd --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Marker.js @@ -0,0 +1,188 @@ +import Graphics from '../Graphics' +import Position from './Position' +import Markers from '../../modules/Markers' +import Utils from '../../utils/Utils' + +/** + * ApexCharts Tooltip.Marker Class to draw texts on the tooltip. + * This file deals with the markers that appear near tooltip in line/area charts. + * These markers helps the user to associate the data-points and the values + * that are shown in the tooltip + * + * @module Tooltip.Marker + **/ + +export default class Marker { + constructor(tooltipContext) { + this.w = tooltipContext.w + this.ttCtx = tooltipContext + this.ctx = tooltipContext.ctx + this.tooltipPosition = new Position(tooltipContext) + } + + drawDynamicPoints() { + let w = this.w + + let graphics = new Graphics(this.ctx) + let marker = new Markers(this.ctx) + + let elsSeries = w.globals.dom.baseEl.querySelectorAll('.apexcharts-series') + + elsSeries = [...elsSeries] + + if (w.config.chart.stacked) { + elsSeries.sort((a, b) => { + return ( + parseFloat(a.getAttribute('data:realIndex')) - + parseFloat(b.getAttribute('data:realIndex')) + ) + }) + } + + for (let i = 0; i < elsSeries.length; i++) { + let pointsMain = elsSeries[i].querySelector( + `.apexcharts-series-markers-wrap` + ) + + if (pointsMain !== null) { + // it can be null as we have tooltips in donut/bar charts + let point + + let PointClasses = `apexcharts-marker w${(Math.random() + 1) + .toString(36) + .substring(4)}` + if ( + (w.config.chart.type === 'line' || w.config.chart.type === 'area') && + !w.globals.comboCharts && + !w.config.tooltip.intersect + ) { + PointClasses += ' no-pointer-events' + } + + let elPointOptions = marker.getMarkerConfig({ + cssClass: PointClasses, + seriesIndex: Number(pointsMain.getAttribute('data:realIndex')) // fixes apexcharts/apexcharts.js #1427 + }) + + point = graphics.drawMarker(0, 0, elPointOptions) + + point.node.setAttribute('default-marker-size', 0) + + let elPointsG = document.createElementNS(w.globals.SVGNS, 'g') + elPointsG.classList.add('apexcharts-series-markers') + + elPointsG.appendChild(point.node) + pointsMain.appendChild(elPointsG) + } + } + } + + enlargeCurrentPoint(rel, point, x = null, y = null) { + let w = this.w + + if (w.config.chart.type !== 'bubble') { + this.newPointSize(rel, point) + } + + let cx = point.getAttribute('cx') + let cy = point.getAttribute('cy') + + if (x !== null && y !== null) { + cx = x + cy = y + } + + this.tooltipPosition.moveXCrosshairs(cx) + + if (!this.fixedTooltip) { + if (w.config.chart.type === 'radar') { + const elGrid = this.ttCtx.getElGrid() + const seriesBound = elGrid.getBoundingClientRect() + + cx = this.ttCtx.e.clientX - seriesBound.left + } + + this.tooltipPosition.moveTooltip(cx, cy, w.config.markers.hover.size) + } + } + + enlargePoints(j) { + let w = this.w + let me = this + const ttCtx = this.ttCtx + + let col = j + + let points = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker' + ) + + let newSize = w.config.markers.hover.size + + for (let p = 0; p < points.length; p++) { + let rel = points[p].getAttribute('rel') + let index = points[p].getAttribute('index') + + if (newSize === undefined) { + newSize = + w.globals.markers.size[index] + w.config.markers.hover.sizeOffset + } + + if (col === parseInt(rel, 10)) { + me.newPointSize(col, points[p]) + + let cx = points[p].getAttribute('cx') + let cy = points[p].getAttribute('cy') + + me.tooltipPosition.moveXCrosshairs(cx) + + if (!ttCtx.fixedTooltip) { + me.tooltipPosition.moveTooltip(cx, cy, newSize) + } + } else { + me.oldPointSize(points[p]) + } + } + } + + newPointSize(rel, point) { + let w = this.w + let newSize = w.config.markers.hover.size + + let elPoint = + rel === 0 ? point.parentNode.firstChild : point.parentNode.lastChild + + if (elPoint.getAttribute('default-marker-size') !== '0') { + const index = parseInt(elPoint.getAttribute('index'), 10) + if (newSize === undefined) { + newSize = + w.globals.markers.size[index] + w.config.markers.hover.sizeOffset + } + + if (newSize < 0) newSize = 0 + elPoint.setAttribute('r', newSize) + } + } + + oldPointSize(point) { + const size = parseFloat(point.getAttribute('default-marker-size')) + point.setAttribute('r', size) + } + + resetPointsSize() { + let w = this.w + + let points = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker' + ) + + for (let p = 0; p < points.length; p++) { + const size = parseFloat(points[p].getAttribute('default-marker-size')) + if (Utils.isNumber(size) && size >= 0) { + points[p].setAttribute('r', size) + } else { + points[p].setAttribute('r', 0) + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Position.js b/public/assets/libs/apexcharts/src/modules/tooltip/Position.js new file mode 100644 index 0000000..66be5cd --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Position.js @@ -0,0 +1,434 @@ +import Graphics from '../Graphics' +import Series from '../Series' + +/** + * ApexCharts Tooltip.Position Class to move the tooltip based on x and y position. + * + * @module Tooltip.Position + **/ + +export default class Position { + constructor(tooltipContext) { + this.ttCtx = tooltipContext + this.ctx = tooltipContext.ctx + this.w = tooltipContext.w + } + + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + moveXCrosshairs(cx, j = null) { + const ttCtx = this.ttCtx + let w = this.w + + const xcrosshairs = ttCtx.getElXCrosshairs() + + let x = cx - ttCtx.xcrosshairsWidth / 2 + + let tickAmount = w.globals.labels.slice().length + if (j !== null) { + x = (w.globals.gridWidth / tickAmount) * j + } + + if (xcrosshairs !== null && !w.globals.isBarHorizontal) { + xcrosshairs.setAttribute('x', x) + xcrosshairs.setAttribute('x1', x) + xcrosshairs.setAttribute('x2', x) + xcrosshairs.setAttribute('y2', w.globals.gridHeight) + xcrosshairs.classList.add('apexcharts-active') + } + + if (x < 0) { + x = 0 + } + + if (x > w.globals.gridWidth) { + x = w.globals.gridWidth + } + + if (ttCtx.isXAxisTooltipEnabled) { + let tx = x + if ( + w.config.xaxis.crosshairs.width === 'tickWidth' || + w.config.xaxis.crosshairs.width === 'barWidth' + ) { + tx = x + ttCtx.xcrosshairsWidth / 2 + } + this.moveXAxisTooltip(tx) + } + } + + /** + * This will move the crosshair (the vertical/horz line that moves along with mouse) + * Along with this, this function also calls the xaxisMove function + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move crosshair + */ + moveYCrosshairs(cy) { + const ttCtx = this.ttCtx + + if (ttCtx.ycrosshairs !== null) { + Graphics.setAttrs(ttCtx.ycrosshairs, { + y1: cy, + y2: cy + }) + } + if (ttCtx.ycrosshairsHidden !== null) { + Graphics.setAttrs(ttCtx.ycrosshairsHidden, { + y1: cy, + y2: cy + }) + } + } + + /** + ** AxisTooltip is the small rectangle which appears on x axis with x value, when user moves + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move + */ + moveXAxisTooltip(cx) { + let w = this.w + const ttCtx = this.ttCtx + + if (ttCtx.xaxisTooltip !== null && ttCtx.xcrosshairsWidth !== 0) { + ttCtx.xaxisTooltip.classList.add('apexcharts-active') + + let cy = + ttCtx.xaxisOffY + + w.config.xaxis.tooltip.offsetY + + w.globals.translateY + + 1 + + w.config.xaxis.offsetY + + let xaxisTTText = ttCtx.xaxisTooltip.getBoundingClientRect() + let xaxisTTTextWidth = xaxisTTText.width + + cx = cx - xaxisTTTextWidth / 2 + + if (!isNaN(cx)) { + cx = cx + w.globals.translateX + + let textRect = 0 + const graphics = new Graphics(this.ctx) + textRect = graphics.getTextRects(ttCtx.xaxisTooltipText.innerHTML) + + ttCtx.xaxisTooltipText.style.minWidth = textRect.width + 'px' + ttCtx.xaxisTooltip.style.left = cx + 'px' + ttCtx.xaxisTooltip.style.top = cy + 'px' + } + } + } + + moveYAxisTooltip(index) { + const w = this.w + const ttCtx = this.ttCtx + + if (ttCtx.yaxisTTEls === null) { + ttCtx.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-yaxistooltip' + ) + } + + const ycrosshairsHiddenRectY1 = parseInt( + ttCtx.ycrosshairsHidden.getAttribute('y1'), + 10 + ) + let cy = w.globals.translateY + ycrosshairsHiddenRectY1 + + const yAxisTTRect = ttCtx.yaxisTTEls[index].getBoundingClientRect() + const yAxisTTHeight = yAxisTTRect.height + let cx = w.globals.translateYAxisX[index] - 2 + + if (w.config.yaxis[index].opposite) { + cx = cx - 26 + } + + cy = cy - yAxisTTHeight / 2 + + if (w.globals.ignoreYAxisIndexes.indexOf(index) === -1) { + ttCtx.yaxisTTEls[index].classList.add('apexcharts-active') + ttCtx.yaxisTTEls[index].style.top = cy + 'px' + ttCtx.yaxisTTEls[index].style.left = + cx + w.config.yaxis[index].tooltip.offsetX + 'px' + } else { + ttCtx.yaxisTTEls[index].classList.remove('apexcharts-active') + } + } + + /** + ** moves the whole tooltip by changing x, y attrs + * @memberof Position + * @param {int} - cx = point's x position, wherever point's x is, you need to move tooltip + * @param {int} - cy = point's y position, wherever point's y is, you need to move tooltip + * @param {int} - r = point's radius + */ + moveTooltip(cx, cy, r = null) { + let w = this.w + + let ttCtx = this.ttCtx + const tooltipEl = ttCtx.getElTooltip() + let tooltipRect = ttCtx.tooltipRect + + let pointR = r !== null ? parseFloat(r) : 1 + + let x = parseFloat(cx) + pointR + 5 + let y = parseFloat(cy) + pointR / 2 // - tooltipRect.ttHeight / 2 + + if (x > w.globals.gridWidth / 2) { + x = x - tooltipRect.ttWidth - pointR - 10 + } + + if (x > w.globals.gridWidth - tooltipRect.ttWidth - 10) { + x = w.globals.gridWidth - tooltipRect.ttWidth + } + + if (x < -20) { + x = -20 + } + + if (w.config.tooltip.followCursor) { + const elGrid = ttCtx.getElGrid() + const seriesBound = elGrid.getBoundingClientRect() + y = + ttCtx.e.clientY + + w.globals.translateY - + seriesBound.top - + tooltipRect.ttHeight / 2 + } else { + if (!w.globals.isBarHorizontal) { + if (tooltipRect.ttHeight / 2 + y > w.globals.gridHeight) { + y = w.globals.gridHeight - tooltipRect.ttHeight + w.globals.translateY + } + + if (y < 0) { + y = 0 + } + } + } + + if (!isNaN(x)) { + x = x + w.globals.translateX + + tooltipEl.style.left = x + 'px' + tooltipEl.style.top = y + 'px' + } + } + + moveMarkers(i, j) { + let w = this.w + let ttCtx = this.ttCtx + + if (w.globals.markers.size[i] > 0) { + let allPoints = w.globals.dom.baseEl.querySelectorAll( + ` .apexcharts-series[data\\:realIndex='${i}'] .apexcharts-marker` + ) + for (let p = 0; p < allPoints.length; p++) { + if (parseInt(allPoints[p].getAttribute('rel'), 10) === j) { + ttCtx.marker.resetPointsSize() + ttCtx.marker.enlargeCurrentPoint(j, allPoints[p]) + } + } + } else { + ttCtx.marker.resetPointsSize() + this.moveDynamicPointOnHover(j, i) + } + } + + // This function is used when you need to show markers/points only on hover - + // DIFFERENT X VALUES in multiple series + moveDynamicPointOnHover(j, capturedSeries) { + let w = this.w + let ttCtx = this.ttCtx + let cx = 0 + let cy = 0 + + let pointsArr = w.globals.pointsArray + + let hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(capturedSeries) + + const serType = w.config.series[capturedSeries].type + if ( + serType && + (serType === 'column' || + serType === 'candlestick' || + serType === 'boxPlot') + ) { + // fix error mentioned in #811 + return + } + + cx = pointsArr[capturedSeries][j][0] + cy = pointsArr[capturedSeries][j][1] ? pointsArr[capturedSeries][j][1] : 0 + + let point = w.globals.dom.baseEl.querySelector( + `.apexcharts-series[data\\:realIndex='${capturedSeries}'] .apexcharts-series-markers circle` + ) + + if (point && cy < w.globals.gridHeight && cy > 0) { + point.setAttribute('r', hoverSize) + + point.setAttribute('cx', cx) + point.setAttribute('cy', cy) + } + + // point.style.opacity = w.config.markers.hover.opacity + + this.moveXCrosshairs(cx) + + if (!ttCtx.fixedTooltip) { + this.moveTooltip(cx, cy, hoverSize) + } + } + + // This function is used when you need to show markers/points only on hover - + // SAME X VALUES in multiple series + moveDynamicPointsOnHover(j) { + const ttCtx = this.ttCtx + let w = ttCtx.w + let cx = 0 + let cy = 0 + let activeSeries = 0 + + let pointsArr = w.globals.pointsArray + + let series = new Series(this.ctx) + activeSeries = series.getActiveConfigSeriesIndex(true) + + let hoverSize = ttCtx.tooltipUtil.getHoverMarkerSize(activeSeries) + + if (pointsArr[activeSeries]) { + cx = pointsArr[activeSeries][j][0] + cy = pointsArr[activeSeries][j][1] + } + + let points = ttCtx.tooltipUtil.getAllMarkers() + + if (points !== null) { + for (let p = 0; p < w.globals.series.length; p++) { + let pointArr = pointsArr[p] + + if (w.globals.comboCharts) { + // in a combo chart, if column charts are present, markers will not match with the number of series, hence this patch to push a null value in points array + if (typeof pointArr === 'undefined') { + // nodelist to array + points.splice(p, 0, null) + } + } + if (pointArr && pointArr.length) { + let pcy = pointsArr[p][j][1] + points[p].setAttribute('cx', cx) + + if ( + pcy !== null && + !isNaN(pcy) && + pcy < w.globals.gridHeight + hoverSize && + pcy + hoverSize > 0 + ) { + points[p] && points[p].setAttribute('r', hoverSize) + points[p] && points[p].setAttribute('cy', pcy) + } else { + points[p] && points[p].setAttribute('r', 0) + } + } + } + } + + this.moveXCrosshairs(cx) + + if (!ttCtx.fixedTooltip) { + let tcy = cy || w.globals.gridHeight + this.moveTooltip(cx, tcy, hoverSize) + } + } + + moveStickyTooltipOverBars(j) { + const w = this.w + const ttCtx = this.ttCtx + + let barLen = w.globals.columnSeries + ? w.globals.columnSeries.length + : w.globals.series.length + + let i = + barLen >= 2 && barLen % 2 === 0 + ? Math.floor(barLen / 2) + : Math.floor(barLen / 2) + 1 + + if (w.globals.isBarHorizontal) { + let series = new Series(this.ctx) + i = series.getActiveConfigSeriesIndex(false, 'desc') + 1 + } + let jBar = w.globals.dom.baseEl.querySelector( + `.apexcharts-bar-series .apexcharts-series[rel='${i}'] path[j='${j}'], .apexcharts-candlestick-series .apexcharts-series[rel='${i}'] path[j='${j}'], .apexcharts-boxPlot-series .apexcharts-series[rel='${i}'] path[j='${j}'], .apexcharts-rangebar-series .apexcharts-series[rel='${i}'] path[j='${j}']` + ) + + let bcx = jBar ? parseFloat(jBar.getAttribute('cx')) : 0 + let bcy = jBar ? parseFloat(jBar.getAttribute('cy')) : 0 + let bw = jBar ? parseFloat(jBar.getAttribute('barWidth')) : 0 + let bh = jBar ? parseFloat(jBar.getAttribute('barHeight')) : 0 + + const elGrid = ttCtx.getElGrid() + let seriesBound = elGrid.getBoundingClientRect() + + const isBoxOrCandle = + jBar.classList.contains('apexcharts-candlestick-area') || + jBar.classList.contains('apexcharts-boxPlot-area') + if (w.globals.isXNumeric) { + if (jBar && !isBoxOrCandle) { + bcx = bcx - (barLen % 2 !== 0 ? bw / 2 : 0) + } + + if ( + jBar && // fixes apexcharts.js#2354 + isBoxOrCandle && + w.globals.comboCharts + ) { + bcx = bcx - bw / 2 + } + } else { + if (!w.globals.isBarHorizontal) { + bcx = + ttCtx.xAxisTicksPositions[j - 1] + ttCtx.dataPointsDividedWidth / 2 + if (isNaN(bcx)) { + bcx = ttCtx.xAxisTicksPositions[j] - ttCtx.dataPointsDividedWidth / 2 + } + } + } + + if (!w.globals.isBarHorizontal) { + if (w.config.tooltip.followCursor) { + bcy = ttCtx.e.clientY - seriesBound.top - ttCtx.tooltipRect.ttHeight / 2 + } else { + if (bcy + ttCtx.tooltipRect.ttHeight + 15 > w.globals.gridHeight) { + bcy = w.globals.gridHeight + } + } + } else { + if (bcy > w.globals.gridHeight / 2) { + bcy = bcy - ttCtx.tooltipRect.ttHeight + } + + bcy = bcy + w.config.grid.padding.top + bh / 3 + + if (bcy + bh > w.globals.gridHeight) { + bcy = w.globals.gridHeight - bh + } + } + + if (bcy < -10) { + bcy = -10 + } + + if (!w.globals.isBarHorizontal) { + this.moveXCrosshairs(bcx) + } + + if (!ttCtx.fixedTooltip) { + let tcy = bcy || w.globals.gridHeight + this.moveTooltip(bcx, tcy) + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/README.md b/public/assets/libs/apexcharts/src/modules/tooltip/README.md new file mode 100644 index 0000000..bae129b --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/README.md @@ -0,0 +1,20 @@ +### AxesTooltip.js +This file deals with the x-axis and y-axis tooltips. + +### Intersect.js +This file deals with functions related to intersecting tooltips (tooltips that appear when user hovers directly over a data-point whether). + +### Labels.js +This file deals with printing actual text on the tooltip. + +### Marker.js +This file deals with the markers that appear near tooltip in line/area charts. These markers helps the user to associate the data-points and the values that are shown in the tooltip + +### Position.js +This file deals with positioning of the tooltip. + +### Tooltip.js +This is the primary file which is an entry point for all tooltip related functionality. + +### Utils.js +Helper functions related to tooltips. diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Tooltip.js b/public/assets/libs/apexcharts/src/modules/tooltip/Tooltip.js new file mode 100644 index 0000000..1c7b828 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Tooltip.js @@ -0,0 +1,886 @@ +import Labels from './Labels' +import Position from './Position' +import Marker from './Marker' +import Intersect from './Intersect' +import AxesTooltip from './AxesTooltip' +import Graphics from '../Graphics' +import Series from '../Series' +import XAxis from './../axes/XAxis' +import Utils from './Utils' + +/** + * ApexCharts Core Tooltip Class to handle the tooltip generation. + * + * @module Tooltip + **/ + +export default class Tooltip { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + const w = this.w + + this.tConfig = w.config.tooltip + + this.tooltipUtil = new Utils(this) + this.tooltipLabels = new Labels(this) + this.tooltipPosition = new Position(this) + this.marker = new Marker(this) + this.intersect = new Intersect(this) + this.axesTooltip = new AxesTooltip(this) + this.showOnIntersect = this.tConfig.intersect + this.showTooltipTitle = this.tConfig.x.show + this.fixedTooltip = this.tConfig.fixed.enabled + this.xaxisTooltip = null + this.yaxisTTEls = null + this.isBarShared = !w.globals.isBarHorizontal && this.tConfig.shared + this.lastHoverTime = Date.now() + } + + getElTooltip(ctx) { + if (!ctx) ctx = this + if (!ctx.w.globals.dom.baseEl) return null + + return ctx.w.globals.dom.baseEl.querySelector('.apexcharts-tooltip') + } + + getElXCrosshairs() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-xcrosshairs') + } + + getElGrid() { + return this.w.globals.dom.baseEl.querySelector('.apexcharts-grid') + } + + drawTooltip(xyRatios) { + let w = this.w + this.xyRatios = xyRatios + this.isXAxisTooltipEnabled = + w.config.xaxis.tooltip.enabled && w.globals.axisCharts + this.yaxisTooltips = w.config.yaxis.map((y, i) => { + return y.show && y.tooltip.enabled && w.globals.axisCharts ? true : false + }) + this.allTooltipSeriesGroups = [] + + if (!w.globals.axisCharts) { + this.showTooltipTitle = false + } + + const tooltipEl = document.createElement('div') + tooltipEl.classList.add('apexcharts-tooltip') + if (w.config.tooltip.cssClass) { + tooltipEl.classList.add(w.config.tooltip.cssClass) + } + tooltipEl.classList.add(`apexcharts-theme-${this.tConfig.theme}`) + w.globals.dom.elWrap.appendChild(tooltipEl) + + if (w.globals.axisCharts) { + this.axesTooltip.drawXaxisTooltip() + this.axesTooltip.drawYaxisTooltip() + this.axesTooltip.setXCrosshairWidth() + this.axesTooltip.handleYCrosshair() + + let xAxis = new XAxis(this.ctx) + this.xAxisTicksPositions = xAxis.getXAxisTicksPositions() + } + + // we forcefully set intersect true for these conditions + if ( + (w.globals.comboCharts || + this.tConfig.intersect || + w.config.chart.type === 'rangeBar') && + !this.tConfig.shared + ) { + this.showOnIntersect = true + } + + if (w.config.markers.size === 0 || w.globals.markers.largestSize === 0) { + // when user don't want to show points all the time, but only on when hovering on series + this.marker.drawDynamicPoints(this) + } + + // no visible series, exit + if (w.globals.collapsedSeries.length === w.globals.series.length) return + + this.dataPointsDividedHeight = w.globals.gridHeight / w.globals.dataPoints + this.dataPointsDividedWidth = w.globals.gridWidth / w.globals.dataPoints + + if (this.showTooltipTitle) { + this.tooltipTitle = document.createElement('div') + this.tooltipTitle.classList.add('apexcharts-tooltip-title') + this.tooltipTitle.style.fontFamily = + this.tConfig.style.fontFamily || w.config.chart.fontFamily + this.tooltipTitle.style.fontSize = this.tConfig.style.fontSize + tooltipEl.appendChild(this.tooltipTitle) + } + + let ttItemsCnt = w.globals.series.length // whether shared or not, default is shared + if ((w.globals.xyCharts || w.globals.comboCharts) && this.tConfig.shared) { + if (!this.showOnIntersect) { + ttItemsCnt = w.globals.series.length + } else { + ttItemsCnt = 1 + } + } + + this.legendLabels = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-legend-text' + ) + + this.ttItems = this.createTTElements(ttItemsCnt) + this.addSVGEvents() + } + + createTTElements(ttItemsCnt) { + const w = this.w + let ttItems = [] + + const tooltipEl = this.getElTooltip() + for (let i = 0; i < ttItemsCnt; i++) { + let gTxt = document.createElement('div') + gTxt.classList.add('apexcharts-tooltip-series-group') + gTxt.style.order = w.config.tooltip.inverseOrder ? ttItemsCnt - i : i + 1 + if ( + this.tConfig.shared && + this.tConfig.enabledOnSeries && + Array.isArray(this.tConfig.enabledOnSeries) + ) { + if (this.tConfig.enabledOnSeries.indexOf(i) < 0) { + gTxt.classList.add('apexcharts-tooltip-series-group-hidden') + } + } + + let point = document.createElement('span') + point.classList.add('apexcharts-tooltip-marker') + point.style.backgroundColor = w.globals.colors[i] + gTxt.appendChild(point) + + const gYZ = document.createElement('div') + gYZ.classList.add('apexcharts-tooltip-text') + + gYZ.style.fontFamily = + this.tConfig.style.fontFamily || w.config.chart.fontFamily + gYZ.style.fontSize = this.tConfig.style.fontSize + ;['y', 'goals', 'z'].forEach((g) => { + const gValText = document.createElement('div') + gValText.classList.add(`apexcharts-tooltip-${g}-group`) + + let txtLabel = document.createElement('span') + txtLabel.classList.add(`apexcharts-tooltip-text-${g}-label`) + gValText.appendChild(txtLabel) + + let txtValue = document.createElement('span') + txtValue.classList.add(`apexcharts-tooltip-text-${g}-value`) + gValText.appendChild(txtValue) + + gYZ.appendChild(gValText) + }) + + gTxt.appendChild(gYZ) + + tooltipEl.appendChild(gTxt) + + ttItems.push(gTxt) + } + + return ttItems + } + + addSVGEvents() { + const w = this.w + let type = w.config.chart.type + const tooltipEl = this.getElTooltip() + + const commonBar = !!( + type === 'bar' || + type === 'candlestick' || + type === 'boxPlot' || + type === 'rangeBar' + ) + + const chartWithmarkers = + type === 'area' || + type === 'line' || + type === 'scatter' || + type === 'bubble' || + type === 'radar' + + let hoverArea = w.globals.dom.Paper.node + + const elGrid = this.getElGrid() + if (elGrid) { + this.seriesBound = elGrid.getBoundingClientRect() + } + + let tooltipY = [] + let tooltipX = [] + + let seriesHoverParams = { + hoverArea, + elGrid, + tooltipEl, + tooltipY, + tooltipX, + ttItems: this.ttItems + } + + let points + + if (w.globals.axisCharts) { + if (chartWithmarkers) { + points = w.globals.dom.baseEl.querySelectorAll( + ".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker" + ) + } else if (commonBar) { + points = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-boxPlot-area, .apexcharts-series .apexcharts-rangebar-area' + ) + } else if (type === 'heatmap' || type === 'treemap') { + points = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series .apexcharts-heatmap, .apexcharts-series .apexcharts-treemap' + ) + } + + if (points && points.length) { + for (let p = 0; p < points.length; p++) { + tooltipY.push(points[p].getAttribute('cy')) + tooltipX.push(points[p].getAttribute('cx')) + } + } + } + + const validSharedChartTypes = + (w.globals.xyCharts && !this.showOnIntersect) || + (w.globals.comboCharts && !this.showOnIntersect) || + (commonBar && this.tooltipUtil.hasBars() && this.tConfig.shared) + + if (validSharedChartTypes) { + this.addPathsEventListeners([hoverArea], seriesHoverParams) + } else if ( + (commonBar && !w.globals.comboCharts) || + (chartWithmarkers && this.showOnIntersect) + ) { + this.addDatapointEventsListeners(seriesHoverParams) + } else if ( + !w.globals.axisCharts || + type === 'heatmap' || + type === 'treemap' + ) { + let seriesAll = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series' + ) + this.addPathsEventListeners(seriesAll, seriesHoverParams) + } + + if (this.showOnIntersect) { + let lineAreaPoints = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-line-series .apexcharts-marker, .apexcharts-area-series .apexcharts-marker' + ) + if (lineAreaPoints.length > 0) { + // if we find any lineSeries, addEventListeners for them + this.addPathsEventListeners(lineAreaPoints, seriesHoverParams) + } + + // combo charts may have bars, so add event listeners here too + if (this.tooltipUtil.hasBars() && !this.tConfig.shared) { + this.addDatapointEventsListeners(seriesHoverParams) + } + } + } + + drawFixedTooltipRect() { + let w = this.w + + const tooltipEl = this.getElTooltip() + + let tooltipRect = tooltipEl.getBoundingClientRect() + + let ttWidth = tooltipRect.width + 10 + let ttHeight = tooltipRect.height + 10 + let x = this.tConfig.fixed.offsetX + let y = this.tConfig.fixed.offsetY + + const fixed = this.tConfig.fixed.position.toLowerCase() + + if (fixed.indexOf('right') > -1) { + x = x + w.globals.svgWidth - ttWidth + 10 + } + if (fixed.indexOf('bottom') > -1) { + y = y + w.globals.svgHeight - ttHeight - 10 + } + + tooltipEl.style.left = x + 'px' + tooltipEl.style.top = y + 'px' + + return { + x, + y, + ttWidth, + ttHeight + } + } + + addDatapointEventsListeners(seriesHoverParams) { + let w = this.w + let points = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series-markers .apexcharts-marker, .apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-boxPlot-area, .apexcharts-rangebar-area' + ) + this.addPathsEventListeners(points, seriesHoverParams) + } + + addPathsEventListeners(paths, opts) { + let self = this + + for (let p = 0; p < paths.length; p++) { + let extendedOpts = { + paths: paths[p], + tooltipEl: opts.tooltipEl, + tooltipY: opts.tooltipY, + tooltipX: opts.tooltipX, + elGrid: opts.elGrid, + hoverArea: opts.hoverArea, + ttItems: opts.ttItems + } + + let events = ['mousemove', 'mouseup', 'touchmove', 'mouseout', 'touchend'] + + events.map((ev) => { + return paths[p].addEventListener( + ev, + self.onSeriesHover.bind(self, extendedOpts), + { capture: false, passive: true } + ) + }) + } + } + + /* + ** Check to see if the tooltips should be updated based on a mouse / touch event + */ + onSeriesHover(opt, e) { + // If a user is moving their mouse quickly, don't bother updating the tooltip every single frame + + const targetDelay = 100 + const timeSinceLastUpdate = Date.now() - this.lastHoverTime + if (timeSinceLastUpdate >= targetDelay) { + // The tooltip was last updated over 100ms ago - redraw it even if the user is still moving their + // mouse so they get some feedback that their moves are being registered + this.seriesHover(opt, e) + } else { + // The tooltip was last updated less than 100ms ago + // Cancel any other delayed draw, so we don't show stale data + clearTimeout(this.seriesHoverTimeout) + + // Schedule the next draw so that it happens about 100ms after the last update + this.seriesHoverTimeout = setTimeout(() => { + this.seriesHover(opt, e) + }, targetDelay - timeSinceLastUpdate) + } + } + + /* + ** The actual series hover function + */ + seriesHover(opt, e) { + this.lastHoverTime = Date.now() + let chartGroups = [] + const w = this.w + + // if user has more than one charts in group, we need to sync + if (w.config.chart.group) { + chartGroups = this.ctx.getGroupedCharts() + } + + if ( + w.globals.axisCharts && + ((w.globals.minX === -Infinity && w.globals.maxX === Infinity) || + w.globals.dataPoints === 0) + ) { + return + } + + if (chartGroups.length) { + chartGroups.forEach((ch) => { + const tooltipEl = this.getElTooltip(ch) + + const newOpts = { + paths: opt.paths, + tooltipEl, + tooltipY: opt.tooltipY, + tooltipX: opt.tooltipX, + elGrid: opt.elGrid, + hoverArea: opt.hoverArea, + ttItems: ch.w.globals.tooltip.ttItems + } + + // all the charts should have the same minX and maxX (same xaxis) for multiple tooltips to work correctly + if ( + ch.w.globals.minX === this.w.globals.minX && + ch.w.globals.maxX === this.w.globals.maxX + ) { + ch.w.globals.tooltip.seriesHoverByContext({ + chartCtx: ch, + ttCtx: ch.w.globals.tooltip, + opt: newOpts, + e + }) + } + }) + } else { + this.seriesHoverByContext({ + chartCtx: this.ctx, + ttCtx: this.w.globals.tooltip, + opt, + e + }) + } + } + + seriesHoverByContext({ chartCtx, ttCtx, opt, e }) { + let w = chartCtx.w + const tooltipEl = this.getElTooltip() + + if (!tooltipEl) return + + // tooltipRect is calculated on every mousemove, because the text is dynamic + ttCtx.tooltipRect = { + x: 0, + y: 0, + ttWidth: tooltipEl.getBoundingClientRect().width, + ttHeight: tooltipEl.getBoundingClientRect().height + } + ttCtx.e = e + + // highlight the current hovered bars + if ( + ttCtx.tooltipUtil.hasBars() && + !w.globals.comboCharts && + !ttCtx.isBarShared + ) { + if (this.tConfig.onDatasetHover.highlightDataSeries) { + let series = new Series(chartCtx) + series.toggleSeriesOnHover(e, e.target.parentNode) + } + } + + if (ttCtx.fixedTooltip) { + ttCtx.drawFixedTooltipRect() + } + + if (w.globals.axisCharts) { + ttCtx.axisChartsTooltips({ + e, + opt, + tooltipRect: ttCtx.tooltipRect + }) + } else { + // non-plot charts i.e pie/donut/circle + ttCtx.nonAxisChartsTooltips({ + e, + opt, + tooltipRect: ttCtx.tooltipRect + }) + } + } + + // tooltip handling for line/area/bar/columns/scatter + axisChartsTooltips({ e, opt }) { + let w = this.w + let x, y + + let seriesBound = opt.elGrid.getBoundingClientRect() + + const clientX = e.type === 'touchmove' ? e.touches[0].clientX : e.clientX + const clientY = e.type === 'touchmove' ? e.touches[0].clientY : e.clientY + + this.clientY = clientY + this.clientX = clientX + + w.globals.capturedSeriesIndex = -1 + w.globals.capturedDataPointIndex = -1 + + if ( + clientY < seriesBound.top || + clientY > seriesBound.top + seriesBound.height + ) { + this.handleMouseOut(opt) + return + } + + if ( + Array.isArray(this.tConfig.enabledOnSeries) && + !w.config.tooltip.shared + ) { + const index = parseInt(opt.paths.getAttribute('index'), 10) + if (this.tConfig.enabledOnSeries.indexOf(index) < 0) { + this.handleMouseOut(opt) + return + } + } + + const tooltipEl = this.getElTooltip() + const xcrosshairs = this.getElXCrosshairs() + + let isStickyTooltip = + w.globals.xyCharts || + (w.config.chart.type === 'bar' && + !w.globals.isBarHorizontal && + this.tooltipUtil.hasBars() && + this.tConfig.shared) || + (w.globals.comboCharts && this.tooltipUtil.hasBars()) + + if ( + e.type === 'mousemove' || + e.type === 'touchmove' || + e.type === 'mouseup' + ) { + // there is no series to hover over + if ( + w.globals.collapsedSeries.length + + w.globals.ancillaryCollapsedSeries.length === + w.globals.series.length + ) { + return + } + + if (xcrosshairs !== null) { + xcrosshairs.classList.add('apexcharts-active') + } + + const hasYAxisTooltip = this.yaxisTooltips.filter((b) => { + return b === true + }) + if (this.ycrosshairs !== null && hasYAxisTooltip.length) { + this.ycrosshairs.classList.add('apexcharts-active') + } + + if (isStickyTooltip && !this.showOnIntersect) { + this.handleStickyTooltip(e, clientX, clientY, opt) + } else { + if ( + w.config.chart.type === 'heatmap' || + w.config.chart.type === 'treemap' + ) { + let markerXY = this.intersect.handleHeatTreeTooltip({ + e, + opt, + x, + y, + type: w.config.chart.type + }) + x = markerXY.x + y = markerXY.y + + tooltipEl.style.left = x + 'px' + tooltipEl.style.top = y + 'px' + } else { + if (this.tooltipUtil.hasBars()) { + this.intersect.handleBarTooltip({ + e, + opt + }) + } + + if (this.tooltipUtil.hasMarkers()) { + // intersect - line/area/scatter/bubble + this.intersect.handleMarkerTooltip({ + e, + opt, + x, + y + }) + } + } + } + + if (this.yaxisTooltips.length) { + for (let yt = 0; yt < w.config.yaxis.length; yt++) { + this.axesTooltip.drawYaxisTooltipText(yt, clientY, this.xyRatios) + } + } + + opt.tooltipEl.classList.add('apexcharts-active') + } else if (e.type === 'mouseout' || e.type === 'touchend') { + this.handleMouseOut(opt) + } + } + + // tooltip handling for pie/donuts + nonAxisChartsTooltips({ e, opt, tooltipRect }) { + let w = this.w + let rel = opt.paths.getAttribute('rel') + + const tooltipEl = this.getElTooltip() + + let seriesBound = w.globals.dom.elWrap.getBoundingClientRect() + + if (e.type === 'mousemove' || e.type === 'touchmove') { + tooltipEl.classList.add('apexcharts-active') + + this.tooltipLabels.drawSeriesTexts({ + ttItems: opt.ttItems, + i: parseInt(rel, 10) - 1, + shared: false + }) + + let x = w.globals.clientX - seriesBound.left - tooltipRect.ttWidth / 2 + let y = w.globals.clientY - seriesBound.top - tooltipRect.ttHeight - 10 + + tooltipEl.style.left = x + 'px' + tooltipEl.style.top = y + 'px' + + if (w.config.legend.tooltipHoverFormatter) { + let legendFormatter = w.config.legend.tooltipHoverFormatter + + const i = rel - 1 + const legendName = this.legendLabels[i].getAttribute( + 'data:default-text' + ) + + let text = legendFormatter(legendName, { + seriesIndex: i, + dataPointIndex: i, + w + }) + + this.legendLabels[i].innerHTML = text + } + } else if (e.type === 'mouseout' || e.type === 'touchend') { + tooltipEl.classList.remove('apexcharts-active') + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach((l) => { + const defaultText = l.getAttribute('data:default-text') + l.innerHTML = decodeURIComponent(defaultText) + }) + } + } + } + + handleStickyTooltip(e, clientX, clientY, opt) { + const w = this.w + let capj = this.tooltipUtil.getNearestValues({ + context: this, + hoverArea: opt.hoverArea, + elGrid: opt.elGrid, + clientX, + clientY + }) + + let j = capj.j + let capturedSeries = capj.capturedSeries + + const bounds = opt.elGrid.getBoundingClientRect() + if (capj.hoverX < 0 || capj.hoverX > bounds.width) { + this.handleMouseOut(opt) + return + } + + if (capturedSeries !== null) { + this.handleStickyCapturedSeries(e, capturedSeries, opt, j) + } else { + // couldn't capture any series. check if shared X is same, + // if yes, draw a grouped tooltip + if (this.tooltipUtil.isXoverlap(j) || w.globals.isBarHorizontal) { + this.create(e, this, 0, j, opt.ttItems) + } + } + } + + handleStickyCapturedSeries(e, capturedSeries, opt, j) { + const w = this.w + if (!this.tConfig.shared) { + let ignoreNull = w.globals.series[capturedSeries][j] === null + if (ignoreNull) { + this.handleMouseOut(opt) + return + } + } + + if (typeof w.globals.series[capturedSeries][j] !== 'undefined') { + if ( + this.tConfig.shared && + this.tooltipUtil.isXoverlap(j) && + this.tooltipUtil.isInitialSeriesSameLen() + ) { + this.create(e, this, capturedSeries, j, opt.ttItems) + } else { + this.create(e, this, capturedSeries, j, opt.ttItems, false) + } + } else { + if (this.tooltipUtil.isXoverlap(j)) { + this.create(e, this, 0, j, opt.ttItems) + } + } + } + + deactivateHoverFilter() { + let w = this.w + let graphics = new Graphics(this.ctx) + + let allPaths = w.globals.dom.Paper.select(`.apexcharts-bar-area`) + + for (let b = 0; b < allPaths.length; b++) { + graphics.pathMouseLeave(allPaths[b]) + } + } + + handleMouseOut(opt) { + const w = this.w + + const xcrosshairs = this.getElXCrosshairs() + + opt.tooltipEl.classList.remove('apexcharts-active') + this.deactivateHoverFilter() + if (w.config.chart.type !== 'bubble') { + this.marker.resetPointsSize() + } + if (xcrosshairs !== null) { + xcrosshairs.classList.remove('apexcharts-active') + } + if (this.ycrosshairs !== null) { + this.ycrosshairs.classList.remove('apexcharts-active') + } + if (this.isXAxisTooltipEnabled) { + this.xaxisTooltip.classList.remove('apexcharts-active') + } + if (this.yaxisTooltips.length) { + if (this.yaxisTTEls === null) { + this.yaxisTTEls = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-yaxistooltip' + ) + } + for (let i = 0; i < this.yaxisTTEls.length; i++) { + this.yaxisTTEls[i].classList.remove('apexcharts-active') + } + } + + if (w.config.legend.tooltipHoverFormatter) { + this.legendLabels.forEach((l) => { + const defaultText = l.getAttribute('data:default-text') + l.innerHTML = decodeURIComponent(defaultText) + }) + } + } + + markerClick(e, seriesIndex, dataPointIndex) { + const w = this.w + if (typeof w.config.chart.events.markerClick === 'function') { + w.config.chart.events.markerClick(e, this.ctx, { + seriesIndex, + dataPointIndex, + w + }) + } + this.ctx.events.fireEvent('markerClick', [ + e, + this.ctx, + { seriesIndex, dataPointIndex, w } + ]) + } + + create(e, context, capturedSeries, j, ttItems, shared = null) { + let w = this.w + let ttCtx = context + + if (e.type === 'mouseup') { + this.markerClick(e, capturedSeries, j) + } + + if (shared === null) shared = this.tConfig.shared + + const hasMarkers = this.tooltipUtil.hasMarkers() + + const bars = this.tooltipUtil.getElBars() + + if (w.config.legend.tooltipHoverFormatter) { + let legendFormatter = w.config.legend.tooltipHoverFormatter + + let els = Array.from(this.legendLabels) + + // reset all legend values first + els.forEach((l) => { + const legendName = l.getAttribute('data:default-text') + l.innerHTML = decodeURIComponent(legendName) + }) + + // for irregular time series + for (let i = 0; i < els.length; i++) { + const l = els[i] + const lsIndex = parseInt(l.getAttribute('i'), 10) + const legendName = decodeURIComponent( + l.getAttribute('data:default-text') + ) + + let text = legendFormatter(legendName, { + seriesIndex: shared ? lsIndex : capturedSeries, + dataPointIndex: j, + w + }) + + if (!shared) { + l.innerHTML = lsIndex === capturedSeries ? text : legendName + if (capturedSeries === lsIndex) { + break + } + } else { + l.innerHTML = + w.globals.collapsedSeriesIndices.indexOf(lsIndex) < 0 + ? text + : legendName + } + } + } + + if (shared) { + ttCtx.tooltipLabels.drawSeriesTexts({ + ttItems, + i: capturedSeries, + j, + shared: this.showOnIntersect ? false : this.tConfig.shared + }) + + if (hasMarkers) { + if (w.globals.markers.largestSize > 0) { + ttCtx.marker.enlargePoints(j) + } else { + ttCtx.tooltipPosition.moveDynamicPointsOnHover(j) + } + } + + if (this.tooltipUtil.hasBars()) { + this.barSeriesHeight = this.tooltipUtil.getBarsHeight(bars) + if (this.barSeriesHeight > 0) { + // hover state, activate snap filter + let graphics = new Graphics(this.ctx) + let paths = w.globals.dom.Paper.select( + `.apexcharts-bar-area[j='${j}']` + ) + + // de-activate first + this.deactivateHoverFilter() + + this.tooltipPosition.moveStickyTooltipOverBars(j) + + for (let b = 0; b < paths.length; b++) { + graphics.pathMouseEnter(paths[b]) + } + } + } + } else { + ttCtx.tooltipLabels.drawSeriesTexts({ + shared: false, + ttItems, + i: capturedSeries, + j + }) + + if (this.tooltipUtil.hasBars()) { + ttCtx.tooltipPosition.moveStickyTooltipOverBars(j) + } + + if (hasMarkers) { + ttCtx.tooltipPosition.moveMarkers(capturedSeries, j) + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/modules/tooltip/Utils.js b/public/assets/libs/apexcharts/src/modules/tooltip/Utils.js new file mode 100644 index 0000000..84c47a0 --- /dev/null +++ b/public/assets/libs/apexcharts/src/modules/tooltip/Utils.js @@ -0,0 +1,359 @@ +import Utilities from '../../utils/Utils' + +/** + * ApexCharts Tooltip.Utils Class to support Tooltip functionality. + * + * @module Tooltip.Utils + **/ + +export default class Utils { + constructor(tooltipContext) { + this.w = tooltipContext.w + this.ttCtx = tooltipContext + this.ctx = tooltipContext.ctx + } + + /** + ** When hovering over series, you need to capture which series is being hovered on. + ** This function will return both capturedseries index as well as inner index of that series + * @memberof Utils + * @param {object} + * - hoverArea = the rect on which user hovers + * - elGrid = dimensions of the hover rect (it can be different than hoverarea) + */ + getNearestValues({ hoverArea, elGrid, clientX, clientY }) { + let w = this.w + + const seriesBound = elGrid.getBoundingClientRect() + const hoverWidth = seriesBound.width + const hoverHeight = seriesBound.height + + let xDivisor = hoverWidth / (w.globals.dataPoints - 1) + let yDivisor = hoverHeight / w.globals.dataPoints + + const hasBars = this.hasBars() + + if ( + (w.globals.comboCharts || hasBars) && + !w.config.xaxis.convertedCatToNumeric + ) { + xDivisor = hoverWidth / w.globals.dataPoints + } + + let hoverX = clientX - seriesBound.left - w.globals.barPadForNumericAxis + let hoverY = clientY - seriesBound.top + + const notInRect = + hoverX < 0 || hoverY < 0 || hoverX > hoverWidth || hoverY > hoverHeight + + if (notInRect) { + hoverArea.classList.remove('hovering-zoom') + hoverArea.classList.remove('hovering-pan') + } else { + if (w.globals.zoomEnabled) { + hoverArea.classList.remove('hovering-pan') + hoverArea.classList.add('hovering-zoom') + } else if (w.globals.panEnabled) { + hoverArea.classList.remove('hovering-zoom') + hoverArea.classList.add('hovering-pan') + } + } + + let j = Math.round(hoverX / xDivisor) + let jHorz = Math.floor(hoverY / yDivisor) + + if (hasBars && !w.config.xaxis.convertedCatToNumeric) { + j = Math.ceil(hoverX / xDivisor) + j = j - 1 + } + + let capturedSeries = null + let closest = null + let seriesXValArr = [] + let seriesYValArr = [] + + //add extra values to show markers for the first points. Included both axes to avoid incorrect positioning of the marker + w.globals.seriesXvalues.forEach((value) => { + seriesXValArr.push([value[0] + 0.000001].concat(value)) + }) + w.globals.seriesYvalues.forEach((value) => { + seriesYValArr.push([value[0] + 0.000001].concat(value)) + }) + + seriesXValArr = seriesXValArr.map((seriesXVal) => { + return seriesXVal.filter((s) => Utilities.isNumber(s)) + }) + seriesYValArr = seriesYValArr.map((seriesYVal) => { + return seriesYVal.filter((s) => Utilities.isNumber(s)) + }) + + // if X axis type is not category and tooltip is not shared, then we need to find the cursor position and get the nearest value + if (w.globals.isXNumeric) { + // Change origin of cursor position so that we can compute the relative nearest point to the cursor on our chart + // we only need to scale because all points are relative to the bounds.left and bounds.top => origin is virtually (0, 0) + const chartGridEl = this.ttCtx.getElGrid() + const chartGridElBoundingRect = chartGridEl.getBoundingClientRect() + const transformedHoverX = + hoverX * (chartGridElBoundingRect.width / hoverWidth) + const transformedHoverY = + hoverY * (chartGridElBoundingRect.height / hoverHeight) + + closest = this.closestInMultiArray( + transformedHoverX, + transformedHoverY, + seriesXValArr, + seriesYValArr + ) + capturedSeries = closest.index + j = closest.j + + if (capturedSeries !== null) { + // initial push, it should be a little smaller than the 1st val + seriesXValArr = w.globals.seriesXvalues[capturedSeries] + + closest = this.closestInArray(transformedHoverX, seriesXValArr) + + j = closest.index + } + } + + w.globals.capturedSeriesIndex = + capturedSeries === null ? -1 : capturedSeries + + if (!j || j < 1) j = 0 + + if (w.globals.isBarHorizontal) { + w.globals.capturedDataPointIndex = jHorz + } else { + w.globals.capturedDataPointIndex = j + } + + return { + capturedSeries, + j: w.globals.isBarHorizontal ? jHorz : j, + hoverX, + hoverY + } + } + + closestInMultiArray(hoverX, hoverY, Xarrays, Yarrays) { + let w = this.w + let activeIndex = 0 + let currIndex = null + let j = -1 + + if (w.globals.series.length > 1) { + activeIndex = this.getFirstActiveXArray(Xarrays) + } else { + currIndex = 0 + } + + let currX = Xarrays[activeIndex][0] + let diffX = Math.abs(hoverX - currX) + + // find nearest point on x-axis + Xarrays.forEach((arrX) => { + arrX.forEach((x, iX) => { + const newDiff = Math.abs(hoverX - x) + if (newDiff < diffX) { + diffX = newDiff + j = iX + } + }) + }) + + if (j !== -1) { + // find nearest graph on y-axis relevanted to nearest point on x-axis + let currY = Yarrays[activeIndex][j] + let diffY = Math.abs(hoverY - currY) + currIndex = activeIndex + + Yarrays.forEach((arrY, iAY) => { + const newDiff = Math.abs(hoverY - arrY[j]) + if (newDiff < diffY) { + diffY = newDiff + currIndex = iAY + } + }) + } + + return { + index: currIndex, + j + } + } + + getFirstActiveXArray(Xarrays) { + const w = this.w + let activeIndex = 0 + + let firstActiveSeriesIndex = Xarrays.map((xarr, index) => { + return xarr.length > 0 ? index : -1 + }) + + for (let a = 0; a < firstActiveSeriesIndex.length; a++) { + if ( + firstActiveSeriesIndex[a] !== -1 && + w.globals.collapsedSeriesIndices.indexOf(a) === -1 && + w.globals.ancillaryCollapsedSeriesIndices.indexOf(a) === -1 + ) { + activeIndex = firstActiveSeriesIndex[a] + break + } + } + + return activeIndex + } + + closestInArray(val, arr) { + let curr = arr[0] + let currIndex = null + let diff = Math.abs(val - curr) + + for (let i = 0; i < arr.length; i++) { + let newdiff = Math.abs(val - arr[i]) + if (newdiff < diff) { + diff = newdiff + currIndex = i + } + } + + return { + index: currIndex + } + } + + /** + * When there are multiple series, it is possible to have different x values for each series. + * But it may be possible in those multiple series, that there is same x value for 2 or more + * series. + * @memberof Utils + * @param {int} + * - j = is the inner index of series -> (series[i][j]) + * @return {bool} + */ + isXoverlap(j) { + let w = this.w + let xSameForAllSeriesJArr = [] + + const seriesX = w.globals.seriesX.filter((s) => typeof s[0] !== 'undefined') + + if (seriesX.length > 0) { + for (let i = 0; i < seriesX.length - 1; i++) { + if ( + typeof seriesX[i][j] !== 'undefined' && + typeof seriesX[i + 1][j] !== 'undefined' + ) { + if (seriesX[i][j] !== seriesX[i + 1][j]) { + xSameForAllSeriesJArr.push('unEqual') + } + } + } + } + + if (xSameForAllSeriesJArr.length === 0) { + return true + } + + return false + } + + isInitialSeriesSameLen() { + let sameLen = true + + const initialSeries = this.w.globals.initialSeries + + for (let i = 0; i < initialSeries.length - 1; i++) { + if (initialSeries[i].data.length !== initialSeries[i + 1].data.length) { + sameLen = false + break + } + } + + return sameLen + } + + getBarsHeight(allbars) { + let bars = [...allbars] + const totalHeight = bars.reduce((acc, bar) => acc + bar.getBBox().height, 0) + + return totalHeight + } + + getElMarkers() { + return this.w.globals.dom.baseEl.querySelectorAll( + ' .apexcharts-series-markers' + ) + } + + getAllMarkers() { + // first get all marker parents. This parent class contains series-index + // which helps to sort the markers as they are dynamic + let markersWraps = this.w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-series-markers-wrap' + ) + + markersWraps = [...markersWraps] + markersWraps.sort((a, b) => { + var indexA = Number(a.getAttribute('data:realIndex')) + var indexB = Number(b.getAttribute('data:realIndex')) + return indexB < indexA ? 1 : indexB > indexA ? -1 : 0 + }) + + let markers = [] + markersWraps.forEach((m) => { + markers.push(m.querySelector('.apexcharts-marker')) + }) + + return markers + } + + hasMarkers() { + const markers = this.getElMarkers() + return markers.length > 0 + } + + getElBars() { + return this.w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-boxPlot-series, .apexcharts-rangebar-series' + ) + } + + hasBars() { + const bars = this.getElBars() + return bars.length > 0 + } + + getHoverMarkerSize(index) { + const w = this.w + let hoverSize = w.config.markers.hover.size + + if (hoverSize === undefined) { + hoverSize = + w.globals.markers.size[index] + w.config.markers.hover.sizeOffset + } + return hoverSize + } + + toggleAllTooltipSeriesGroups(state) { + let w = this.w + const ttCtx = this.ttCtx + + if (ttCtx.allTooltipSeriesGroups.length === 0) { + ttCtx.allTooltipSeriesGroups = w.globals.dom.baseEl.querySelectorAll( + '.apexcharts-tooltip-series-group' + ) + } + + let allTooltipSeriesGroups = ttCtx.allTooltipSeriesGroups + for (let i = 0; i < allTooltipSeriesGroups.length; i++) { + if (state === 'enable') { + allTooltipSeriesGroups[i].classList.add('apexcharts-active') + allTooltipSeriesGroups[i].style.display = w.config.tooltip.items.display + } else { + allTooltipSeriesGroups[i].classList.remove('apexcharts-active') + allTooltipSeriesGroups[i].style.display = 'none' + } + } + } +} diff --git a/public/assets/libs/apexcharts/src/svgjs/svg.js b/public/assets/libs/apexcharts/src/svgjs/svg.js new file mode 100644 index 0000000..ca9a884 --- /dev/null +++ b/public/assets/libs/apexcharts/src/svgjs/svg.js @@ -0,0 +1,3752 @@ +/*! +* svg.js - A lightweight library for manipulating and animating SVG. +* @version 2.6.6 +* https://svgdotjs.github.io/ +*/; +(function (root, factory) { + /* istanbul ignore next */ + if (typeof define === 'function' && define.amd) { + define(function () { + return factory(root, root.document) + }) + /* below check fixes #412 */ + } else if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = root.document ? factory(root, root.document) : function (w) { return factory(w, w.document) } + } else { + root.SVG = factory(root, root.document) + } +}(typeof window !== 'undefined' ? window : this, function (window, document) { +// Find global reference - uses 'this' by default when available, +// falls back to 'window' otherwise (for bundlers like Webpack) + var globalRef = (typeof this !== 'undefined') ? this : window + + // The main wrapping element + var SVG = globalRef.SVG = function (element) { + if (SVG.supported) { + element = new SVG.Doc(element) + + if (!SVG.parser.draw) { SVG.prepare() } + + return element + } + } + + // Default namespaces + SVG.ns = 'http://www.w3.org/2000/svg' + SVG.xmlns = 'http://www.w3.org/2000/xmlns/' + SVG.xlink = 'http://www.w3.org/1999/xlink' + SVG.svgjs = 'http://svgjs.dev' + + // Svg support test + SVG.supported = (function () { + return true + // !!document.createElementNS && + // !! document.createElementNS(SVG.ns,'svg').createSVGRect + })() + + // Don't bother to continue if SVG is not supported + if (!SVG.supported) return false + + // Element id sequence + SVG.did = 1000 + + // Get next named element id + SVG.eid = function (name) { + return 'Svgjs' + capitalize(name) + (SVG.did++) + } + + // Method for element creation + SVG.create = function (name) { + // create element + var element = document.createElementNS(this.ns, name) + + // apply unique id + element.setAttribute('id', this.eid(name)) + + return element + } + + // Method for extending objects + SVG.extend = function () { + var modules, methods + + // Get list of modules + modules = [].slice.call(arguments) + + // Get object with extensions + methods = modules.pop() + + for (var i = modules.length - 1; i >= 0; i--) { + if (modules[i]) { + for (var key in methods) { modules[i].prototype[key] = methods[key] } + } + } + + // Make sure SVG.Set inherits any newly added methods + if (SVG.Set && SVG.Set.inherit) { SVG.Set.inherit() } + } + + // Invent new element + SVG.invent = function (config) { + // Create element initializer + var initializer = typeof config.create === 'function' + ? config.create + : function () { + this.constructor.call(this, SVG.create(config.create)) + } + + // Inherit prototype + if (config.inherit) { initializer.prototype = new config.inherit() } + + // Extend with methods + if (config.extend) { SVG.extend(initializer, config.extend) } + + // Attach construct method to parent + if (config.construct) { SVG.extend(config.parent || SVG.Container, config.construct) } + + return initializer + } + + // Adopt existing svg elements + SVG.adopt = function (node) { + // check for presence of node + if (!node) return null + + // make sure a node isn't already adopted + if (node.instance) return node.instance + + // initialize variables + var element + + // adopt with element-specific settings + if (node.nodeName == 'svg') { element = node.parentNode instanceof window.SVGElement ? new SVG.Nested() : new SVG.Doc() } else if (node.nodeName == 'linearGradient') { element = new SVG.Gradient('linear') } else if (node.nodeName == 'radialGradient') { element = new SVG.Gradient('radial') } else if (SVG[capitalize(node.nodeName)]) { element = new SVG[capitalize(node.nodeName)]() } else { element = new SVG.Element(node) } + + // ensure references + element.type = node.nodeName + element.node = node + node.instance = element + + // SVG.Class specific preparations + if (element instanceof SVG.Doc) { element.namespace().defs() } + + // pull svgjs data from the dom (getAttributeNS doesn't work in html5) + element.setData(JSON.parse(node.getAttribute('svgjs:data')) || {}) + + return element + } + + // Initialize parsing element + SVG.prepare = function () { + // Select document body and create invisible svg element + var body = document.getElementsByTagName('body')[0], + draw = (body ? new SVG.Doc(body) : SVG.adopt(document.documentElement).nested()).size(2, 0) + + // Create parser object + SVG.parser = { + body: body || document.documentElement, + draw: draw.style('opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden').node, + poly: draw.polyline().node, + path: draw.path().node, + native: SVG.create('svg') + } + } + + SVG.parser = { + native: SVG.create('svg') + } + + document.addEventListener('DOMContentLoaded', function () { + if (!SVG.parser.draw) { SVG.prepare() } + }, false) + + // Storage for regular expressions + SVG.regex = { + // Parse unit value + numberAndUnit: /^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i, + + // Parse hex value + hex: /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, + + // Parse rgb value + rgb: /rgb\((\d+),(\d+),(\d+)\)/, + + // Parse reference id + reference: /#([a-z0-9\-_]+)/i, + + // splits a transformation chain + transforms: /\)\s*,?\s*/, + + // Whitespace + whitespace: /\s/g, + + // Test hex value + isHex: /^#[a-f0-9]{3,6}$/i, + + // Test rgb value + isRgb: /^rgb\(/, + + // Test css declaration + isCss: /[^:]+:[^;]+;?/, + + // Test for blank string + isBlank: /^(\s+)?$/, + + // Test for numeric string + isNumber: /^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i, + + // Test for percent value + isPercent: /^-?[\d\.]+%$/, + + // Test for image url + isImage: /\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i, + + // split at whitespace and comma + delimiter: /[\s,]+/, + + // The following regex are used to parse the d attribute of a path + + // Matches all hyphens which are not after an exponent + hyphen: /([^e])\-/gi, + + // Replaces and tests for all path letters + pathLetters: /[MLHVCSQTAZ]/gi, + + // yes we need this one, too + isPathLetter: /[MLHVCSQTAZ]/i, + + // matches 0.154.23.45 + numbersWithDots: /((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi, + + // matches . + dots: /\./g + } + + SVG.utils = { + // Map function + map: function (array, block) { + var il = array.length, + result = [] + + for (var i = 0; i < il; i++) { result.push(block(array[i])) } + + return result + }, + + // Filter function + filter: function (array, block) { + var il = array.length, + result = [] + + for (var i = 0; i < il; i++) { + if (block(array[i])) { result.push(array[i]) } + } + + return result + }, + + filterSVGElements: function (nodes) { + return this.filter(nodes, function (el) { return el instanceof window.SVGElement }) + } + + } + + SVG.defaults = { + // Default attribute values + attrs: { + // fill and stroke + 'fill-opacity': 1, + 'stroke-opacity': 1, + 'stroke-width': 0, + 'stroke-linejoin': 'miter', + 'stroke-linecap': 'butt', + fill: '#000000', + stroke: '#000000', + opacity: 1, + // position + x: 0, + y: 0, + cx: 0, + cy: 0, + // size + width: 0, + height: 0, + // radius + r: 0, + rx: 0, + ry: 0, + // gradient + offset: 0, + 'stop-opacity': 1, + 'stop-color': '#000000', + // text + 'font-size': 16, + 'font-family': 'Helvetica, Arial, sans-serif', + 'text-anchor': 'start' + } + + } + // Module for color convertions + SVG.Color = function (color) { + var match + + // initialize defaults + this.r = 0 + this.g = 0 + this.b = 0 + + if (!color) return + + // parse color + if (typeof color === 'string') { + if (SVG.regex.isRgb.test(color)) { + // get rgb values + match = SVG.regex.rgb.exec(color.replace(SVG.regex.whitespace, '')) + + // parse numeric values + this.r = parseInt(match[1]) + this.g = parseInt(match[2]) + this.b = parseInt(match[3]) + } else if (SVG.regex.isHex.test(color)) { + // get hex values + match = SVG.regex.hex.exec(fullHex(color)) + + // parse numeric values + this.r = parseInt(match[1], 16) + this.g = parseInt(match[2], 16) + this.b = parseInt(match[3], 16) + } + } else if (typeof color === 'object') { + this.r = color.r + this.g = color.g + this.b = color.b + } + } + + SVG.extend(SVG.Color, { + // Default to hex conversion + toString: function () { + return this.toHex() + }, + // Build hex value + toHex: function () { + return '#' + + compToHex(this.r) + + compToHex(this.g) + + compToHex(this.b) + }, + // Build rgb value + toRgb: function () { + return 'rgb(' + [this.r, this.g, this.b].join() + ')' + }, + // Calculate true brightness + brightness: function () { + return (this.r / 255 * 0.30) + + (this.g / 255 * 0.59) + + (this.b / 255 * 0.11) + }, + // Make color morphable + morph: function (color) { + this.destination = new SVG.Color(color) + + return this + }, + // Get morphed color at given position + at: function (pos) { + // make sure a destination is defined + if (!this.destination) return this + + // normalise pos + pos = pos < 0 ? 0 : pos > 1 ? 1 : pos + + // generate morphed color + return new SVG.Color({ + r: ~~(this.r + (this.destination.r - this.r) * pos), + g: ~~(this.g + (this.destination.g - this.g) * pos), + b: ~~(this.b + (this.destination.b - this.b) * pos) + }) + } + + }) + + // Testers + + // Test if given value is a color string + SVG.Color.test = function (color) { + color += '' + return SVG.regex.isHex.test(color) || + SVG.regex.isRgb.test(color) + } + + // Test if given value is a rgb object + SVG.Color.isRgb = function (color) { + return color && typeof color.r === 'number' && + typeof color.g === 'number' && + typeof color.b === 'number' + } + + // Test if given value is a color + SVG.Color.isColor = function (color) { + return SVG.Color.isRgb(color) || SVG.Color.test(color) + } + // Module for array conversion + SVG.Array = function (array, fallback) { + array = (array || []).valueOf() + + // if array is empty and fallback is provided, use fallback + if (array.length == 0 && fallback) { array = fallback.valueOf() } + + // parse array + this.value = this.parse(array) + } + + SVG.extend(SVG.Array, { + + // Convert array to string + toString: function () { + return this.value.join(' ') + }, + // Real value + valueOf: function () { + return this.value + }, + // Parse whitespace separated string + parse: function (array) { + array = array.valueOf() + + // if already is an array, no need to parse it + if (Array.isArray(array)) return array + + return this.split(array) + }, + + }) + // Poly points array + SVG.PointArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [[0, 0]]) + } + + // Inherit from SVG.Array + SVG.PointArray.prototype = new SVG.Array() + SVG.PointArray.prototype.constructor = SVG.PointArray + + + var pathHandlers = { + M: function (c, p, p0) { + p.x = p0.x = c[0] + p.y = p0.y = c[1] + + return ['M', p.x, p.y] + }, + L: function (c, p) { + p.x = c[0] + p.y = c[1] + return ['L', c[0], c[1]] + }, + H: function (c, p) { + p.x = c[0] + return ['H', c[0]] + }, + V: function (c, p) { + p.y = c[0] + return ['V', c[0]] + }, + C: function (c, p) { + p.x = c[4] + p.y = c[5] + return ['C', c[0], c[1], c[2], c[3], c[4], c[5]] + }, + Q: function (c, p) { + p.x = c[2] + p.y = c[3] + return ['Q', c[0], c[1], c[2], c[3]] + }, + Z: function (c, p, p0) { + p.x = p0.x + p.y = p0.y + return ['Z'] + }, + } + + var mlhvqtcsa = 'mlhvqtcsaz'.split('') + + for (var i = 0, il = mlhvqtcsa.length; i < il; ++i) { + pathHandlers[mlhvqtcsa[i]] = (function (i) { + return function (c, p, p0) { + if (i == 'H') c[0] = c[0] + p.x + else if (i == 'V') c[0] = c[0] + p.y + else if (i == 'A') { + c[5] = c[5] + p.x, + c[6] = c[6] + p.y + } else { + for (var j = 0, jl = c.length; j < jl; ++j) { + c[j] = c[j] + (j % 2 ? p.y : p.x) + } + } + + if(pathHandlers && typeof pathHandlers[i] === 'function') { + // this check fixes jest unit tests + return pathHandlers[i](c, p, p0) + } + } + })(mlhvqtcsa[i].toUpperCase()) + } + + // Path points array + SVG.PathArray = function (array, fallback) { + SVG.Array.call(this, array, fallback || [['M', 0, 0]]) + } + + // Inherit from SVG.Array + SVG.PathArray.prototype = new SVG.Array() + SVG.PathArray.prototype.constructor = SVG.PathArray + + SVG.extend(SVG.PathArray, { + // Convert array to string + toString: function () { + return arrayToString(this.value) + }, + // Move path string + move: function (x, y) { + // get bounding box of current situation + var box = this.bbox() + + // get relative offset + x -= box.x + y -= box.y + + return this + }, + // Get morphed path array at given position + at: function (pos) { + // make sure a destination is defined + if (!this.destination) return this + + var sourceArray = this.value, + destinationArray = this.destination.value, + array = [], pathArray = new SVG.PathArray(), + il, jl + + // Animate has specified in the SVG spec + // See: https://www.w3.org/TR/SVG11/paths.html#PathElement + for (var i = 0, il = sourceArray.length; i < il; i++) { + array[i] = [sourceArray[i][0]] + for (var j = 1, jl = sourceArray[i].length; j < jl; j++) { + array[i][j] = sourceArray[i][j] + (destinationArray[i][j] - sourceArray[i][j]) * pos + } + // For the two flags of the elliptical arc command, the SVG spec say: + // Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true + // Elliptical arc command as an array followed by corresponding indexes: + // ['A', rx, ry, x-axis-rotation, large-arc-flag, sweep-flag, x, y] + // 0 1 2 3 4 5 6 7 + if (array[i][0] === 'A') { + array[i][4] = +(array[i][4] != 0) + array[i][5] = +(array[i][5] != 0) + } + } + + // Directly modify the value of a path array, this is done this way for performance + pathArray.value = array + return pathArray + }, + // Absolutize and parse path to array + parse: function (array) { + // if it's already a patharray, no need to parse it + if (array instanceof SVG.PathArray) return array.valueOf() + + // prepare for parsing + var i, x0, y0, s, seg, arr, + x = 0, + y = 0, + paramCnt = { 'M': 2, 'L': 2, 'H': 1, 'V': 1, 'C': 6, 'S': 4, 'Q': 4, 'T': 2, 'A': 7, 'Z': 0 } + + if (typeof array === 'string') { + array = array + .replace(SVG.regex.numbersWithDots, pathRegReplace) // convert 45.123.123 to 45.123 .123 + .replace(SVG.regex.pathLetters, ' $& ') // put some room between letters and numbers + .replace(SVG.regex.hyphen, '$1 -') // add space before hyphen + .trim() // trim + .split(SVG.regex.delimiter) // split into array + } else { + array = array.reduce(function (prev, curr) { + return [].concat.call(prev, curr) + }, []) + } + + // array now is an array containing all parts of a path e.g. ['M', '0', '0', 'L', '30', '30' ...] + var arr = [], + p = new SVG.Point(), + p0 = new SVG.Point(), + index = 0, + len = array.length + + do { + // Test if we have a path letter + if (SVG.regex.isPathLetter.test(array[index])) { + s = array[index] + ++index + // If last letter was a move command and we got no new, it defaults to [L]ine + } else if (s == 'M') { + s = 'L' + } else if (s == 'm') { + s = 'l' + } + + arr.push(pathHandlers[s].call(null, + array.slice(index, (index = index + paramCnt[s.toUpperCase()])).map(parseFloat), + p, p0 + ) + ) + } while (len > index) + + return arr + }, + // Get bounding box of path + bbox: function () { + if (!SVG.parser.draw) { SVG.prepare() } + SVG.parser.path.setAttribute('d', this.toString()) + + return SVG.parser.path.getBBox() + } + + }) + + // Module for unit convertions + SVG.Number = SVG.invent({ + // Initialize + create: function (value, unit) { + // initialize defaults + this.value = 0 + this.unit = unit || '' + + // parse value + if (typeof value === 'number') { + // ensure a valid numeric value + this.value = isNaN(value) ? 0 : !isFinite(value) ? (value < 0 ? -3.4e+38 : +3.4e+38) : value + } else if (typeof value === 'string') { + unit = value.match(SVG.regex.numberAndUnit) + + if (unit) { + // make value numeric + this.value = parseFloat(unit[1]) + + // normalize + if (unit[5] == '%') { this.value /= 100 } else if (unit[5] == 's') { this.value *= 1000 } + + // store unit + this.unit = unit[5] + } + } else { + if (value instanceof SVG.Number) { + this.value = value.valueOf() + this.unit = value.unit + } + } + }, + // Add methods + extend: { + // Stringalize + toString: function () { + return ( + this.unit == '%' + ? ~~(this.value * 1e8) / 1e6 + : this.unit == 's' + ? this.value / 1e3 + : this.value + ) + this.unit + }, + toJSON: function () { + return this.toString() + }, // Convert to primitive + valueOf: function () { + return this.value + }, + // Add number + plus: function (number) { + number = new SVG.Number(number) + return new SVG.Number(this + number, this.unit || number.unit) + }, + // Subtract number + minus: function (number) { + number = new SVG.Number(number) + return new SVG.Number(this - number, this.unit || number.unit) + }, + // Multiply number + times: function (number) { + number = new SVG.Number(number) + return new SVG.Number(this * number, this.unit || number.unit) + }, + // Divide number + divide: function (number) { + number = new SVG.Number(number) + return new SVG.Number(this / number, this.unit || number.unit) + }, + // Convert to different unit + to: function (unit) { + var number = new SVG.Number(this) + + if (typeof unit === 'string') { number.unit = unit } + + return number + }, + // Make number morphable + morph: function (number) { + this.destination = new SVG.Number(number) + + if (number.relative) { + this.destination.value += this.value + } + + return this + }, + // Get morphed number at given position + at: function (pos) { + // Make sure a destination is defined + if (!this.destination) return this + + // Generate new morphed number + return new SVG.Number(this.destination) + .minus(this) + .times(pos) + .plus(this) + } + + } + }) + + SVG.Element = SVG.invent({ + // Initialize node + create: function (node) { + // make stroke value accessible dynamically + this._stroke = SVG.defaults.attrs.stroke + this._event = null + + // initialize data object + this.dom = {} + + // create circular reference + if (this.node = node) { + this.type = node.nodeName + this.node.instance = this + + // store current attribute value + this._stroke = node.getAttribute('stroke') || this._stroke + } + }, + + // Add class methods + extend: { + // Move over x-axis + x: function (x) { + return this.attr('x', x) + }, + // Move over y-axis + y: function (y) { + return this.attr('y', y) + }, + // Move by center over x-axis + cx: function (x) { + return x == null ? this.x() + this.width() / 2 : this.x(x - this.width() / 2) + }, + // Move by center over y-axis + cy: function (y) { + return y == null ? this.y() + this.height() / 2 : this.y(y - this.height() / 2) + }, + // Move element to given x and y values + move: function (x, y) { + return this.x(x).y(y) + }, + // Move element by its center + center: function (x, y) { + return this.cx(x).cy(y) + }, + // Set width of element + width: function (width) { + return this.attr('width', width) + }, + // Set height of element + height: function (height) { + return this.attr('height', height) + }, + // Set element size to given width and height + size: function (width, height) { + var p = proportionalSize(this, width, height) + + return this + .width(new SVG.Number(p.width)) + .height(new SVG.Number(p.height)) + }, + // Clone element + clone: function (parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom() + + // clone element and assign new id + var clone = assignNewId(this.node.cloneNode(true)) + + // insert the clone in the given parent or after myself + if (parent) parent.add(clone) + else this.after(clone) + + return clone + }, + // Remove element + remove: function () { + if (this.parent()) { this.parent().removeElement(this) } + + return this + }, + // Replace element + replace: function (element) { + this.after(element).remove() + + return element + }, + // Add element to given container and return self + addTo: function (parent) { + return parent.put(this) + }, + // Add element to given container and return container + putIn: function (parent) { + return parent.add(this) + }, + // Get / set id + id: function (id) { + return this.attr('id', id) + }, + + // Show element + show: function () { + return this.style('display', '') + }, + // Hide element + hide: function () { + return this.style('display', 'none') + }, + // Is element visible? + visible: function () { + return this.style('display') != 'none' + }, + // Return id on string conversion + toString: function () { + return this.attr('id') + }, + // Return array of classes on the node + classes: function () { + var attr = this.attr('class') + + return attr == null ? [] : attr.trim().split(SVG.regex.delimiter) + }, + // Return true if class exists on the node, false otherwise + hasClass: function (name) { + return this.classes().indexOf(name) != -1 + }, + // Add class to the node + addClass: function (name) { + if (!this.hasClass(name)) { + var array = this.classes() + array.push(name) + this.attr('class', array.join(' ')) + } + + return this + }, + // Remove class from the node + removeClass: function (name) { + if (this.hasClass(name)) { + this.attr('class', this.classes().filter(function (c) { + return c != name + }).join(' ')) + } + + return this + }, + // Toggle the presence of a class on the node + toggleClass: function (name) { + return this.hasClass(name) ? this.removeClass(name) : this.addClass(name) + }, + // Get referenced element form attribute value + reference: function (attr) { + return SVG.get(this.attr(attr)) + }, + // Returns the parent element instance + parent: function (type) { + var parent = this + + // check for parent + if (!parent.node.parentNode) return null + + // get parent element + parent = SVG.adopt(parent.node.parentNode) + + if (!type) return parent + + // loop trough ancestors if type is given + while (parent && parent.node instanceof window.SVGElement) { + if (typeof type === 'string' ? parent.matches(type) : parent instanceof type) return parent + if (!parent.node.parentNode || parent.node.parentNode.nodeName == '#document') return null // #759, #720 + parent = SVG.adopt(parent.node.parentNode) + } + }, + // Get parent document + doc: function () { + return this instanceof SVG.Doc ? this : this.parent(SVG.Doc) + }, + // return array of all ancestors of given type up to the root svg + parents: function (type) { + var parents = [], parent = this + + do { + parent = parent.parent(type) + if (!parent || !parent.node) break + + parents.push(parent) + } while (parent.parent) + + return parents + }, + // matches the element vs a css selector + matches: function (selector) { + return matches(this.node, selector) + }, + // Returns the svg node to call native svg methods on it + native: function () { + return this.node + }, + // Import raw svg + svg: function (svg) { + // create temporary holder + var well = document.createElement('svg') + + // act as a setter if svg is given + if (svg && this instanceof SVG.Parent) { + // dump raw svg + well.innerHTML = '' + svg.replace(/\n/, '').replace(/<([\w:-]+)([^<]+?)\/>/g, '<$1$2>') + '' + + // transplant nodes + for (var i = 0, il = well.firstChild.childNodes.length; i < il; i++) { this.node.appendChild(well.firstChild.firstChild) } + + // otherwise act as a getter + } else { + // create a wrapping svg element in case of partial content + well.appendChild(svg = document.createElement('svg')) + + // write svgjs data to the dom + this.writeDataToDom() + + // insert a copy of this node + svg.appendChild(this.node.cloneNode(true)) + + // return target element + return well.innerHTML.replace(/^/, '').replace(/<\/svg>$/, '') + } + + return this + }, + + // write svgjs data to the dom + writeDataToDom: function () { + // dump variables recursively + if (this.each || this.lines) { + var fn = this.each ? this : this.lines() + fn.each(function () { + this.writeDataToDom() + }) + } + + // remove previously set data + this.node.removeAttribute('svgjs:data') + + if (Object.keys(this.dom).length) { this.node.setAttribute('svgjs:data', JSON.stringify(this.dom)) } // see #428 + + return this + }, + // set given data to the elements data property + setData: function (o) { + this.dom = o + return this + }, + is: function (obj) { + return is(this, obj) + } + } + }) + + SVG.easing = { + '-': function (pos) { return pos }, + '<>': function (pos) { return -Math.cos(pos * Math.PI) / 2 + 0.5 }, + '>': function (pos) { return Math.sin(pos * Math.PI / 2) }, + '<': function (pos) { return -Math.cos(pos * Math.PI / 2) + 1 } + } + + SVG.morph = function (pos) { + return function (from, to) { + return new SVG.MorphObj(from, to).at(pos) + } + } + + SVG.Situation = SVG.invent({ + + create: function (o) { + this.init = false + this.reversed = false + this.reversing = false + + this.duration = new SVG.Number(o.duration).valueOf() + this.delay = new SVG.Number(o.delay).valueOf() + + this.start = +new Date() + this.delay + this.finish = this.start + this.duration + this.ease = o.ease + + // this.loop is incremented from 0 to this.loops + // it is also incremented when in an infinite loop (when this.loops is true) + this.loop = 0 + this.loops = false + + this.animations = { + // functionToCall: [list of morphable objects] + // e.g. move: [SVG.Number, SVG.Number] + } + + this.attrs = { + // holds all attributes which are not represented from a function svg.js provides + // e.g. someAttr: SVG.Number + } + + this.styles = { + // holds all styles which should be animated + // e.g. fill-color: SVG.Color + } + + this.transforms = [ + // holds all transformations as transformation objects + // e.g. [SVG.Rotate, SVG.Translate, SVG.Matrix] + ] + + this.once = { + // functions to fire at a specific position + // e.g. "0.5": function foo(){} + } + } + + }) + + SVG.FX = SVG.invent({ + + create: function (element) { + this._target = element + this.situations = [] + this.active = false + this.situation = null + this.paused = false + this.lastPos = 0 + this.pos = 0 + // The absolute position of an animation is its position in the context of its complete duration (including delay and loops) + // When performing a delay, absPos is below 0 and when performing a loop, its value is above 1 + this.absPos = 0 + this._speed = 1 + }, + + extend: { + + /** + * sets or returns the target of this animation + * @param o object || number In case of Object it holds all parameters. In case of number its the duration of the animation + * @param ease function || string Function which should be used for easing or easing keyword + * @param delay Number indicating the delay before the animation starts + * @return target || this + */ + animate: function (o, ease, delay) { + if (typeof o === 'object') { + ease = o.ease + delay = o.delay + o = o.duration + } + + var situation = new SVG.Situation({ + duration: o || 1000, + delay: delay || 0, + ease: SVG.easing[ease || '-'] || ease + }) + + this.queue(situation) + + return this + }, + + /** + * sets a delay before the next element of the queue is called + * @param delay Duration of delay in milliseconds + * @return this.target() + */ + + + /** + * sets or returns the target of this animation + * @param null || target SVG.Element which should be set as new target + * @return target || this + */ + target: function (target) { + if (target && target instanceof SVG.Element) { + this._target = target + return this + } + + return this._target + }, + + // returns the absolute position at a given time + timeToAbsPos: function (timestamp) { + return (timestamp - this.situation.start) / (this.situation.duration / this._speed) + }, + + // returns the timestamp from a given absolute positon + absPosToTime: function (absPos) { + return this.situation.duration / this._speed * absPos + this.situation.start + }, + + // starts the animationloop + startAnimFrame: function () { + this.stopAnimFrame() + this.animationFrame = window.requestAnimationFrame(function () { this.step() }.bind(this)) + }, + + // cancels the animationframe + stopAnimFrame: function () { + window.cancelAnimationFrame(this.animationFrame) + }, + + // kicks off the animation - only does something when the queue is currently not active and at least one situation is set + start: function () { + // dont start if already started + if (!this.active && this.situation) { + this.active = true + this.startCurrent() + } + + return this + }, + + // start the current situation + startCurrent: function () { + this.situation.start = +new Date() + this.situation.delay / this._speed + this.situation.finish = this.situation.start + this.situation.duration / this._speed + return this.initAnimations().step() + }, + + /** + * adds a function / Situation to the animation queue + * @param fn function / situation to add + * @return this + */ + queue: function (fn) { + if (typeof fn === 'function' || fn instanceof SVG.Situation) { this.situations.push(fn) } + + if (!this.situation) this.situation = this.situations.shift() + + return this + }, + + /** + * pulls next element from the queue and execute it + * @return this + */ + dequeue: function () { + // stop current animation + this.stop() + + // get next animation from queue + this.situation = this.situations.shift() + + if (this.situation) { + if (this.situation instanceof SVG.Situation) { + this.start() + } else { + // If it is not a SVG.Situation, then it is a function, we execute it + this.situation.call(this) + } + } + + return this + }, + + // updates all animations to the current state of the element + // this is important when one property could be changed from another property + initAnimations: function () { + var source + var s = this.situation + + if (s.init) return this + + for (var i in s.animations) { + source = this.target()[i]() + + if (!Array.isArray(source)) { + source = [source] + } + + if (!Array.isArray(s.animations[i])) { + s.animations[i] = [s.animations[i]] + } + + // if(s.animations[i].length > source.length) { + // source.concat = source.concat(s.animations[i].slice(source.length, s.animations[i].length)) + // } + + for (var j = source.length; j--;) { + // The condition is because some methods return a normal number instead + // of a SVG.Number + if (s.animations[i][j] instanceof SVG.Number) { source[j] = new SVG.Number(source[j]) } + + s.animations[i][j] = source[j].morph(s.animations[i][j]) + } + } + + for (var i in s.attrs) { + s.attrs[i] = new SVG.MorphObj(this.target().attr(i), s.attrs[i]) + } + + for (var i in s.styles) { + s.styles[i] = new SVG.MorphObj(this.target().style(i), s.styles[i]) + } + + s.initialTransformation = this.target().matrixify() + + s.init = true + return this + }, + clearQueue: function () { + this.situations = [] + return this + }, + clearCurrent: function () { + this.situation = null + return this + }, + /** stops the animation immediately + * @param jumpToEnd A Boolean indicating whether to complete the current animation immediately. + * @param clearQueue A Boolean indicating whether to remove queued animation as well. + * @return this + */ + stop: function (jumpToEnd, clearQueue) { + var active = this.active + this.active = false + + if (clearQueue) { + this.clearQueue() + } + + if (jumpToEnd && this.situation) { + // initialize the situation if it was not + !active && this.startCurrent() + this.atEnd() + } + + this.stopAnimFrame() + + return this.clearCurrent() + }, + + + + after: function (fn) { + var c = this.last(), + wrapper = function wrapper (e) { + if (e.detail.situation == c) { + fn.call(this, c) + this.off('finished.fx', wrapper) // prevent memory leak + } + } + + this.target().on('finished.fx', wrapper) + + return this._callStart() + }, + // adds a callback which is called whenever one animation step is performed + during: function (fn) { + var c = this.last(), + wrapper = function (e) { + if (e.detail.situation == c) { + fn.call(this, e.detail.pos, SVG.morph(e.detail.pos), e.detail.eased, c) + } + } + + // see above + this.target().off('during.fx', wrapper).on('during.fx', wrapper) + + this.after(function () { + this.off('during.fx', wrapper) + }) + + return this._callStart() + }, + + // calls after ALL animations in the queue are finished + afterAll: function (fn) { + var wrapper = function wrapper (e) { + fn.call(this) + this.off('allfinished.fx', wrapper) + } + + // see above + this.target().off('allfinished.fx', wrapper).on('allfinished.fx', wrapper) + + return this._callStart() + }, + + + last: function () { + return this.situations.length ? this.situations[this.situations.length - 1] : this.situation + }, + + // adds one property to the animations + add: function (method, args, type) { + this.last()[type || 'animations'][method] = args + return this._callStart() + }, + + /** perform one step of the animation + * @param ignoreTime Boolean indicating whether to ignore time and use position directly or recalculate position based on time + * @return this + */ + step: function (ignoreTime) { + // convert current time to an absolute position + if (!ignoreTime) this.absPos = this.timeToAbsPos(+new Date()) + + // This part convert an absolute position to a position + if (this.situation.loops !== false) { + var absPos, absPosInt, lastLoop + + // If the absolute position is below 0, we just treat it as if it was 0 + absPos = Math.max(this.absPos, 0) + absPosInt = Math.floor(absPos) + + if (this.situation.loops === true || absPosInt < this.situation.loops) { + this.pos = absPos - absPosInt + lastLoop = this.situation.loop + this.situation.loop = absPosInt + } else { + this.absPos = this.situation.loops + this.pos = 1 + // The -1 here is because we don't want to toggle reversed when all the loops have been completed + lastLoop = this.situation.loop - 1 + this.situation.loop = this.situation.loops + } + + if (this.situation.reversing) { + // Toggle reversed if an odd number of loops as occured since the last call of step + this.situation.reversed = this.situation.reversed != Boolean((this.situation.loop - lastLoop) % 2) + } + } else { + // If there are no loop, the absolute position must not be above 1 + this.absPos = Math.min(this.absPos, 1) + this.pos = this.absPos + } + + // while the absolute position can be below 0, the position must not be below 0 + if (this.pos < 0) this.pos = 0 + + if (this.situation.reversed) this.pos = 1 - this.pos + + // apply easing + var eased = this.situation.ease(this.pos) + + // call once-callbacks + for (var i in this.situation.once) { + if (i > this.lastPos && i <= eased) { + this.situation.once[i].call(this.target(), this.pos, eased) + delete this.situation.once[i] + } + } + + // fire during callback with position, eased position and current situation as parameter + if (this.active) this.target().fire('during', {pos: this.pos, eased: eased, fx: this, situation: this.situation}) + + // the user may call stop or finish in the during callback + // so make sure that we still have a valid situation + if (!this.situation) { + return this + } + + // apply the actual animation to every property + this.eachAt() + + // do final code when situation is finished + if ((this.pos == 1 && !this.situation.reversed) || (this.situation.reversed && this.pos == 0)) { + // stop animation callback + this.stopAnimFrame() + + // fire finished callback with current situation as parameter + this.target().fire('finished', {fx: this, situation: this.situation}) + + if (!this.situations.length) { + this.target().fire('allfinished') + + // Recheck the length since the user may call animate in the afterAll callback + if (!this.situations.length) { + this.target().off('.fx') // there shouldnt be any binding left, but to make sure... + this.active = false + } + } + + // start next animation + if (this.active) this.dequeue() + else this.clearCurrent() + } else if (!this.paused && this.active) { + // we continue animating when we are not at the end + this.startAnimFrame() + } + + // save last eased position for once callback triggering + this.lastPos = eased + return this + }, + + // calculates the step for every property and calls block with it + eachAt: function () { + var len, at, self = this, target = this.target(), s = this.situation + + // apply animations which can be called trough a method + for (var i in s.animations) { + at = [].concat(s.animations[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el + }) + + target[i].apply(target, at) + } + + // apply animation which has to be applied with attr() + for (var i in s.attrs) { + at = [i].concat(s.attrs[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el + }) + + target.attr.apply(target, at) + } + + // apply animation which has to be applied with style() + for (var i in s.styles) { + at = [i].concat(s.styles[i]).map(function (el) { + return typeof el !== 'string' && el.at ? el.at(s.ease(self.pos), self.pos) : el + }) + + target.style.apply(target, at) + } + + // animate initialTransformation which has to be chained + if (s.transforms.length) { + // get initial initialTransformation + at = s.initialTransformation + for (var i = 0, len = s.transforms.length; i < len; i++) { + // get next transformation in chain + var a = s.transforms[i] + + // multiply matrix directly + if (a instanceof SVG.Matrix) { + if (a.relative) { + at = at.multiply(new SVG.Matrix().morph(a).at(s.ease(this.pos))) + } else { + at = at.morph(a).at(s.ease(this.pos)) + } + continue + } + + // when transformation is absolute we have to reset the needed transformation first + if (!a.relative) { a.undo(at.extract()) } + + // and reapply it after + at = at.multiply(a.at(s.ease(this.pos))) + } + + // set new matrix on element + target.matrix(at) + } + + return this + }, + + // adds an once-callback which is called at a specific position and never again + once: function (pos, fn, isEased) { + var c = this.last() + if (!isEased) pos = c.ease(pos) + + c.once[pos] = fn + + return this + }, + + _callStart: function () { + setTimeout(function () { this.start() }.bind(this), 0) + return this + } + + }, + + parent: SVG.Element, + + // Add method to parent elements + construct: { + // Get fx module or create a new one, then animate with given duration and ease + animate: function (o, ease, delay) { + return (this.fx || (this.fx = new SVG.FX(this))).animate(o, ease, delay) + }, + delay: function (delay) { + return (this.fx || (this.fx = new SVG.FX(this))).delay(delay) + }, + stop: function (jumpToEnd, clearQueue) { + if (this.fx) { this.fx.stop(jumpToEnd, clearQueue) } + + return this + }, + finish: function () { + if (this.fx) { this.fx.finish() } + + return this + }, + + } + + }) + + // MorphObj is used whenever no morphable object is given + SVG.MorphObj = SVG.invent({ + + create: function (from, to) { + // prepare color for morphing + if (SVG.Color.isColor(to)) return new SVG.Color(from).morph(to) + // check if we have a list of values + if (SVG.regex.delimiter.test(from)) { + // prepare path for morphing + if (SVG.regex.pathLetters.test(from)) return new SVG.PathArray(from).morph(to) + // prepare value list for morphing + else return new SVG.Array(from).morph(to) + } + // prepare number for morphing + if (SVG.regex.numberAndUnit.test(to)) return new SVG.Number(from).morph(to) + + // prepare for plain morphing + this.value = from + this.destination = to + }, + + extend: { + at: function (pos, real) { + return real < 1 ? this.value : this.destination + }, + + valueOf: function () { + return this.value + } + } + + }) + + SVG.extend(SVG.FX, { + // Add animatable attributes + attr: function (a, v, relative) { + // apply attributes individually + if (typeof a === 'object') { + for (var key in a) { this.attr(key, a[key]) } + } else { + this.add(a, v, 'attrs') + } + + return this + }, + // Add animatable plot + plot: function (a, b, c, d) { + // Lines can be plotted with 4 arguments + if (arguments.length == 4) { + return this.plot([a, b, c, d]) + } + + return this.add('plot', new (this.target().morphArray)(a)) + }, + }) + + SVG.Box = SVG.invent({ + create: function (x, y, width, height) { + if (typeof x === 'object' && !(x instanceof SVG.Element)) { + // chromes getBoundingClientRect has no x and y property + return SVG.Box.call(this, x.left != null ? x.left : x.x, x.top != null ? x.top : x.y, x.width, x.height) + } else if (arguments.length == 4) { + this.x = x + this.y = y + this.width = width + this.height = height + } + + // add center, right, bottom... + fullBox(this) + } + }) + + SVG.BBox = SVG.invent({ + // Initialize + create: function (element) { + SVG.Box.apply(this, [].slice.call(arguments)) + + // get values if element is given + if (element instanceof SVG.Element) { + var box + + // yes this is ugly, but Firefox can be a pain when it comes to elements that are not yet rendered + try { + if (!document.documentElement.contains) { + // This is IE - it does not support contains() for top-level SVGs + var topParent = element.node + while (topParent.parentNode) { + topParent = topParent.parentNode + } + if (topParent != document) throw new Error('Element not in the dom') + } else { + // the element is NOT in the dom, throw error + // disabling the check below which fixes issue #76 + // if (!document.documentElement.contains(element.node)) throw new Exception('Element not in the dom') + } + + // find native bbox + box = element.node.getBBox() + } catch (e) { + if (element instanceof SVG.Shape) { + if (!SVG.parser.draw) { + // fixes apexcharts/vue-apexcharts #14 + SVG.prepare() + } + var clone = element.clone(SVG.parser.draw.instance).show() + + if(clone && clone.node && typeof clone.node.getBBox === 'function') { + // this check fixes jest unit tests + box = clone.node.getBBox() + } + if(clone && typeof clone.remove === 'function') { + clone.remove() + } + } else { + box = { + x: element.node.clientLeft, + y: element.node.clientTop, + width: element.node.clientWidth, + height: element.node.clientHeight + } + } + } + + SVG.Box.call(this, box) + } + }, + + // Define ancestor + inherit: SVG.Box, + + // Define Parent + parent: SVG.Element, + + // Constructor + construct: { + // Get bounding box + bbox: function () { + return new SVG.BBox(this) + } + } + + }) + + SVG.BBox.prototype.constructor = SVG.BBox + + + SVG.Matrix = SVG.invent({ + // Initialize + create: function (source) { + var base = arrayToMatrix([1, 0, 0, 1, 0, 0]) + + // ensure source as object + source = source === null ? base : source instanceof SVG.Element + ? source.matrixify() + : typeof source === 'string' + ? arrayToMatrix(source.split(SVG.regex.delimiter).map(parseFloat)) + : arguments.length == 6 + ? arrayToMatrix([].slice.call(arguments)) + : Array.isArray(source) + ? arrayToMatrix(source) + : source && typeof source === 'object' + ? source : base + + // merge source + for (var i = abcdef.length - 1; i >= 0; --i) { + this[abcdef[i]] = source[abcdef[i]] != null + ? source[abcdef[i]] : base[abcdef[i]] + } + }, + + // Add methods + extend: { + // Extract individual transformations + extract: function () { + // find delta transform points + var px = deltaTransformPoint(this, 0, 1), + py = deltaTransformPoint(this, 1, 0), + skewX = 180 / Math.PI * Math.atan2(px.y, px.x) - 90 + + return { + // translation + x: this.e, + y: this.f, + transformedX: (this.e * Math.cos(skewX * Math.PI / 180) + this.f * Math.sin(skewX * Math.PI / 180)) / Math.sqrt(this.a * this.a + this.b * this.b), + transformedY: (this.f * Math.cos(skewX * Math.PI / 180) + this.e * Math.sin(-skewX * Math.PI / 180)) / Math.sqrt(this.c * this.c + this.d * this.d), + + // rotation + rotation: skewX, + a: this.a, + b: this.b, + c: this.c, + d: this.d, + e: this.e, + f: this.f, + matrix: new SVG.Matrix(this) + } + }, + // Clone matrix + clone: function () { + return new SVG.Matrix(this) + }, + // Morph one matrix into another + morph: function (matrix) { + // store new destination + this.destination = new SVG.Matrix(matrix) + + return this + }, + + // Multiplies by given matrix + multiply: function (matrix) { + return new SVG.Matrix(this.native().multiply(parseMatrix(matrix).native())) + }, + // Inverses matrix + inverse: function () { + return new SVG.Matrix(this.native().inverse()) + }, + // Translate matrix + translate: function (x, y) { + return new SVG.Matrix(this.native().translate(x || 0, y || 0)) + }, + + + // Convert to native SVGMatrix + native: function () { + // create new matrix + var matrix = SVG.parser.native.createSVGMatrix() + + // update with current values + for (var i = abcdef.length - 1; i >= 0; i--) { matrix[abcdef[i]] = this[abcdef[i]] } + + return matrix + }, + // Convert matrix to string + toString: function () { + // Construct the matrix directly, avoid values that are too small + return 'matrix(' + float32String(this.a) + ',' + float32String(this.b) + + ',' + float32String(this.c) + ',' + float32String(this.d) + + ',' + float32String(this.e) + ',' + float32String(this.f) + + ')' + } + }, + + // Define parent + parent: SVG.Element, + + // Add parent method + construct: { + // Get current matrix + ctm: function () { + return new SVG.Matrix(this.node.getCTM()) + }, + // Get current screen matrix + screenCTM: function () { + /* https://bugzilla.mozilla.org/show_bug.cgi?id=1344537 + This is needed because FF does not return the transformation matrix + for the inner coordinate system when getScreenCTM() is called on nested svgs. + However all other Browsers do that */ + if (this instanceof SVG.Nested) { + var rect = this.rect(1, 1) + var m = rect.node.getScreenCTM() + rect.remove() + return new SVG.Matrix(m) + } + return new SVG.Matrix(this.node.getScreenCTM()) + } + + } + + }) + + SVG.Point = SVG.invent({ + // Initialize + create: function (x, y) { + var i, source, base = {x: 0, y: 0} + + // ensure source as object + source = Array.isArray(x) + ? {x: x[0], y: x[1]} + : typeof x === 'object' + ? {x: x.x, y: x.y} + : x != null + ? {x: x, y: (y != null ? y : x)} : base // If y has no value, then x is used has its value + + // merge source + this.x = source.x + this.y = source.y + }, + + // Add methods + extend: { + // Clone point + clone: function () { + return new SVG.Point(this) + }, + // Morph one point into another + morph: function (x, y) { + // store new destination + this.destination = new SVG.Point(x, y) + + return this + }, + + + + } + + }) + + SVG.extend(SVG.Element, { + + // Get point + point: function (x, y) { + return new SVG.Point(x, y).transform(this.screenCTM().inverse()) + } + + }) + + SVG.extend(SVG.Element, { + // Set svg element attribute + attr: function (a, v, n) { + // act as full getter + if (a == null) { + // get an object of attributes + a = {} + v = this.node.attributes + for (var n = v.length - 1; n >= 0; n--) { a[v[n].nodeName] = SVG.regex.isNumber.test(v[n].nodeValue) ? parseFloat(v[n].nodeValue) : v[n].nodeValue } + + return a + } else if (typeof a === 'object') { + // apply every attribute individually if an object is passed + for (var v_ in a) this.attr(v_, a[v_]) + } else if (v === null) { + // remove value + this.node.removeAttribute(a) + } else if (v == null) { + // act as a getter if the first and only argument is not an object + v = this.node.getAttribute(a) + return v == null + ? SVG.defaults.attrs[a] + : SVG.regex.isNumber.test(v) + ? parseFloat(v) : v + } else { + // BUG FIX: some browsers will render a stroke if a color is given even though stroke width is 0 + if (a == 'stroke-width') { this.attr('stroke', parseFloat(v) > 0 ? this._stroke : null) } else if (a == 'stroke') { this._stroke = v } + + // convert image fill and stroke to patterns + if (a == 'fill' || a == 'stroke') { + if (SVG.regex.isImage.test(v)) { v = this.doc().defs().image(v, 0, 0) } + + if (v instanceof SVG.Image) { + v = this.doc().defs().pattern(0, 0, function () { + this.add(v) + }) + } + } + + // ensure correct numeric values (also accepts NaN and Infinity) + if (typeof v === 'number') { v = new SVG.Number(v) } + + // ensure full hex color + else if (SVG.Color.isColor(v)) { v = new SVG.Color(v) } + + // parse array values + else if (Array.isArray(v)) { v = new SVG.Array(v) } + + // if the passed attribute is leading... + if (a == 'leading') { + // ... call the leading method instead + if (this.leading) { this.leading(v) } + } else { + // set given attribute on node + typeof n === 'string' + ? this.node.setAttributeNS(n, a, v.toString()) + : this.node.setAttribute(a, v.toString()) + } + + // rebuild if required + if (this.rebuild && (a == 'font-size' || a == 'x')) { this.rebuild(a, v) } + } + + return this + } + }) + + SVG.extend(SVG.Element, { + // Add transformations + transform: function (o, relative) { + // get target in case of the fx module, otherwise reference this + var target = this, + matrix, bbox + + // act as a getter + if (typeof o !== 'object') { + // get current matrix + matrix = new SVG.Matrix(target).extract() + + return typeof o === 'string' ? matrix[o] : matrix + } + + // get current matrix + matrix = new SVG.Matrix(target) + + // ensure relative flag + relative = !!relative || !!o.relative + + // act on matrix + if (o.a != null) { + matrix = relative + // relative + ? matrix.multiply(new SVG.Matrix(o)) + // absolute + : new SVG.Matrix(o) + } + + return this.attr('transform', matrix) + } + }) + + + + SVG.extend(SVG.Element, { + // Reset all transformations + untransform: function () { + return this.attr('transform', null) + }, + // merge the whole transformation chain into one matrix and returns it + matrixify: function () { + var matrix = (this.attr('transform') || '') + // split transformations + .split(SVG.regex.transforms).slice(0, -1).map(function (str) { + // generate key => value pairs + var kv = str.trim().split('(') + return [kv[0], kv[1].split(SVG.regex.delimiter).map(function (str) { return parseFloat(str) })] + }) + // merge every transformation into one matrix + .reduce(function (matrix, transform) { + if (transform[0] == 'matrix') return matrix.multiply(arrayToMatrix(transform[1])) + return matrix[transform[0]].apply(matrix, transform[1]) + }, new SVG.Matrix()) + + return matrix + }, + // add an element to another parent without changing the visual representation on the screen + toParent: function (parent) { + if (this == parent) return this + var ctm = this.screenCTM() + var pCtm = parent.screenCTM().inverse() + + this.addTo(parent).untransform().transform(pCtm.multiply(ctm)) + + return this + }, + // same as above with parent equals root-svg + toDoc: function () { + return this.toParent(this.doc()) + } + + }) + + SVG.Transformation = SVG.invent({ + + create: function (source, inversed) { + if (arguments.length > 1 && typeof inversed !== 'boolean') { + return this.constructor.call(this, [].slice.call(arguments)) + } + + if (Array.isArray(source)) { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[i] + } + } else if (source && typeof source === 'object') { + for (var i = 0, len = this.arguments.length; i < len; ++i) { + this[this.arguments[i]] = source[this.arguments[i]] + } + } + + this.inversed = false + + if (inversed === true) { + this.inversed = true + } + }, + + }) + + SVG.Translate = SVG.invent({ + + parent: SVG.Matrix, + inherit: SVG.Transformation, + + create: function (source, inversed) { + this.constructor.apply(this, [].slice.call(arguments)) + }, + + extend: { + arguments: ['transformedX', 'transformedY'], + method: 'translate' + } + + }) + + + + + + SVG.extend(SVG.Element, { + // Dynamic style generator + style: function (s, v) { + if (arguments.length == 0) { + // get full style + return this.node.style.cssText || '' + } else if (arguments.length < 2) { + // apply every style individually if an object is passed + if (typeof s === 'object') { + for (var v_ in s) this.style(v_, s[v_]) + } else if (SVG.regex.isCss.test(s)) { + // parse css string + s = s.split(/\s*;\s*/) + // filter out suffix ; and stuff like ;; + .filter(function (e) { return !!e }) + .map(function (e) { return e.split(/\s*:\s*/) }) + + // apply every definition individually + while (v = s.pop()) { + this.style(v[0], v[1]) + } + } else { + // act as a getter if the first and only argument is not an object + return this.node.style[camelCase(s)] + } + } else { + this.node.style[camelCase(s)] = v === null || SVG.regex.isBlank.test(v) ? '' : v + } + + return this + } + }) + SVG.Parent = SVG.invent({ + // Initialize node + create: function (element) { + this.constructor.call(this, element) + }, + + // Inherit from + inherit: SVG.Element, + + // Add class methods + extend: { + // Returns all child elements + children: function () { + return SVG.utils.map(SVG.utils.filterSVGElements(this.node.childNodes), function (node) { + return SVG.adopt(node) + }) + }, + // Add given element at a position + add: function (element, i) { + if (i == null) { this.node.appendChild(element.node) } else if (element.node != this.node.childNodes[i]) { this.node.insertBefore(element.node, this.node.childNodes[i]) } + + return this + }, + // Basically does the same as `add()` but returns the added element instead + put: function (element, i) { + this.add(element, i) + return element + }, + // Checks if the given element is a child + has: function (element) { + return this.index(element) >= 0 + }, + // Gets index of given element + index: function (element) { + return [].slice.call(this.node.childNodes).indexOf(element.node) + }, + // Get a element at the given index + get: function (i) { + return SVG.adopt(this.node.childNodes[i]) + }, + // Get first child + first: function () { + return this.get(0) + }, + // Get the last child + last: function () { + return this.get(this.node.childNodes.length - 1) + }, + // Iterates over all children and invokes a given block + each: function (block, deep) { + var il, + children = this.children() + + for (var i = 0, il = children.length; i < il; i++) { + if (children[i] instanceof SVG.Element) { block.apply(children[i], [i, children]) } + + if (deep && (children[i] instanceof SVG.Container)) { children[i].each(block, deep) } + } + + return this + }, + // Remove a given child + removeElement: function (element) { + this.node.removeChild(element.node) + + return this + }, + // Remove all elements in this container + clear: function () { + // remove children + while (this.node.hasChildNodes()) { this.node.removeChild(this.node.lastChild) } + + // remove defs reference + delete this._defs + + return this + }, // Get defs + defs: function () { + return this.doc().defs() + } + } + + }) + + SVG.extend(SVG.Parent, { + + ungroup: function (parent, depth) { + if (depth === 0 || this instanceof SVG.Defs || this.node == SVG.parser.draw) return this + + parent = parent || (this instanceof SVG.Doc ? this : this.parent(SVG.Parent)) + depth = depth || Infinity + + this.each(function () { + if (this instanceof SVG.Defs) return this + if (this instanceof SVG.Parent) return this.ungroup(parent, depth - 1) + return this.toParent(parent) + }) + + this.node.firstChild || this.remove() + + return this + }, + + flatten: function (parent, depth) { + return this.ungroup(parent, depth) + } + + }) + SVG.Container = SVG.invent({ + // Initialize node + create: function (element) { + this.constructor.call(this, element) + }, + + // Inherit from + inherit: SVG.Parent + + }) + + SVG.ViewBox = SVG.invent({ + + // Define parent + parent: SVG.Container, + + // Add parent method + construct: { + + } + + }) + // Add events to elements + ;[ 'click', + 'dblclick', + 'mousedown', + 'mouseup', + 'mouseover', + 'mouseout', + 'mousemove', + // , 'mouseenter' -> not supported by IE + // , 'mouseleave' -> not supported by IE + 'touchstart', + 'touchmove', + 'touchleave', + 'touchend', + 'touchcancel' ].forEach(function (event) { + // add event to SVG.Element + SVG.Element.prototype[event] = function (f) { + // bind event to element rather than element node + SVG.on(this.node, event, f) + return this + } + }) + + // Initialize listeners stack + SVG.listeners = [] + SVG.handlerMap = [] + SVG.listenerId = 0 + + // Add event binder in the SVG namespace + SVG.on = function (node, event, listener, binding, options) { + // create listener, get object-index + var l = listener.bind(binding || node.instance || node), + index = (SVG.handlerMap.indexOf(node) + 1 || SVG.handlerMap.push(node)) - 1, + ev = event.split('.')[0], + ns = event.split('.')[1] || '*' + + // ensure valid object + SVG.listeners[index] = SVG.listeners[index] || {} + SVG.listeners[index][ev] = SVG.listeners[index][ev] || {} + SVG.listeners[index][ev][ns] = SVG.listeners[index][ev][ns] || {} + + if (!listener._svgjsListenerId) { listener._svgjsListenerId = ++SVG.listenerId } + + // reference listener + SVG.listeners[index][ev][ns][listener._svgjsListenerId] = l + + // add listener + node.addEventListener(ev, l, options || { passive: true }) + } + + // Add event unbinder in the SVG namespace + SVG.off = function (node, event, listener) { + var index = SVG.handlerMap.indexOf(node), + ev = event && event.split('.')[0], + ns = event && event.split('.')[1], + namespace = '' + + if (index == -1) return + + if (listener) { + if (typeof listener === 'function') listener = listener._svgjsListenerId + if (!listener) return + + // remove listener reference + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns || '*']) { + // remove listener + node.removeEventListener(ev, SVG.listeners[index][ev][ns || '*'][listener], false) + + delete SVG.listeners[index][ev][ns || '*'][listener] + } + } else if (ns && ev) { + // remove all listeners for a namespaced event + if (SVG.listeners[index][ev] && SVG.listeners[index][ev][ns]) { + for (var listener_ in SVG.listeners[index][ev][ns]) { SVG.off(node, [ev, ns].join('.'), listener_) } + + delete SVG.listeners[index][ev][ns] + } + } else if (ns) { + // remove all listeners for a specific namespace + for (var event_ in SVG.listeners[index]) { + for (var namespace in SVG.listeners[index][event_]) { + if (ns === namespace) { + SVG.off(node, [event_, ns].join('.')) + } + } + } + } else if (ev) { + // remove all listeners for the event + if (SVG.listeners[index][ev]) { + for (var namespace in SVG.listeners[index][ev]) { SVG.off(node, [ev, namespace].join('.')) } + + delete SVG.listeners[index][ev] + } + } else { + // remove all listeners on a given node + for (var event_ in SVG.listeners[index]) { SVG.off(node, event_) } + + delete SVG.listeners[index] + delete SVG.handlerMap[index] + } + } + + // + SVG.extend(SVG.Element, { + // Bind given event to listener + on: function (event, listener, binding, options) { + SVG.on(this.node, event, listener, binding, options) + + return this + }, + // Unbind event from listener + off: function (event, listener) { + SVG.off(this.node, event, listener) + + return this + }, + // Fire given event + fire: function (event, data) { + // Dispatch event + if (event instanceof window.Event) { + this.node.dispatchEvent(event) + } else { + this.node.dispatchEvent(event = new SVG.CustomEvent(event, {detail: data, cancelable: true})) + } + + this._event = event + return this + }, + event: function () { + return this._event + } + }) + + SVG.Defs = SVG.invent({ + // Initialize node + create: 'defs', + + // Inherit from + inherit: SVG.Container + + }) + SVG.G = SVG.invent({ + // Initialize node + create: 'g', + + // Inherit from + inherit: SVG.Container, + + // Add class methods + extend: { + // Move over x-axis + x: function (x) { + return x == null ? this.transform('x') : this.transform({ x: x - this.x() }, true) + }, + }, + + // Add parent method + construct: { + // Create a group element + group: function () { + return this.put(new SVG.G()) + } + } + }) + + SVG.Doc = SVG.invent({ + // Initialize node + create: function (element) { + if (element) { + // ensure the presence of a dom element + element = typeof element === 'string' + ? document.getElementById(element) + : element + + // If the target is an svg element, use that element as the main wrapper. + // This allows svg.js to work with svg documents as well. + if (element.nodeName == 'svg') { + this.constructor.call(this, element) + } else { + this.constructor.call(this, SVG.create('svg')) + element.appendChild(this.node) + this.size('100%', '100%') + } + + // set svg element attributes and ensure defs node + this.namespace().defs() + } + }, + + // Inherit from + inherit: SVG.Container, + + // Add class methods + extend: { + // Add namespaces + namespace: function () { + return this + .attr({ xmlns: SVG.ns, version: '1.1' }) + .attr('xmlns:xlink', SVG.xlink, SVG.xmlns) + .attr('xmlns:svgjs', SVG.svgjs, SVG.xmlns) + }, + // Creates and returns defs element + defs: function () { + if (!this._defs) { + var defs + + // Find or create a defs element in this instance + if (defs = this.node.getElementsByTagName('defs')[0]) { this._defs = SVG.adopt(defs) } else { this._defs = new SVG.Defs() } + + // Make sure the defs node is at the end of the stack + this.node.appendChild(this._defs.node) + } + + return this._defs + }, + // custom parent method + parent: function () { + if (!this.node.parentNode || this.node.parentNode.nodeName == '#document') return null + return this.node.parentNode + }, + + + // Removes the doc from the DOM + remove: function () { + if (this.parent()) { + this.parent().removeChild(this.node) + } + + return this + }, + clear: function () { + // remove children + while (this.node.hasChildNodes()) { this.node.removeChild(this.node.lastChild) } + + // remove defs reference + delete this._defs + + // add back parser + if (SVG.parser.draw && !SVG.parser.draw.parentNode) { this.node.appendChild(SVG.parser.draw) } + + return this + }, + clone: function (parent) { + // write dom data to the dom so the clone can pickup the data + this.writeDataToDom() + + // get reference to node + var node = this.node + + // clone element and assign new id + var clone = assignNewId(node.cloneNode(true)) + + // insert the clone in the given parent or after myself + if (parent) { + (parent.node || parent).appendChild(clone.node) + } else { + node.parentNode.insertBefore(clone.node, node.nextSibling) + } + + return clone + } + } + + }) + + // ### This module adds backward / forward functionality to elements. + + // + SVG.extend(SVG.Element, { + // Get all siblings, including myself + + + }) + + + + SVG.Gradient = SVG.invent({ + // Initialize node + create: function (type) { + this.constructor.call(this, SVG.create(type + 'Gradient')) + + // store type + this.type = type + }, + + // Inherit from + inherit: SVG.Container, + + // Add class methods + extend: { + // Add a color stop + at: function (offset, color, opacity) { + return this.put(new SVG.Stop()).update(offset, color, opacity) + }, + // Update gradient + update: function (block) { + // remove all stops + this.clear() + + // invoke passed block + if (typeof block === 'function') { block.call(this, this) } + + return this + }, + // Return the fill id + fill: function () { + return 'url(#' + this.id() + ')' + }, + // Alias string convertion to fill + toString: function () { + return this.fill() + }, + // custom attr to handle transform + attr: function (a, b, c) { + if (a == 'transform') a = 'gradientTransform' + return SVG.Container.prototype.attr.call(this, a, b, c) + } + }, + + // Add parent method + construct: { + // Create gradient element in defs + gradient: function (type, block) { + return this.defs().gradient(type, block) + } + } + }) + + // Add animatable methods to both gradient and fx module + SVG.extend(SVG.Gradient, SVG.FX, { + // From position + from: function (x, y) { + return (this._target || this).type == 'radial' + ? this.attr({ fx: new SVG.Number(x), fy: new SVG.Number(y) }) + : this.attr({ x1: new SVG.Number(x), y1: new SVG.Number(y) }) + }, + // To position + to: function (x, y) { + return (this._target || this).type == 'radial' + ? this.attr({ cx: new SVG.Number(x), cy: new SVG.Number(y) }) + : this.attr({ x2: new SVG.Number(x), y2: new SVG.Number(y) }) + } + }) + + // Base gradient generation + SVG.extend(SVG.Defs, { + // define gradient + gradient: function (type, block) { + return this.put(new SVG.Gradient(type)).update(block) + } + + }) + + SVG.Stop = SVG.invent({ + // Initialize node + create: 'stop', + + // Inherit from + inherit: SVG.Element, + + // Add class methods + extend: { + // add color stops + update: function (o) { + if (typeof o === 'number' || o instanceof SVG.Number) { + o = { + offset: arguments[0], + color: arguments[1], + opacity: arguments[2] + } + } + + // set attributes + if (o.opacity != null) this.attr('stop-opacity', o.opacity) + if (o.color != null) this.attr('stop-color', o.color) + if (o.offset != null) this.attr('offset', new SVG.Number(o.offset)) + + return this + } + } + + }) + + SVG.Pattern = SVG.invent({ + // Initialize node + create: 'pattern', + + // Inherit from + inherit: SVG.Container, + + // Add class methods + extend: { + // Return the fill id + fill: function () { + return 'url(#' + this.id() + ')' + }, + // Update pattern by rebuilding + update: function (block) { + // remove content + this.clear() + + // invoke passed block + if (typeof block === 'function') { block.call(this, this) } + + return this + }, + // Alias string convertion to fill + toString: function () { + return this.fill() + }, + // custom attr to handle transform + attr: function (a, b, c) { + if (a == 'transform') a = 'patternTransform' + return SVG.Container.prototype.attr.call(this, a, b, c) + } + + }, + + // Add parent method + construct: { + // Create pattern element in defs + pattern: function (width, height, block) { + return this.defs().pattern(width, height, block) + } + } + }) + + SVG.extend(SVG.Defs, { + // Define gradient + pattern: function (width, height, block) { + return this.put(new SVG.Pattern()).update(block).attr({ + x: 0, + y: 0, + width: width, + height: height, + patternUnits: 'userSpaceOnUse' + }) + } + + }) + SVG.Shape = SVG.invent({ + // Initialize node + create: function (element) { + this.constructor.call(this, element) + }, + + // Inherit from + inherit: SVG.Element + + }) + + SVG.Symbol = SVG.invent({ + // Initialize node + create: 'symbol', + + // Inherit from + inherit: SVG.Container, + + construct: { + // create symbol + symbol: function () { + return this.put(new SVG.Symbol()) + } + } + }) + + SVG.Use = SVG.invent({ + // Initialize node + create: 'use', + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // Use element as a reference + element: function (element, file) { + // Set lined element + return this.attr('href', (file || '') + '#' + element, SVG.xlink) + } + }, + + // Add parent method + construct: { + // Create a use element + use: function (element, file) { + return this.put(new SVG.Use()).element(element, file) + } + } + }) + SVG.Rect = SVG.invent({ + // Initialize node + create: 'rect', + + // Inherit from + inherit: SVG.Shape, + + // Add parent method + construct: { + // Create a rect element + rect: function (width, height) { + return this.put(new SVG.Rect()).size(width, height) + } + } + }) + SVG.Circle = SVG.invent({ + // Initialize node + create: 'circle', + + // Inherit from + inherit: SVG.Shape, + + // Add parent method + construct: { + // Create circle element, based on ellipse + circle: function (size) { + return this.put(new SVG.Circle()).rx(new SVG.Number(size).divide(2)).move(0, 0) + } + } + }) + + SVG.extend(SVG.Circle, SVG.FX, { + // Radius x value + rx: function (rx) { + return this.attr('r', rx) + }, + // Alias radius x value + ry: function (ry) { + return this.rx(ry) + } + }) + + SVG.Ellipse = SVG.invent({ + // Initialize node + create: 'ellipse', + + // Inherit from + inherit: SVG.Shape, + + // Add parent method + construct: { + // Create an ellipse + ellipse: function (width, height) { + return this.put(new SVG.Ellipse()).size(width, height).move(0, 0) + } + } + }) + + SVG.extend(SVG.Ellipse, SVG.Rect, SVG.FX, { + // Radius x value + rx: function (rx) { + return this.attr('rx', rx) + }, + // Radius y value + ry: function (ry) { + return this.attr('ry', ry) + } + }) + + // Add common method + SVG.extend(SVG.Circle, SVG.Ellipse, { + // Move over x-axis + x: function (x) { + return x == null ? this.cx() - this.rx() : this.cx(x + this.rx()) + }, + // Move over y-axis + y: function (y) { + return y == null ? this.cy() - this.ry() : this.cy(y + this.ry()) + }, + // Move by center over x-axis + cx: function (x) { + return x == null ? this.attr('cx') : this.attr('cx', x) + }, + // Move by center over y-axis + cy: function (y) { + return y == null ? this.attr('cy') : this.attr('cy', y) + }, + // Set width of element + width: function (width) { + return width == null ? this.rx() * 2 : this.rx(new SVG.Number(width).divide(2)) + }, + // Set height of element + height: function (height) { + return height == null ? this.ry() * 2 : this.ry(new SVG.Number(height).divide(2)) + }, + // Custom size function + size: function (width, height) { + var p = proportionalSize(this, width, height) + + return this + .rx(new SVG.Number(p.width).divide(2)) + .ry(new SVG.Number(p.height).divide(2)) + } + }) + SVG.Line = SVG.invent({ + // Initialize node + create: 'line', + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // Get array + array: function () { + return new SVG.PointArray([ + [ this.attr('x1'), this.attr('y1') ], + [ this.attr('x2'), this.attr('y2') ] + ]) + }, + // Overwrite native plot() method + plot: function (x1, y1, x2, y2) { + if (x1 == null) { return this.array() } else if (typeof y1 !== 'undefined') { x1 = { x1: x1, y1: y1, x2: x2, y2: y2 } } else { x1 = new SVG.PointArray(x1).toLine() } + + return this.attr(x1) + }, + // Move by left top corner + move: function (x, y) { + return this.attr(this.array().move(x, y).toLine()) + }, + // Set element size to given width and height + size: function (width, height) { + var p = proportionalSize(this, width, height) + + return this.attr(this.array().size(p.width, p.height).toLine()) + } + }, + + // Add parent method + construct: { + // Create a line element + line: function (x1, y1, x2, y2) { + // make sure plot is called as a setter + // x1 is not necessarily a number, it can also be an array, a string and a SVG.PointArray + return SVG.Line.prototype.plot.apply( + this.put(new SVG.Line()) + , x1 != null ? [x1, y1, x2, y2] : [0, 0, 0, 0] + ) + } + } + }) + + SVG.Polyline = SVG.invent({ + // Initialize node + create: 'polyline', + + // Inherit from + inherit: SVG.Shape, + + // Add parent method + construct: { + // Create a wrapped polyline element + polyline: function (p) { + // make sure plot is called as a setter + return this.put(new SVG.Polyline()).plot(p || new SVG.PointArray()) + } + } + }) + + SVG.Polygon = SVG.invent({ + // Initialize node + create: 'polygon', + + // Inherit from + inherit: SVG.Shape, + + // Add parent method + construct: { + // Create a wrapped polygon element + polygon: function (p) { + // make sure plot is called as a setter + return this.put(new SVG.Polygon()).plot(p || new SVG.PointArray()) + } + } + }) + + // Add polygon-specific functions + SVG.extend(SVG.Polyline, SVG.Polygon, { + // Get array + array: function () { + return this._array || (this._array = new SVG.PointArray(this.attr('points'))) + }, + // Plot new path + plot: function (p) { + return (p == null) + ? this.array() + : this.clear().attr('points', typeof p === 'string' ? p : (this._array = new SVG.PointArray(p))) + }, + // Clear array cache + clear: function () { + delete this._array + return this + }, + // Move by left top corner + move: function (x, y) { + return this.attr('points', this.array().move(x, y)) + }, + // Set element size to given width and height + size: function (width, height) { + var p = proportionalSize(this, width, height) + + return this.attr('points', this.array().size(p.width, p.height)) + } + + }) + + // unify all point to point elements + SVG.extend(SVG.Line, SVG.Polyline, SVG.Polygon, { + // Define morphable array + morphArray: SVG.PointArray, + // Move by left top corner over x-axis + x: function (x) { + return x == null ? this.bbox().x : this.move(x, this.bbox().y) + }, + // Move by left top corner over y-axis + y: function (y) { + return y == null ? this.bbox().y : this.move(this.bbox().x, y) + }, + // Set width of element + width: function (width) { + var b = this.bbox() + + return width == null ? b.width : this.size(width, b.height) + }, + // Set height of element + height: function (height) { + var b = this.bbox() + + return height == null ? b.height : this.size(b.width, height) + } + }) + SVG.Path = SVG.invent({ + // Initialize node + create: 'path', + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // Define morphable array + morphArray: SVG.PathArray, + // Get array + array: function () { + return this._array || (this._array = new SVG.PathArray(this.attr('d'))) + }, + // Plot new path + plot: function (d) { + return (d == null) + ? this.array() + : this.clear().attr('d', typeof d === 'string' ? d : (this._array = new SVG.PathArray(d))) + }, + // Clear array cache + clear: function () { + delete this._array + return this + }, + + }, + + // Add parent method + construct: { + // Create a wrapped path element + path: function (d) { + // make sure plot is called as a setter + return this.put(new SVG.Path()).plot(d || new SVG.PathArray()) + } + } + }) + + SVG.Image = SVG.invent({ + // Initialize node + create: 'image', + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // (re)load image + load: function (url) { + if (!url) return this + + var self = this, + img = new window.Image() + + // preload image + SVG.on(img, 'load', function () { + SVG.off(img) + + var p = self.parent(SVG.Pattern) + + if (p === null) return + + // ensure image size + if (self.width() == 0 && self.height() == 0) { self.size(img.width, img.height) } + + // ensure pattern size if not set + if (p && p.width() == 0 && p.height() == 0) { p.size(self.width(), self.height()) } + + // callback + if (typeof self._loaded === 'function') { + self._loaded.call(self, { + width: img.width, + height: img.height, + ratio: img.width / img.height, + url: url + }) + } + }) + + SVG.on(img, 'error', function (e) { + SVG.off(img) + + if (typeof self._error === 'function') { + self._error.call(self, e) + } + }) + + return this.attr('href', (img.src = this.src = url), SVG.xlink) + }, + // Add loaded callback + loaded: function (loaded) { + this._loaded = loaded + return this + }, + + error: function (error) { + this._error = error + return this + } + }, + + // Add parent method + construct: { + // create image element, load image and set its size + image: function (source, width, height) { + return this.put(new SVG.Image()).load(source).size(width || 0, height || width || 0) + } + } + + }) + SVG.Text = SVG.invent({ + // Initialize node + create: function () { + this.constructor.call(this, SVG.create('text')) + + this.dom.leading = new SVG.Number(1.3) // store leading value for rebuilding + this._rebuild = true // enable automatic updating of dy values + this._build = false // disable build mode for adding multiple lines + + // set default font + this.attr('font-family', SVG.defaults.attrs['font-family']) + }, + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // Move over x-axis + x: function (x) { + // act as getter + if (x == null) { return this.attr('x') } + + return this.attr('x', x) + }, + // Set the text content + text: function (text) { + // act as getter + if (typeof text === 'undefined') { + var text = '' + var children = this.node.childNodes + for (var i = 0, len = children.length; i < len; ++i) { + // add newline if its not the first child and newLined is set to true + if (i != 0 && children[i].nodeType != 3 && SVG.adopt(children[i]).dom.newLined == true) { + text += '\n' + } + + // add content of this node + text += children[i].textContent + } + + return text + } + + // remove existing content + this.clear().build(true) + + if (typeof text === 'function') { + // call block + text.call(this, this) + } else { + // store text and make sure text is not blank + text = text.split('\n') + + // build new lines + for (var i = 0, il = text.length; i < il; i++) { this.tspan(text[i]).newLine() } + } + + // disable build mode and rebuild lines + return this.build(false).rebuild() + }, + // Set font size + size: function (size) { + return this.attr('font-size', size).rebuild() + }, + // Set / get leading + leading: function (value) { + // act as getter + if (value == null) { return this.dom.leading } + + // act as setter + this.dom.leading = new SVG.Number(value) + + return this.rebuild() + }, + // Get all the first level lines + lines: function () { + var node = (this.textPath && this.textPath() || this).node + + // filter tspans and map them to SVG.js instances + var lines = SVG.utils.map(SVG.utils.filterSVGElements(node.childNodes), function (el) { + return SVG.adopt(el) + }) + + // return an instance of SVG.set + return new SVG.Set(lines) + }, + // Rebuild appearance type + rebuild: function (rebuild) { + // store new rebuild flag if given + if (typeof rebuild === 'boolean') { this._rebuild = rebuild } + + // define position of all lines + if (this._rebuild) { + var self = this, + blankLineOffset = 0, + dy = this.dom.leading * new SVG.Number(this.attr('font-size')) + + this.lines().each(function () { + if (this.dom.newLined) { + if (!self.textPath()) { this.attr('x', self.attr('x')) } + if (this.text() == '\n') { + blankLineOffset += dy + } else { + this.attr('dy', dy + blankLineOffset) + blankLineOffset = 0 + } + } + }) + + this.fire('rebuild') + } + + return this + }, + // Enable / disable build mode + build: function (build) { + this._build = !!build + return this + }, + // overwrite method from parent to set data properly + setData: function (o) { + this.dom = o + this.dom.leading = new SVG.Number(o.leading || 1.3) + return this + } + }, + + // Add parent method + construct: { + // Create text element + text: function (text) { + return this.put(new SVG.Text()).text(text) + }, + // Create plain text element + plain: function (text) { + return this.put(new SVG.Text()).plain(text) + } + } + + }) + + SVG.Tspan = SVG.invent({ + // Initialize node + create: 'tspan', + + // Inherit from + inherit: SVG.Shape, + + // Add class methods + extend: { + // Set text content + text: function (text) { + if (text == null) return this.node.textContent + (this.dom.newLined ? '\n' : '') + + typeof text === 'function' ? text.call(this, this) : this.plain(text) + + return this + }, + // Shortcut dx + dx: function (dx) { + return this.attr('dx', dx) + }, + // Shortcut dy + dy: function (dy) { + return this.attr('dy', dy) + }, + // Create new line + newLine: function () { + // fetch text parent + var t = this.parent(SVG.Text) + + // mark new line + this.dom.newLined = true + + // apply new hy¡n + return this.dy(t.dom.leading * t.attr('font-size')).attr('x', t.x()) + } + } + + }) + + SVG.extend(SVG.Text, SVG.Tspan, { + // Create plain text node + plain: function (text) { + // clear if build mode is disabled + if (this._build === false) { this.clear() } + + // create text node + this.node.appendChild(document.createTextNode(text)) + + return this + }, + // Create a tspan + tspan: function (text) { + var node = (this.textPath && this.textPath() || this).node, + tspan = new SVG.Tspan() + + // clear if build mode is disabled + if (this._build === false) { this.clear() } + + // add new tspan + node.appendChild(tspan.node) + + return tspan.text(text) + }, + // Clear all lines + clear: function () { + var node = (this.textPath && this.textPath() || this).node + + // remove existing child nodes + while (node.hasChildNodes()) { node.removeChild(node.lastChild) } + + return this + }, + // Get length of text element + length: function () { + return this.node.getComputedTextLength() + } + }) + + SVG.TextPath = SVG.invent({ + // Initialize node + create: 'textPath', + + // Inherit from + inherit: SVG.Parent, + + // Define parent class + parent: SVG.Text, + + // Add parent method + construct: { + morphArray: SVG.PathArray, + // return the array of the path track element + array: function () { + var track = this.track() + + return track ? track.array() : null + }, + // Plot path if any + plot: function (d) { + var track = this.track(), + pathArray = null + + if (track) { + pathArray = track.plot(d) + } + + return (d == null) ? pathArray : this + }, + // Get the path track element + track: function () { + var path = this.textPath() + + if (path) { return path.reference('href') } + }, + // Get the textPath child + textPath: function () { + if (this.node.firstChild && this.node.firstChild.nodeName == 'textPath') { return SVG.adopt(this.node.firstChild) } + } + } + }) + + SVG.Nested = SVG.invent({ + // Initialize node + create: function () { + this.constructor.call(this, SVG.create('svg')) + + this.style('overflow', 'visible') + }, + + // Inherit from + inherit: SVG.Container, + + // Add parent method + construct: { + // Create nested svg document + nested: function () { + return this.put(new SVG.Nested()) + } + } + }) + + + + // Define list of available attributes for stroke and fill + var sugar = { + stroke: ['color', 'width', 'opacity', 'linecap', 'linejoin', 'miterlimit', 'dasharray', 'dashoffset'], + fill: ['color', 'opacity', 'rule'], + prefix: function (t, a) { + return a == 'color' ? t : t + '-' + a + } + } + +// Add sugar for fill and stroke +;['fill', 'stroke'].forEach(function (m) { + var extension = {} + + extension[m] = function (o) { + if (typeof o === 'undefined') { return this } + if (typeof o === 'string' || SVG.Color.isRgb(o) || (o && typeof o.fill === 'function')) { this.attr(m, o) } else + // set all attributes from sugar.fill and sugar.stroke list + { + for (var i = sugar[m].length - 1; i >= 0; i--) { + if (o[sugar[m][i]] != null) { this.attr(sugar.prefix(m, sugar[m][i]), o[sugar[m][i]]) } + } + } + + return this + } + + SVG.extend(SVG.Element, SVG.FX, extension) + }) + + SVG.extend(SVG.Element, SVG.FX, { + + // Map translate to transform + translate: function (x, y) { + return this.transform({ x: x, y: y }) + }, + // Map matrix to transform + matrix: function (m) { + return this.attr('transform', new SVG.Matrix(arguments.length == 6 ? [].slice.call(arguments) : m)) + }, + // Opacity + opacity: function (value) { + return this.attr('opacity', value) + }, + // Relative move over x axis + dx: function (x) { + return this.x(new SVG.Number(x).plus(this instanceof SVG.FX ? 0 : this.x()), true) + }, + // Relative move over y axis + dy: function (y) { + return this.y(new SVG.Number(y).plus(this instanceof SVG.FX ? 0 : this.y()), true) + }, + + }) + + + SVG.extend(SVG.Path, { + // Get path length + length: function () { + return this.node.getTotalLength() + }, + // Get point at length + pointAt: function (length) { + return this.node.getPointAtLength(length) + } + }) + + + SVG.Set = SVG.invent({ + // Initialize + create: function (members) { + // Set initial state + Array.isArray(members) ? this.members = members : this.clear() + }, + + // Add class methods + extend: { + // Add element to set + add: function () { + var il, elements = [].slice.call(arguments) + + for (var i = 0, il = elements.length; i < il; i++) { this.members.push(elements[i]) } + + return this + }, + // Remove element from set + remove: function (element) { + var i = this.index(element) + + // remove given child + if (i > -1) { this.members.splice(i, 1) } + + return this + }, + // Iterate over all members + each: function (block) { + for (var i = 0, il = this.members.length; i < il; i++) { block.apply(this.members[i], [i, this.members]) } + + return this + }, + // Restore to defaults + clear: function () { + // initialize store + this.members = [] + + return this + }, + // Get the length of a set + length: function () { + return this.members.length + }, + // Checks if a given element is present in set + has: function (element) { + return this.index(element) >= 0 + }, + // retuns index of given element in set + index: function (element) { + return this.members.indexOf(element) + }, + // Get member at given index + get: function (i) { + return this.members[i] + }, + // Get first member + first: function () { + return this.get(0) + }, + // Get last member + last: function () { + return this.get(this.members.length - 1) + }, + // Default value + valueOf: function () { + return this.members + }, + + }, + + // Add parent method + construct: { + // Create a new set + set: function (members) { + return new SVG.Set(members) + } + } + }) + + SVG.FX.Set = SVG.invent({ + // Initialize node + create: function (set) { + // store reference to set + this.set = set + } + + }) + + // Alias methods + SVG.Set.inherit = function () { + var methods = [] + + // gather shape methods + for (var m in SVG.Shape.prototype) { + if (typeof SVG.Shape.prototype[m] === 'function' && typeof SVG.Set.prototype[m] !== 'function') { methods.push(m) } + } + + // apply shape aliasses + methods.forEach(function (method) { + SVG.Set.prototype[method] = function () { + for (var i = 0, il = this.members.length; i < il; i++) { + if (this.members[i] && typeof this.members[i][method] === 'function') { this.members[i][method].apply(this.members[i], arguments) } + } + + return method == 'animate' ? (this.fx || (this.fx = new SVG.FX.Set(this))) : this + } + }) + + // clear methods for the next round + methods = [] + + // gather fx methods + for (var m in SVG.FX.prototype) { + if (typeof SVG.FX.prototype[m] === 'function' && typeof SVG.FX.Set.prototype[m] !== 'function') { methods.push(m) } + } + + // apply fx aliasses + methods.forEach(function (method) { + SVG.FX.Set.prototype[method] = function () { + for (var i = 0, il = this.set.members.length; i < il; i++) { this.set.members[i].fx[method].apply(this.set.members[i].fx, arguments) } + + return this + } + }) + } + + SVG.extend(SVG.Element, { + + }) + SVG.extend(SVG.Element, { + // Remember arbitrary data + remember: function (k, v) { + // remember every item in an object individually + if (typeof arguments[0] === 'object') { + for (var v_ in k) { this.remember(v_, k[v_]) } + } + + // retrieve memory + else if (arguments.length == 1) { return this.memory()[k] } + + // store memory + else { this.memory()[k] = v } + + return this + }, + + // Erase a given memory + forget: function () { + if (arguments.length == 0) { this._memory = {} } else { + for (var i = arguments.length - 1; i >= 0; i--) { delete this.memory()[arguments[i]] } + } + + return this + }, + + // Initialize or return local memory object + memory: function () { + return this._memory || (this._memory = {}) + } + + }) + // Method for getting an element by id + SVG.get = function (id) { + var node = document.getElementById(idFromReference(id) || id) + return SVG.adopt(node) + } + + // Select elements by query string + SVG.select = function (query, parent) { + return new SVG.Set( + SVG.utils.map((parent || document).querySelectorAll(query), function (node) { + return SVG.adopt(node) + }) + ) + } + + SVG.extend(SVG.Parent, { + // Scoped select method + select: function (query) { + return SVG.select(query, this.node) + } + + }) + function pathRegReplace (a, b, c, d) { + return c + d.replace(SVG.regex.dots, ' .') + } + + // creates deep clone of array + function array_clone (arr) { + var clone = arr.slice(0) + for (var i = clone.length; i--;) { + if (Array.isArray(clone[i])) { + clone[i] = array_clone(clone[i]) + } + } + return clone + } + + // tests if a given element is instance of an object + function is (el, obj) { + return el instanceof obj + } + + // tests if a given selector matches an element + function matches (el, selector) { + return (el.matches || el.matchesSelector || el.msMatchesSelector || el.mozMatchesSelector || el.webkitMatchesSelector || el.oMatchesSelector).call(el, selector) + } + + // Convert dash-separated-string to camelCase + function camelCase (s) { + return s.toLowerCase().replace(/-(.)/g, function (m, g) { + return g.toUpperCase() + }) + } + + // Capitalize first letter of a string + function capitalize (s) { + return s.charAt(0).toUpperCase() + s.slice(1) + } + + // Ensure to six-based hex + function fullHex (hex) { + return hex.length == 4 + ? [ '#', + hex.substring(1, 2), hex.substring(1, 2), + hex.substring(2, 3), hex.substring(2, 3), + hex.substring(3, 4), hex.substring(3, 4) + ].join('') : hex + } + + // Component to hex value + function compToHex (comp) { + var hex = comp.toString(16) + return hex.length == 1 ? '0' + hex : hex + } + + // Calculate proportional width and height values when necessary + function proportionalSize (element, width, height) { + if (width == null || height == null) { + var box = element.bbox() + + if (width == null) { width = box.width / box.height * height } else if (height == null) { height = box.height / box.width * width } + } + + return { + width: width, + height: height + } + } + + // Delta transform point + function deltaTransformPoint (matrix, x, y) { + return { + x: x * matrix.a + y * matrix.c + 0, + y: x * matrix.b + y * matrix.d + 0 + } + } + + // Map matrix array to object + function arrayToMatrix (a) { + return { a: a[0], b: a[1], c: a[2], d: a[3], e: a[4], f: a[5] } + } + + // Parse matrix if required + function parseMatrix (matrix) { + if (!(matrix instanceof SVG.Matrix)) { matrix = new SVG.Matrix(matrix) } + + return matrix + } + + // Add centre point to transform object + function ensureCentre (o, target) { + o.cx = o.cx == null ? target.bbox().cx : o.cx + o.cy = o.cy == null ? target.bbox().cy : o.cy + } + + // PathArray Helpers + function arrayToString (a) { + for (var i = 0, il = a.length, s = ''; i < il; i++) { + s += a[i][0] + + if (a[i][1] != null) { + s += a[i][1] + + if (a[i][2] != null) { + s += ' ' + s += a[i][2] + + if (a[i][3] != null) { + s += ' ' + s += a[i][3] + s += ' ' + s += a[i][4] + + if (a[i][5] != null) { + s += ' ' + s += a[i][5] + s += ' ' + s += a[i][6] + + if (a[i][7] != null) { + s += ' ' + s += a[i][7] + } + } + } + } + } + } + + return s + ' ' + } + + // Deep new id assignment + function assignNewId (node) { + // do the same for SVG child nodes as well + for (var i = node.childNodes.length - 1; i >= 0; i--) { + if (node.childNodes[i] instanceof window.SVGElement) { assignNewId(node.childNodes[i]) } + } + + return SVG.adopt(node).id(SVG.eid(node.nodeName)) + } + + // Add more bounding box properties + function fullBox (b) { + if (b.x == null) { + b.x = 0 + b.y = 0 + b.width = 0 + b.height = 0 + } + + b.w = b.width + b.h = b.height + b.x2 = b.x + b.width + b.y2 = b.y + b.height + b.cx = b.x + b.width / 2 + b.cy = b.y + b.height / 2 + + return b + } + + // Get id from reference string + function idFromReference (url) { + var m = (url || '').toString().match(SVG.regex.reference) + + if (m) return m[1] + } + + // If values like 1e-88 are passed, this is not a valid 32 bit float, + // but in those cases, we are so close to 0 that 0 works well! + function float32String (v) { + return Math.abs(v) > 1e-37 ? v : 0 + } + + // Create matrix array for looping + var abcdef = 'abcdef'.split('') + + + // Add CustomEvent to IE9 and IE10 + if (typeof window.CustomEvent !== 'function') { + // Code from: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent + var CustomEventPoly = function (event, options) { + options = options || { bubbles: false, cancelable: false, detail: undefined } + var e = document.createEvent('CustomEvent') + e.initCustomEvent(event, options.bubbles, options.cancelable, options.detail) + return e + } + + CustomEventPoly.prototype = window.Event.prototype + + SVG.CustomEvent = CustomEventPoly + } else { + SVG.CustomEvent = window.CustomEvent + } + + return SVG +})) diff --git a/public/assets/libs/apexcharts/src/utils/DateTime.js b/public/assets/libs/apexcharts/src/utils/DateTime.js new file mode 100644 index 0000000..4b7e821 --- /dev/null +++ b/public/assets/libs/apexcharts/src/utils/DateTime.js @@ -0,0 +1,240 @@ +import Utils from './Utils' + +/** + * DateTime Class to manipulate datetime values. + * + * @module DateTime + **/ + +class DateTime { + constructor(ctx) { + this.ctx = ctx + this.w = ctx.w + + this.months31 = [1, 3, 5, 7, 8, 10, 12] + this.months30 = [2, 4, 6, 9, 11] + + this.daysCntOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334] + } + + isValidDate(date) { + return !isNaN(this.parseDate(date)) + } + + getTimeStamp(dateStr) { + if (!Date.parse(dateStr)) { + return dateStr + } + const utc = this.w.config.xaxis.labels.datetimeUTC + return !utc + ? new Date(dateStr).getTime() + : new Date(new Date(dateStr).toISOString().substr(0, 25)).getTime() + } + + getDate(timestamp) { + const utc = this.w.config.xaxis.labels.datetimeUTC + + return utc + ? new Date(new Date(timestamp).toUTCString()) + : new Date(timestamp) + } + + parseDate(dateStr) { + const parsed = Date.parse(dateStr) + if (!isNaN(parsed)) { + return this.getTimeStamp(dateStr) + } + + let output = Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')) + output = this.getTimeStamp(output) + return output + } + + // This fixes the difference of x-axis labels between chrome/safari + // Fixes #1726, #1544, #1485, #1255 + parseDateWithTimezone(dateStr) { + return Date.parse(dateStr.replace(/-/g, '/').replace(/[a-z]+/gi, ' ')) + } + + // http://stackoverflow.com/questions/14638018/current-time-formatting-with-javascript#answer-14638191 + formatDate(date, format) { + const locale = this.w.globals.locale + + const utc = this.w.config.xaxis.labels.datetimeUTC + + let MMMM = ['\x00', ...locale.months] + let MMM = ['\x01', ...locale.shortMonths] + let dddd = ['\x02', ...locale.days] + let ddd = ['\x03', ...locale.shortDays] + + function ii(i, len) { + let s = i + '' + len = len || 2 + while (s.length < len) s = '0' + s + return s + } + + let y = utc ? date.getUTCFullYear() : date.getFullYear() + format = format.replace(/(^|[^\\])yyyy+/g, '$1' + y) + format = format.replace(/(^|[^\\])yy/g, '$1' + y.toString().substr(2, 2)) + format = format.replace(/(^|[^\\])y/g, '$1' + y) + + let M = (utc ? date.getUTCMonth() : date.getMonth()) + 1 + format = format.replace(/(^|[^\\])MMMM+/g, '$1' + MMMM[0]) + format = format.replace(/(^|[^\\])MMM/g, '$1' + MMM[0]) + format = format.replace(/(^|[^\\])MM/g, '$1' + ii(M)) + format = format.replace(/(^|[^\\])M/g, '$1' + M) + + let d = utc ? date.getUTCDate() : date.getDate() + format = format.replace(/(^|[^\\])dddd+/g, '$1' + dddd[0]) + format = format.replace(/(^|[^\\])ddd/g, '$1' + ddd[0]) + format = format.replace(/(^|[^\\])dd/g, '$1' + ii(d)) + format = format.replace(/(^|[^\\])d/g, '$1' + d) + + let H = utc ? date.getUTCHours() : date.getHours() + format = format.replace(/(^|[^\\])HH+/g, '$1' + ii(H)) + format = format.replace(/(^|[^\\])H/g, '$1' + H) + + let h = H > 12 ? H - 12 : H === 0 ? 12 : H + format = format.replace(/(^|[^\\])hh+/g, '$1' + ii(h)) + format = format.replace(/(^|[^\\])h/g, '$1' + h) + + let m = utc ? date.getUTCMinutes() : date.getMinutes() + format = format.replace(/(^|[^\\])mm+/g, '$1' + ii(m)) + format = format.replace(/(^|[^\\])m/g, '$1' + m) + + let s = utc ? date.getUTCSeconds() : date.getSeconds() + format = format.replace(/(^|[^\\])ss+/g, '$1' + ii(s)) + format = format.replace(/(^|[^\\])s/g, '$1' + s) + + let f = utc ? date.getUTCMilliseconds() : date.getMilliseconds() + format = format.replace(/(^|[^\\])fff+/g, '$1' + ii(f, 3)) + f = Math.round(f / 10) + format = format.replace(/(^|[^\\])ff/g, '$1' + ii(f)) + f = Math.round(f / 10) + format = format.replace(/(^|[^\\])f/g, '$1' + f) + + let T = H < 12 ? 'AM' : 'PM' + format = format.replace(/(^|[^\\])TT+/g, '$1' + T) + format = format.replace(/(^|[^\\])T/g, '$1' + T.charAt(0)) + + let t = T.toLowerCase() + format = format.replace(/(^|[^\\])tt+/g, '$1' + t) + format = format.replace(/(^|[^\\])t/g, '$1' + t.charAt(0)) + + let tz = -date.getTimezoneOffset() + let K = utc || !tz ? 'Z' : tz > 0 ? '+' : '-' + + if (!utc) { + tz = Math.abs(tz) + let tzHrs = Math.floor(tz / 60) + let tzMin = tz % 60 + K += ii(tzHrs) + ':' + ii(tzMin) + } + + format = format.replace(/(^|[^\\])K/g, '$1' + K) + + let day = (utc ? date.getUTCDay() : date.getDay()) + 1 + format = format.replace(new RegExp(dddd[0], 'g'), dddd[day]) + format = format.replace(new RegExp(ddd[0], 'g'), ddd[day]) + + format = format.replace(new RegExp(MMMM[0], 'g'), MMMM[M]) + format = format.replace(new RegExp(MMM[0], 'g'), MMM[M]) + + format = format.replace(/\\(.)/g, '$1') + + return format + } + + getTimeUnitsfromTimestamp(minX, maxX, utc) { + let w = this.w + + if (w.config.xaxis.min !== undefined) { + minX = w.config.xaxis.min + } + if (w.config.xaxis.max !== undefined) { + maxX = w.config.xaxis.max + } + + const tsMin = this.getDate(minX) + const tsMax = this.getDate(maxX) + + const minD = this.formatDate(tsMin, 'yyyy MM dd HH mm ss fff').split(' ') + const maxD = this.formatDate(tsMax, 'yyyy MM dd HH mm ss fff').split(' ') + + return { + minMillisecond: parseInt(minD[6], 10), + maxMillisecond: parseInt(maxD[6], 10), + minSecond: parseInt(minD[5], 10), + maxSecond: parseInt(maxD[5], 10), + minMinute: parseInt(minD[4], 10), + maxMinute: parseInt(maxD[4], 10), + minHour: parseInt(minD[3], 10), + maxHour: parseInt(maxD[3], 10), + minDate: parseInt(minD[2], 10), + maxDate: parseInt(maxD[2], 10), + minMonth: parseInt(minD[1], 10) - 1, + maxMonth: parseInt(maxD[1], 10) - 1, + minYear: parseInt(minD[0], 10), + maxYear: parseInt(maxD[0], 10) + } + } + + isLeapYear(year) { + return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 + } + + calculcateLastDaysOfMonth(month, year, subtract) { + const days = this.determineDaysOfMonths(month, year) + + // whatever days we get, subtract the number of days asked + return days - subtract + } + + determineDaysOfYear(year) { + let days = 365 + + if (this.isLeapYear(year)) { + days = 366 + } + + return days + } + + determineRemainingDaysOfYear(year, month, date) { + let dayOfYear = this.daysCntOfYear[month] + date + if (month > 1 && this.isLeapYear()) dayOfYear++ + return dayOfYear + } + + determineDaysOfMonths(month, year) { + let days = 30 + + month = Utils.monthMod(month) + + switch (true) { + case this.months30.indexOf(month) > -1: + if (month === 2) { + if (this.isLeapYear(year)) { + days = 29 + } else { + days = 28 + } + } + + break + + case this.months31.indexOf(month) > -1: + days = 31 + break + + default: + days = 31 + break + } + + return days + } +} + +export default DateTime diff --git a/public/assets/libs/apexcharts/src/utils/Resize.js b/public/assets/libs/apexcharts/src/utils/Resize.js new file mode 100644 index 0000000..5865410 --- /dev/null +++ b/public/assets/libs/apexcharts/src/utils/Resize.js @@ -0,0 +1,45 @@ +// Helpers to react to element resizes, regardless of what caused them +// TODO Currently this creates a new ResizeObserver every time we want to observe an element for resizes +// Ideally, we should be able to use a single observer for all elements +let ros = new WeakMap() // Map callbacks to ResizeObserver instances for easy removal + +export function addResizeListener(el, fn) { + let called = false + + const elRect = el.getBoundingClientRect() + if (el.style.display === 'none' || elRect.width === 0) { + // if elRect.width=0, the chart is not rendered at all + // (it has either display none or hidden in a different tab) + // fixes https://github.com/apexcharts/apexcharts.js/issues/2825 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2991 + // fixes https://github.com/apexcharts/apexcharts.js/issues/2992 + called = true + } + + let ro = new ResizeObserver((r) => { + // ROs fire immediately after being created, + // per spec: https://drafts.csswg.org/resize-observer/#ref-for-element%E2%91%A3 + // we don't want that so we just discard the first run + if (called) { + fn.call(el, r) + } + called = true + }) + + if (el.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { + // Document fragment, observe children instead (needed for Shadow DOM, see #1332) + Array.from(el.children).forEach((c) => ro.observe(c)) + } else { + ro.observe(el) + } + + ros.set(fn, ro) +} + +export function removeResizeListener(el, fn) { + let ro = ros.get(fn) + if (ro) { + ro.disconnect() + ros.delete(fn) + } +} diff --git a/public/assets/libs/apexcharts/src/utils/Utils.js b/public/assets/libs/apexcharts/src/utils/Utils.js new file mode 100644 index 0000000..53c7991 --- /dev/null +++ b/public/assets/libs/apexcharts/src/utils/Utils.js @@ -0,0 +1,402 @@ +/* + ** Generic functions which are not dependent on ApexCharts + */ + +class Utils { + static bind(fn, me) { + return function () { + return fn.apply(me, arguments) + } + } + + static isObject(item) { + return ( + item && typeof item === 'object' && !Array.isArray(item) && item != null + ) + } + + // Type checking that works across different window objects + static is(type, val) { + return Object.prototype.toString.call(val) === '[object ' + type + ']'; + } + + static listToArray(list) { + let i, + array = [] + for (i = 0; i < list.length; i++) { + array[i] = list[i] + } + return array + } + + // to extend defaults with user options + // credit: http://stackoverflow.com/questions/27936772/deep-object-merging-in-es6-es7#answer-34749873 + static extend(target, source) { + if (typeof Object.assign !== 'function') { + ; (function () { + Object.assign = function (target) { + 'use strict' + // We must check against these specific cases. + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object') + } + + let output = Object(target) + for (let index = 1; index < arguments.length; index++) { + let source = arguments[index] + if (source !== undefined && source !== null) { + for (let nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey] + } + } + } + } + return output + } + })() + } + + let output = Object.assign({}, target) + if (this.isObject(target) && this.isObject(source)) { + Object.keys(source).forEach((key) => { + if (this.isObject(source[key])) { + if (!(key in target)) { + Object.assign(output, { + [key]: source[key] + }) + } else { + output[key] = this.extend(target[key], source[key]) + } + } else { + Object.assign(output, { + [key]: source[key] + }) + } + }) + } + return output + } + + static extendArray(arrToExtend, resultArr) { + let extendedArr = [] + arrToExtend.map((item) => { + extendedArr.push(Utils.extend(resultArr, item)) + }) + arrToExtend = extendedArr + return arrToExtend + } + + // If month counter exceeds 12, it starts again from 1 + static monthMod(month) { + return month % 12 + } + + static clone(source) { + if (Utils.is('Array', source)) { + let cloneResult = [] + for (let i = 0; i < source.length; i++) { + cloneResult[i] = this.clone(source[i]) + } + return cloneResult + } else if (Utils.is('Null', source)) { + // fixes an issue where null values were converted to {} + return null + } else if (Utils.is('Date', source)) { + return source + } else if (typeof source === 'object') { + let cloneResult = {} + for (let prop in source) { + if (source.hasOwnProperty(prop)) { + cloneResult[prop] = this.clone(source[prop]) + } + } + return cloneResult + } else { + return source + } + } + + static log10(x) { + return Math.log(x) / Math.LN10 + } + + static roundToBase10(x) { + return Math.pow(10, Math.floor(Math.log10(x))) + } + + static roundToBase(x, base) { + return Math.pow(base, Math.floor(Math.log(x) / Math.log(base))) + } + + static parseNumber(val) { + if (val === null) return val + return parseFloat(val) + } + + static randomId() { + return (Math.random() + 1).toString(36).substring(4) + } + + static noExponents(val) { + let data = String(val).split(/[eE]/) + if (data.length === 1) return data[0] + + let z = '', + sign = val < 0 ? '-' : '', + str = data[0].replace('.', ''), + mag = Number(data[1]) + 1 + + if (mag < 0) { + z = sign + '0.' + while (mag++) z += '0' + return z + str.replace(/^-/, '') + } + mag -= str.length + while (mag--) z += '0' + return str + z + } + + static getDimensions(el) { + const computedStyle = getComputedStyle(el, null) + + let elementHeight = el.clientHeight + let elementWidth = el.clientWidth + elementHeight -= + parseFloat(computedStyle.paddingTop) + + parseFloat(computedStyle.paddingBottom) + elementWidth -= + parseFloat(computedStyle.paddingLeft) + + parseFloat(computedStyle.paddingRight) + + return [elementWidth, elementHeight] + } + + static getBoundingClientRect(element) { + const rect = element.getBoundingClientRect() + return { + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + width: element.clientWidth, + height: element.clientHeight, + x: rect.left, + y: rect.top + } + } + + static getLargestStringFromArr(arr) { + return arr.reduce((a, b) => { + if (Array.isArray(b)) { + b = b.reduce((aa, bb) => (aa.length > bb.length ? aa : bb)) + } + return a.length > b.length ? a : b + }, 0) + } + + // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb#answer-12342275 + static hexToRgba(hex = '#999999', opacity = 0.6) { + if (hex.substring(0, 1) !== '#') { + hex = '#999999' + } + + let h = hex.replace('#', '') + h = h.match(new RegExp('(.{' + h.length / 3 + '})', 'g')) + + for (let i = 0; i < h.length; i++) { + h[i] = parseInt(h[i].length === 1 ? h[i] + h[i] : h[i], 16) + } + + if (typeof opacity !== 'undefined') h.push(opacity) + + return 'rgba(' + h.join(',') + ')' + } + + static getOpacityFromRGBA(rgba) { + return parseFloat(rgba.replace(/^.*,(.+)\)/, '$1')) + } + + static rgb2hex(rgb) { + rgb = rgb.match( + /^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i + ) + return rgb && rgb.length === 4 + ? '#' + + ('0' + parseInt(rgb[1], 10).toString(16)).slice(-2) + + ('0' + parseInt(rgb[2], 10).toString(16)).slice(-2) + + ('0' + parseInt(rgb[3], 10).toString(16)).slice(-2) + : '' + } + + shadeRGBColor(percent, color) { + let f = color.split(','), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = parseInt(f[0].slice(4), 10), + G = parseInt(f[1], 10), + B = parseInt(f[2], 10) + return ( + 'rgb(' + + (Math.round((t - R) * p) + R) + + ',' + + (Math.round((t - G) * p) + G) + + ',' + + (Math.round((t - B) * p) + B) + + ')' + ) + } + + shadeHexColor(percent, color) { + let f = parseInt(color.slice(1), 16), + t = percent < 0 ? 0 : 255, + p = percent < 0 ? percent * -1 : percent, + R = f >> 16, + G = (f >> 8) & 0x00ff, + B = f & 0x0000ff + return ( + '#' + + ( + 0x1000000 + + (Math.round((t - R) * p) + R) * 0x10000 + + (Math.round((t - G) * p) + G) * 0x100 + + (Math.round((t - B) * p) + B) + ) + .toString(16) + .slice(1) + ) + } + + // beautiful color shading blending code + // http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors + shadeColor(p, color) { + if (Utils.isColorHex(color)) { + return this.shadeHexColor(p, color) + } else { + return this.shadeRGBColor(p, color) + } + } + + static isColorHex(color) { + return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)|(^#[0-9A-F]{8}$)/i.test(color) + } + + static getPolygonPos(size, dataPointsLen) { + let dotsArray = [] + let angle = (Math.PI * 2) / dataPointsLen + for (let i = 0; i < dataPointsLen; i++) { + let curPos = {} + curPos.x = size * Math.sin(i * angle) + curPos.y = -size * Math.cos(i * angle) + dotsArray.push(curPos) + } + return dotsArray + } + + static polarToCartesian(centerX, centerY, radius, angleInDegrees) { + let angleInRadians = ((angleInDegrees - 90) * Math.PI) / 180.0 + + return { + x: centerX + radius * Math.cos(angleInRadians), + y: centerY + radius * Math.sin(angleInRadians) + } + } + + static escapeString(str, escapeWith = 'x') { + let newStr = str.toString().slice() + newStr = newStr.replace( + /[` ~!@#$%^&*()_|+\-=?;:'",.<>{}[\]\\/]/gi, + escapeWith + ) + return newStr + } + + static negToZero(val) { + return val < 0 ? 0 : val + } + + static moveIndexInArray(arr, old_index, new_index) { + if (new_index >= arr.length) { + let k = new_index - arr.length + 1 + while (k--) { + arr.push(undefined) + } + } + arr.splice(new_index, 0, arr.splice(old_index, 1)[0]) + return arr + } + + static extractNumber(s) { + return parseFloat(s.replace(/[^\d.]*/g, '')) + } + + static findAncestor(el, cls) { + while ((el = el.parentElement) && !el.classList.contains(cls)); + return el + } + + static setELstyles(el, styles) { + for (let key in styles) { + if (styles.hasOwnProperty(key)) { + el.style.key = styles[key] + } + } + } + + static isNumber(value) { + return ( + !isNaN(value) && + parseFloat(Number(value)) === value && + !isNaN(parseInt(value, 10)) + ) + } + + static isFloat(n) { + return Number(n) === n && n % 1 !== 0 + } + + static isSafari() { + return /^((?!chrome|android).)*safari/i.test(navigator.userAgent) + } + + static isFirefox() { + return navigator.userAgent.toLowerCase().indexOf('firefox') > -1 + } + + static isIE11() { + if ( + window.navigator.userAgent.indexOf('MSIE') !== -1 || + window.navigator.appVersion.indexOf('Trident/') > -1 + ) { + return true + } + } + + static isIE() { + let ua = window.navigator.userAgent + + let msie = ua.indexOf('MSIE ') + if (msie > 0) { + // IE 10 or older => return version number + return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10) + } + + let trident = ua.indexOf('Trident/') + if (trident > 0) { + // IE 11 => return version number + let rv = ua.indexOf('rv:') + return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10) + } + + let edge = ua.indexOf('Edge/') + if (edge > 0) { + // Edge (IE 12+) => return version number + return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10) + } + + // other browser + return false + } +} + +export default Utils diff --git a/public/assets/libs/apexcharts/types/apexcharts.d.ts b/public/assets/libs/apexcharts/types/apexcharts.d.ts new file mode 100644 index 0000000..af81bc8 --- /dev/null +++ b/public/assets/libs/apexcharts/types/apexcharts.d.ts @@ -0,0 +1,1198 @@ +// Typescript declarations for Apex class and module. +// Note: When you have a class and a module with the same name; the module is merged +// with the class. This is necessary since apexcharts exports the main ApexCharts class only. +// +// This is a sparse typed declarations of chart interfaces. See Apex Chart documentation +// for comprehensive API: https://apexcharts.com/docs/options +// +// There is on-going work to provide a comprehensive typed definition for this component. +// See https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28733 + +declare class ApexCharts { + constructor(el: any, options: any) + render(): Promise + updateOptions( + options: any, + redrawPaths?: boolean, + animate?: boolean, + updateSyncedCharts?: boolean + ): Promise + updateSeries( + newSeries: ApexAxisChartSeries | ApexNonAxisChartSeries, + animate?: boolean + ): Promise + appendSeries( + newSeries: ApexAxisChartSeries | ApexNonAxisChartSeries, + animate?: boolean + ): Promise + appendData(data: any[], overwriteInitialSeries?: boolean): void + toggleSeries(seriesName: string): any + showSeries(seriesName: string): void + hideSeries(seriesName: string): void + resetSeries(): void + zoomX(min: number, max: number): void + toggleDataPointSelection(seriesIndex: number, dataPointIndex?: number): any + destroy(): void + setLocale(localeName: string): void + paper(): void + addXaxisAnnotation(options: any, pushToMemory?: boolean, context?: any): void + addYaxisAnnotation(options: any, pushToMemory?: boolean, context?: any): void + addPointAnnotation(options: any, pushToMemory?: boolean, context?: any): void + removeAnnotation(id: string, options?: any): void + clearAnnotations(options?: any): void + dataURI(options?: { scale?: number, width?: number }): Promise<{ imgURI: string } | { blob: Blob }> + static exec(chartID: string, fn: string, ...args: Array): any + static getChartByID(chartID: string): ApexCharts|undefined + static initOnLoad(): void + exports: { + cleanup(): string + svgUrl(): string + dataURI(options?: { scale?: number, width?: number }): Promise<{ imgURI: string } | { blob: Blob }> + exportToSVG(): void + exportToPng(): void + exportToCSV(options?: { series?: any, columnDelimiter?: string, lineDelimiter?: string }): void + getSvgString(scale?: number): void + triggerDownload(href: string, filename?: string, ext?: string): void + } +} + +declare module ApexCharts { + export interface ApexOptions { + annotations?: ApexAnnotations + chart?: ApexChart + colors?: any[] + dataLabels?: ApexDataLabels + fill?: ApexFill + forecastDataPoints?: ApexForecastDataPoints; + grid?: ApexGrid + labels?: string[] + legend?: ApexLegend + markers?: ApexMarkers + noData?: ApexNoData + plotOptions?: ApexPlotOptions + responsive?: ApexResponsive[] + series?: ApexAxisChartSeries | ApexNonAxisChartSeries + states?: ApexStates + stroke?: ApexStroke + subtitle?: ApexTitleSubtitle + theme?: ApexTheme + title?: ApexTitleSubtitle + tooltip?: ApexTooltip + xaxis?: ApexXAxis + yaxis?: ApexYAxis | ApexYAxis[] + } +} + +type ApexDropShadow = { + enabled?: boolean + top?: number + left?: number + blur?: number + opacity?: number + color?: string +} + +/** + * Main Chart options + * See https://apexcharts.com/docs/options/chart/ + */ +type ApexChart = { + width?: string | number + height?: string | number + type?: + | 'line' + | 'area' + | 'bar' + | 'histogram' + | 'pie' + | 'donut' + | 'radialBar' + | 'scatter' + | 'bubble' + | 'heatmap' + | 'candlestick' + | 'boxPlot' + | 'radar' + | 'polarArea' + | 'rangeBar' + | 'treemap' + foreColor?: string + fontFamily?: string + background?: string + offsetX?: number + offsetY?: number + dropShadow?: ApexDropShadow & { + enabledOnSeries?: undefined | number[] + color?: string | string[] + } + events?: { + animationEnd?(chart: any, options?: any): void + beforeMount?(chart: any, options?: any): void + mounted?(chart: any, options?: any): void + updated?(chart: any, options?: any): void + mouseMove?(e: any, chart?: any, options?: any): void + mouseLeave?(e: any, chart?: any, options?: any): void + click?(e: any, chart?: any, options?: any): void + legendClick?(chart: any, seriesIndex?: number, options?: any): void + markerClick?(e: any, chart?: any, options?: any): void + selection?(chart: any, options?: any): void + dataPointSelection?(e: any, chart?: any, options?: any): void + dataPointMouseEnter?(e: any, chart?: any, options?: any): void + dataPointMouseLeave?(e: any, chart?: any, options?: any): void + beforeZoom?(chart: any, options?: any): void + beforeResetZoom?(chart: any, options?: any): void + zoomed?(chart: any, options?: any): void + scrolled?(chart: any, options?: any): void + brushScrolled?(chart: any, options?: any): void + } + brush?: { + enabled?: boolean + autoScaleYaxis?: boolean + target?: string + } + id?: string + group?: string + locales?: ApexLocale[] + defaultLocale?: string + parentHeightOffset?: number + redrawOnParentResize?: boolean + redrawOnWindowResize?: boolean | Function + sparkline?: { + enabled?: boolean + } + stacked?: boolean + stackType?: 'normal' | '100%' + toolbar?: { + show?: boolean + offsetX?: number + offsetY?: number + tools?: { + download?: boolean | string + selection?: boolean | string + zoom?: boolean | string + zoomin?: boolean | string + zoomout?: boolean | string + pan?: boolean | string + reset?: boolean | string + customIcons?: { + icon?: string + title?: string + index?: number + class?: string + click?(chart?: any, options?: any, e?: any): any + }[] + } + export?: { + csv?: { + filename?: undefined | string + columnDelimiter?: string + headerCategory?: string + headerValue?: string + dateFormatter?(timestamp?: number): any + }, + svg?: { + filename?: undefined | string + } + png?: { + filename?: undefined | string + } + } + autoSelected?: 'zoom' | 'selection' | 'pan' + } + zoom?: { + enabled?: boolean + type?: 'x' | 'y' | 'xy' + autoScaleYaxis?: boolean + zoomedArea?: { + fill?: { + color?: string + opacity?: number + } + stroke?: { + color?: string + opacity?: number + width?: number + } + } + } + selection?: { + enabled?: boolean + type?: string + fill?: { + color?: string + opacity?: number + } + stroke?: { + width?: number + color?: string + opacity?: number + dashArray?: number + } + xaxis?: { + min?: number + max?: number + } + yaxis?: { + min?: number + max?: number + } + } + animations?: { + enabled?: boolean + easing?: 'linear' | 'easein' | 'easeout' | 'easeinout' + speed?: number + animateGradually?: { + enabled?: boolean + delay?: number + } + dynamicAnimation?: { + enabled?: boolean + speed?: number + } + } +} + +type ApexStates = { + normal?: { + filter?: { + type?: string + value?: number + } + } + hover?: { + filter?: { + type?: string + value?: number + } + } + active?: { + allowMultipleDataPointsSelection?: boolean + filter?: { + type?: string + value?: number + } + } +} + +/** + * Chart Title options + * See https://apexcharts.com/docs/options/title/ + */ +type ApexTitleSubtitle = { + text?: string + align?: 'left' | 'center' | 'right' + margin?: number + offsetX?: number + offsetY?: number + floating?: boolean + style?: { + fontSize?: string + fontFamily?: string + fontWeight?: string | number + color?: string + } +} + +/** + * Chart Series options. + * Use ApexNonAxisChartSeries for Pie and Donut charts. + * See https://apexcharts.com/docs/options/series/ + * + * According to the documentation at + * https://apexcharts.com/docs/series/ + * Section 1: data can be a list of single numbers + * Sections 2.1 and 3.1: data can be a list of tuples of two numbers + * Sections 2.2 and 3.2: data can be a list of objects where x is a string + * and y is a number + * And according to the demos, data can contain null. + * https://apexcharts.com/javascript-chart-demos/line-charts/null-values/ + */ +type ApexAxisChartSeries = { + name?: string + type?: string + color?: string + data: + | (number | null)[] + | { + x: any; + y: any; + fillColor?: string; + strokeColor?: string; + meta?: any; + goals?: any; + }[] + | [number, number | null][] + | [number, (number | null)[]][]; +}[] + +type ApexNonAxisChartSeries = number[] + +/** + * Options for the line drawn on line and area charts. + * See https://apexcharts.com/docs/options/stroke/ + */ +type ApexStroke = { + show?: boolean + curve?: 'smooth' | 'straight' | 'stepline' | ('smooth' | 'straight' | 'stepline')[] + lineCap?: 'butt' | 'square' | 'round' + colors?: string[] + width?: number | number[] + dashArray?: number | number[] + fill?: ApexFill +} + +type ApexAnnotations = { + position?: string + yaxis?: YAxisAnnotations[] + xaxis?: XAxisAnnotations[] + points?: PointAnnotations[] + texts?: TextAnnotations[] + images?: ImageAnnotations[] +} + +type AnnotationLabel = { + borderColor?: string + borderWidth?: number + borderRadius?: number + text?: string + textAnchor?: string + offsetX?: number + offsetY?: number + style?: AnnotationStyle + position?: string + orientation?: string + mouseEnter?: Function + mouseLeave?: Function +} + +type AnnotationStyle = { + background?: string + color?: string + fontFamily?: string + fontWeight?: string | number + fontSize?: string + cssClass?: string + padding?: { + left?: number + right?: number + top?: number + bottom?: number + } +} + +type XAxisAnnotations = { + id?: number | string + x?: null | number | string + x2?: null | number | string + strokeDashArray?: number + fillColor?: string + borderColor?: string + borderWidth?: number + opacity?: number + offsetX?: number + offsetY?: number + label?: AnnotationLabel +} + +type YAxisAnnotations = { + id?: number | string + y?: null | number | string + y2?: null | number | string + strokeDashArray?: number + fillColor?: string + borderColor?: string + borderWidth?: number + opacity?: number + offsetX?: number + offsetY?: number + width?: number | string + yAxisIndex?: number + label?: AnnotationLabel +} + +type PointAnnotations = { + id?: number | string + x?: number | string + y?: null | number + yAxisIndex?: number + seriesIndex?: number + mouseEnter?: Function + mouseLeave?: Function + marker?: { + size?: number + fillColor?: string + strokeColor?: string + strokeWidth?: number + shape?: string + offsetX?: number + offsetY?: number + radius?: number + cssClass?: string + } + label?: AnnotationLabel + image?: { + path?: string + width?: number + height?: number + offsetX?: number + offsetY?: number + } +} + + +type TextAnnotations = { + x?: number + y?: number + text?: string + textAnchor?: string + foreColor?: string + fontSize?: string | number + fontFamily?: undefined | string + fontWeight?: string | number + backgroundColor?: string + borderColor?: string + borderRadius?: number + borderWidth?: number + paddingLeft?: number + paddingRight?: number + paddingTop?: number + paddingBottom?: number +} + +type ImageAnnotations = { + path?: string + x?: number, + y?: number, + width?: number, + height?: number, +} + +/** + * Options for localization. + * See https://apexcharts.com/docs/options/chart/locales + */ +type ApexLocale = { + name?: string + options?: { + months?: string[] + shortMonths?: string[] + days?: string[] + shortDays?: string[] + toolbar?: { + download?: string + selection?: string + selectionZoom?: string + zoomIn?: string + zoomOut?: string + pan?: string + reset?: string + exportToSVG?: string + exportToPNG?: string + exportToCSV: string + } + } +} + +/** + * PlotOptions for specifying chart-type-specific configuration. + * See https://apexcharts.com/docs/options/plotoptions/bar/ + */ +type ApexPlotOptions = { + area?: { + fillTo?: 'origin' | 'end' + } + bar?: { + horizontal?: boolean + columnWidth?: string + barHeight?: string + distributed?: boolean + borderRadius?: number | number[] + rangeBarOverlap?: boolean + rangeBarGroupRows?: boolean + colors?: { + ranges?: { + from?: number + to?: number + color?: string + }[] + backgroundBarColors?: string[] + backgroundBarOpacity?: number + backgroundBarRadius?: number + } + dataLabels?: { + maxItems?: number + hideOverflowingLabels?: boolean + position?: string + orientation?: 'horizontal' | 'vertical' + } + } + bubble?: { + minBubbleRadius?: number + maxBubbleRadius?: number + } + candlestick?: { + colors?: { + upward?: string + downward?: string + } + wick?: { + useFillColor?: boolean + } + } + boxPlot?: { + colors?: { + upper?: string, + lower?: string + } + } + heatmap?: { + radius?: number + enableShades?: boolean + shadeIntensity?: number + reverseNegativeShade?: boolean + distributed?: boolean + useFillColorAsStroke?: boolean + colorScale?: { + ranges?: { + from?: number + to?: number + color?: string + foreColor?: string + name?: string + }[] + inverse?: boolean + min?: number + max?: number + } + } + treemap?: { + enableShades?: boolean + shadeIntensity?: number + distributed?: boolean + reverseNegativeShade?: boolean + useFillColorAsStroke?: boolean + colorScale?: { + inverse?: boolean + ranges?: { + from?: number + to?: number + color?: string + foreColor?: string + name?: string + }[]; + min?: number + max?: number + }; + } + pie?: { + startAngle?: number + endAngle?: number + customScale?: number + offsetX?: number + offsetY?: number + expandOnClick?: boolean + dataLabels?: { + offset?: number + minAngleToShowLabel?: number + } + donut?: { + size?: string + background?: string + labels?: { + show?: boolean + name?: { + show?: boolean + fontSize?: string + fontFamily?: string + fontWeight?: string | number + color?: string + offsetY?: number, + formatter?(val: string): string + } + value?: { + show?: boolean + fontSize?: string + fontFamily?: string + fontWeight?: string | number + color?: string + offsetY?: number + formatter?(val: string): string + } + total?: { + show?: boolean + showAlways?: boolean + fontFamily?: string + fontWeight?: string | number + fontSize?: string + label?: string + color?: string + formatter?(w: any): string + } + } + } + } + polarArea?: { + rings?: { + strokeWidth?: number + strokeColor?: string + } + spokes?: { + strokeWidth?: number; + connectorColors?: string | string[]; + }; + } + radar?: { + size?: number + offsetX?: number + offsetY?: number + polygons?: { + strokeColors?: string | string[] + strokeWidth?: string | string[] + connectorColors?: string | string[] + fill?: { + colors?: string[] + } + } + } + radialBar?: { + inverseOrder?: boolean + startAngle?: number + endAngle?: number + offsetX?: number + offsetY?: number + hollow?: { + margin?: number + size?: string + background?: string + image?: string + imageWidth?: number + imageHeight?: number + imageOffsetX?: number + imageOffsetY?: number + imageClipped?: boolean + position?: 'front' | 'back' + dropShadow?: ApexDropShadow + } + track?: { + show?: boolean + startAngle?: number + endAngle?: number + background?: string + strokeWidth?: string + opacity?: number + margin?: number + dropShadow?: ApexDropShadow + } + dataLabels?: { + show?: boolean + name?: { + show?: boolean + fontFamily?: string + fontWeight?: string | number + fontSize?: string + color?: string + offsetY?: number + } + value?: { + show?: boolean + fontFamily?: string + fontSize?: string + fontWeight?: string | number + color?: string + offsetY?: number + formatter?(val: number): string + } + total?: { + show?: boolean + label?: string + color?: string + fontFamily?: string + fontWeight?: string | number + fontSize?: string + formatter?(opts: any): string + } + } + } +} + +type ApexFill = { + colors?: any[] + opacity?: number | number[] + type?: string | string[] + gradient?: { + shade?: string + type?: string + shadeIntensity?: number + gradientToColors?: string[] + inverseColors?: boolean + opacityFrom?: number + opacityTo?: number + stops?: number[], + colorStops?: any[] + } + image?: { + src?: string | string[] + width?: number + height?: number + } + pattern?: { + style?: string | string[] + width?: number + height?: number + strokeWidth?: number + } +} + +/** + * Chart Legend configuration options. + * See https://apexcharts.com/docs/options/legend/ + */ +type ApexLegend = { + show?: boolean + showForSingleSeries?: boolean + showForNullSeries?: boolean + showForZeroSeries?: boolean + floating?: boolean + inverseOrder?: boolean + position?: 'top' | 'right' | 'bottom' | 'left' + horizontalAlign?: 'left' | 'center' | 'right' + fontSize?: string + fontFamily?: string + fontWeight?: string | number + width?: number + height?: number + offsetX?: number + offsetY?: number + formatter?(legendName: string, opts?: any): string + tooltipHoverFormatter?(legendName: string, opts?: any): string + textAnchor?: string + customLegendItems?: string[] + labels?: { + colors?: string | string[] + useSeriesColors?: boolean + } + markers?: { + width?: number + height?: number + strokeColor?: string + strokeWidth?: number + fillColors?: string[] + offsetX?: number + offsetY?: number + radius?: number + customHTML?(): any + onClick?(): void + } + itemMargin?: { + horizontal?: number + vertical?: number + } + containerMargin?: { + left?: number + top?: number + } + onItemClick?: { + toggleDataSeries?: boolean + } + onItemHover?: { + highlightDataSeries?: boolean + } +} + +type ApexMarkerShape = "circle" | "square" | "rect" | string[] + +type ApexDiscretePoint = { + seriesIndex?: number + dataPointIndex?: number + fillColor?: string + strokeColor?: string + size?: number + shape?: ApexMarkerShape +} + +type ApexMarkers = { + size?: number | number[] + colors?: string | string[] + strokeColors?: string | string[] + strokeWidth?: number | number[] + strokeOpacity?: number | number[] + strokeDashArray?: number | number[] + fillOpacity?: number | number[] + discrete?: ApexDiscretePoint[] + shape?: ApexMarkerShape + width?: number | number[] + height?: number | number[] + radius?: number + offsetX?: number + offsetY?: number + showNullDataPoints?: boolean + onClick?(e?: any): void + onDblClick?(e?: any): void + hover?: { + size?: number + sizeOffset?: number + } +} + +type ApexNoData = { + text?: string + align?: 'left' | 'right' | 'center' + verticalAlign?: 'top' | 'middle' | 'bottom' + offsetX?: number + offsetY?: number + style?: { + color?: string + fontSize?: string + fontFamily?: string + } +} + +/** + * Chart Datalabels options + * See https://apexcharts.com/docs/options/datalabels/ + */ +type ApexDataLabels = { + enabled?: boolean + enabledOnSeries?: undefined | number[] + textAnchor?: 'start' | 'middle' | 'end' + distributed?: boolean + offsetX?: number + offsetY?: number + style?: { + fontSize?: string + fontFamily?: string + fontWeight?: string | number + colors?: any[] + } + background?: { + enabled?: boolean + foreColor?: string + borderRadius?: number + padding?: number + opacity?: number + borderWidth?: number + borderColor?: string + dropShadow: ApexDropShadow + } + dropShadow?: ApexDropShadow + formatter?(val: string | number | number[], opts?: any): string | number +} + +type ApexResponsive = { + breakpoint?: number + options?: any +} + +type ApexTooltipY = { + title?: { + formatter?(seriesName: string): string + } + formatter?(val: number, opts?: any): string +} + +/** + * Chart Tooltip options + * See https://apexcharts.com/docs/options/tooltip/ + */ +type ApexTooltip = { + enabled?: boolean + enabledOnSeries?: undefined | number[] + shared?: boolean + followCursor?: boolean + intersect?: boolean + inverseOrder?: boolean + custom?: ((options: any) => any) | ((options: any) => any)[] + fillSeriesColor?: boolean + theme?: string + cssClass?: string + style?: { + fontSize?: string + fontFamily?: string + } + onDatasetHover?: { + highlightDataSeries?: boolean + } + x?: { + show?: boolean + format?: string + formatter?(val: number, opts?: any): string + } + y?: ApexTooltipY | ApexTooltipY[] + z?: { + title?: string + formatter?(val: number): string + } + marker?: { + show?: boolean + fillColors?: string[] + } + items?: { + display?: string + } + fixed?: { + enabled?: boolean + position?: string // topRight; topLeft; bottomRight; bottomLeft + offsetX?: number + offsetY?: number + } +} + +/** + * X Axis options + * See https://apexcharts.com/docs/options/xaxis/ + */ +type ApexXAxis = { + type?: 'category' | 'datetime' | 'numeric' + categories?: any; + overwriteCategories?: number[] | string[] | undefined; + offsetX?: number; + offsetY?: number; + sorted?: boolean; + labels?: { + show?: boolean + rotate?: number + rotateAlways?: boolean + hideOverlappingLabels?: boolean + showDuplicates?: boolean + trim?: boolean + minHeight?: number + maxHeight?: number + style?: { + colors?: string | string[] + fontSize?: string + fontFamily?: string + fontWeight?: string | number + cssClass?: string + } + offsetX?: number + offsetY?: number + format?: string + formatter?(value: string, timestamp?: number, opts?:any): string | string[] + datetimeUTC?: boolean + datetimeFormatter?: { + year?: string + month?: string + day?: string + hour?: string + minute?: string + } + } + group?: { + groups?: { title: string, cols: number }[], + style?: { + colors?: string | string[] + fontSize?: string + fontFamily?: string + fontWeight?: string | number + cssClass?: string + } + } + axisBorder?: { + show?: boolean + color?: string + offsetX?: number + offsetY?: number + strokeWidth?: number + } + axisTicks?: { + show?: boolean + borderType?: string + color?: string + height?: number + offsetX?: number + offsetY?: number + } + tickPlacement?: string + tickAmount?: number | 'dataPoints' + min?: number + max?: number + range?: number + floating?: boolean + decimalsInFloat?: number + position?: string + title?: { + text?: string + offsetX?: number + offsetY?: number + style?: { + color?: string + fontFamily?: string + fontWeight?: string | number + fontSize?: string + cssClass?: string + } + } + crosshairs?: { + show?: boolean + width?: number | string + position?: string + opacity?: number + stroke?: { + color?: string + width?: number + dashArray?: number + } + fill?: { + type?: string + color?: string + gradient?: { + colorFrom?: string + colorTo?: string + stops?: number[] + opacityFrom?: number + opacityTo?: number + } + } + dropShadow?: ApexDropShadow + } + tooltip?: { + enabled?: boolean + offsetY?: number + formatter?(value: string, opts?: object): string + style?: { + fontSize?: string + fontFamily?: string + } + } +} + +/** + * Y Axis options + * See https://apexcharts.com/docs/options/yaxis/ + */ + +type ApexYAxis = { + show?: boolean + showAlways?: boolean + showForNullSeries?: boolean + seriesName?: string + opposite?: boolean + reversed?: boolean + logarithmic?: boolean, + logBase?: number, + tickAmount?: number + forceNiceScale?: boolean + min?: number | ((min: number) => number) + max?: number | ((max: number) => number) + floating?: boolean + decimalsInFloat?: number + labels?: { + show?: boolean + minWidth?: number + maxWidth?: number + offsetX?: number + offsetY?: number + rotate?: number + align?: 'left' | 'center' | 'right' + padding?: number + style?: { + colors?: string | string[] + fontSize?: string + fontWeight?: string | number + fontFamily?: string + cssClass?: string + } + formatter?(val: number, opts?: any): string | string[] + } + axisBorder?: { + show?: boolean + color?: string + width?: number + offsetX?: number + offsetY?: number + } + axisTicks?: { + show?: boolean + color?: string + width?: number + offsetX?: number + offsetY?: number + } + title?: { + text?: string + rotate?: number + offsetX?: number + offsetY?: number + style?: { + color?: string + fontSize?: string + fontWeight?: string | number + fontFamily?: string + cssClass?: string + } + } + crosshairs?: { + show?: boolean + position?: string + stroke?: { + color?: string + width?: number + dashArray?: number + } + } + tooltip?: { + enabled?: boolean + offsetX?: number + } +} + +type ApexForecastDataPoints = { + count?: number + fillOpacity?: number + strokeWidth?: undefined | number + dashArray: number +} + +/** + * Plot X and Y grid options + * See https://apexcharts.com/docs/options/grid/ + */ +type ApexGrid = { + show?: boolean + borderColor?: string + strokeDashArray?: number + position?: 'front' | 'back' + xaxis?: { + lines?: { + show?: boolean + offsetX?: number + offsetY?: number + } + } + yaxis?: { + lines?: { + show?: boolean + offsetX?: number + offsetY?: number + } + } + row?: { + colors?: string[] + opacity?: number + } + column?: { + colors?: string[] + opacity?: number + } + padding?: { + top?: number + right?: number + bottom?: number + left?: number + } +} + +type ApexTheme = { + mode?: 'light' | 'dark' + palette?: string + monochrome?: { + enabled?: boolean + color?: string + shadeTo?: 'light' | 'dark' + shadeIntensity?: number + } +} + +declare module 'apexcharts' { + export = ApexCharts +} diff --git a/public/assets/libs/bootstrap/LICENSE b/public/assets/libs/bootstrap/LICENSE new file mode 100644 index 0000000..dda75ca --- /dev/null +++ b/public/assets/libs/bootstrap/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2011-2022 Twitter, Inc. +Copyright (c) 2011-2022 The Bootstrap Authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/public/assets/libs/bootstrap/README.md b/public/assets/libs/bootstrap/README.md new file mode 100644 index 0000000..4821c17 --- /dev/null +++ b/public/assets/libs/bootstrap/README.md @@ -0,0 +1,247 @@ +

    + + Bootstrap logo + +

    + +

    Bootstrap

    + +

    + Sleek, intuitive, and powerful front-end framework for faster and easier web development. +
    + Explore Bootstrap docs » +
    +
    + Report bug + · + Request feature + · + Themes + · + Blog +

    + + +## Bootstrap 5 + +Our default branch is for development of our Bootstrap 5 release. Head to the [`v4-dev` branch](https://github.com/twbs/bootstrap/tree/v4-dev) to view the readme, documentation, and source code for Bootstrap 4. + + +## Table of contents + +- [Quick start](#quick-start) +- [Status](#status) +- [What's included](#whats-included) +- [Bugs and feature requests](#bugs-and-feature-requests) +- [Documentation](#documentation) +- [Contributing](#contributing) +- [Community](#community) +- [Versioning](#versioning) +- [Creators](#creators) +- [Thanks](#thanks) +- [Copyright and license](#copyright-and-license) + + +## Quick start + +Several quick start options are available: + +- [Download the latest release](https://github.com/twbs/bootstrap/archive/v5.2.0-beta1.zip) +- Clone the repo: `git clone https://github.com/twbs/bootstrap.git` +- Install with [npm](https://www.npmjs.com/): `npm install bootstrap` +- Install with [yarn](https://yarnpkg.com/): `yarn add bootstrap` +- Install with [Composer](https://getcomposer.org/): `composer require twbs/bootstrap:5.2.0-beta1` +- Install with [NuGet](https://www.nuget.org/): CSS: `Install-Package bootstrap` Sass: `Install-Package bootstrap.sass` + +Read the [Getting started page](https://getbootstrap.com/docs/5.2/getting-started/introduction/) for information on the framework contents, templates, examples, and more. + + +## Status + +[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/) +[![Build Status](https://img.shields.io/github/workflow/status/twbs/bootstrap/JS%20Tests/main?label=JS%20Tests&logo=github)](https://github.com/twbs/bootstrap/actions?query=workflow%3AJS+Tests+branch%3Amain) +[![npm version](https://img.shields.io/npm/v/bootstrap)](https://www.npmjs.com/package/bootstrap) +[![Gem version](https://img.shields.io/gem/v/bootstrap)](https://rubygems.org/gems/bootstrap) +[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue)](https://atmospherejs.com/twbs/bootstrap) +[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap)](https://packagist.org/packages/twbs/bootstrap) +[![NuGet](https://img.shields.io/nuget/vpre/bootstrap)](https://www.nuget.org/packages/bootstrap/absoluteLatest) +[![Coverage Status](https://img.shields.io/coveralls/github/twbs/bootstrap/main)](https://coveralls.io/github/twbs/bootstrap?branch=main) +[![CSS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=gzip&label=CSS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) +[![CSS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/css/bootstrap.min.css?compression=brotli&label=CSS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/css/bootstrap.min.css) +[![JS gzip size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=gzip&label=JS%20gzip%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) +[![JS Brotli size](https://img.badgesize.io/twbs/bootstrap/main/dist/js/bootstrap.min.js?compression=brotli&label=JS%20Brotli%20size)](https://github.com/twbs/bootstrap/blob/main/dist/js/bootstrap.min.js) +[![BrowserStack Status](https://www.browserstack.com/automate/badge.svg?badge_key=SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229)](https://www.browserstack.com/automate/public-build/SkxZcStBeExEdVJqQ2hWYnlWckpkNmNEY213SFp6WHFETWk2bGFuY3pCbz0tLXhqbHJsVlZhQnRBdEpod3NLSDMzaHc9PQ==--3d0b75245708616eb93113221beece33e680b229) +[![Backers on Open Collective](https://img.shields.io/opencollective/backers/bootstrap)](#backers) +[![Sponsors on Open Collective](https://img.shields.io/opencollective/sponsors/bootstrap)](#sponsors) + + +## What's included + +Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. + +
    + Download contents + + ```text + bootstrap/ + ├── css/ + │ ├── bootstrap-grid.css + │ ├── bootstrap-grid.css.map + │ ├── bootstrap-grid.min.css + │ ├── bootstrap-grid.min.css.map + │ ├── bootstrap-grid.rtl.css + │ ├── bootstrap-grid.rtl.css.map + │ ├── bootstrap-grid.rtl.min.css + │ ├── bootstrap-grid.rtl.min.css.map + │ ├── bootstrap-reboot.css + │ ├── bootstrap-reboot.css.map + │ ├── bootstrap-reboot.min.css + │ ├── bootstrap-reboot.min.css.map + │ ├── bootstrap-reboot.rtl.css + │ ├── bootstrap-reboot.rtl.css.map + │ ├── bootstrap-reboot.rtl.min.css + │ ├── bootstrap-reboot.rtl.min.css.map + │ ├── bootstrap-utilities.css + │ ├── bootstrap-utilities.css.map + │ ├── bootstrap-utilities.min.css + │ ├── bootstrap-utilities.min.css.map + │ ├── bootstrap-utilities.rtl.css + │ ├── bootstrap-utilities.rtl.css.map + │ ├── bootstrap-utilities.rtl.min.css + │ ├── bootstrap-utilities.rtl.min.css.map + │ ├── bootstrap.css + │ ├── bootstrap.css.map + │ ├── bootstrap.min.css + │ ├── bootstrap.min.css.map + │ ├── bootstrap.rtl.css + │ ├── bootstrap.rtl.css.map + │ ├── bootstrap.rtl.min.css + │ └── bootstrap.rtl.min.css.map + └── js/ + ├── bootstrap.bundle.js + ├── bootstrap.bundle.js.map + ├── bootstrap.bundle.min.js + ├── bootstrap.bundle.min.js.map + ├── bootstrap.esm.js + ├── bootstrap.esm.js.map + ├── bootstrap.esm.min.js + ├── bootstrap.esm.min.js.map + ├── bootstrap.js + ├── bootstrap.js.map + ├── bootstrap.min.js + └── bootstrap.min.js.map + ``` +
    + +We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Popper](https://popper.js.org/). + + +## Bugs and feature requests + +Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new). + + +## Documentation + +Bootstrap's documentation, included in this repo in the root directory, is built with [Hugo](https://gohugo.io/) and publicly hosted on GitHub Pages at . The docs may also be run locally. + +Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in `site/assets/js/search.js`. + +### Running documentation locally + +1. Run `npm install` to install the Node.js dependencies, including Hugo (the site builder). +2. Run `npm run test` (or a specific npm script) to rebuild distributed CSS and JavaScript files, as well as our docs assets. +3. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line. +4. Open `http://localhost:9001/` in your browser, and voilà. + +Learn more about using Hugo by reading its [documentation](https://gohugo.io/documentation/). + +### Documentation for previous releases + +You can find all our previous releases docs on . + +[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. + + +## Contributing + +Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/main/.github/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. + +Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/main/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo). + +Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/main/.editorconfig) for easy use in common text editors. Read more and download plugins at . + + +## Community + +Get updates on Bootstrap's development and chat with the project maintainers and community members. + +- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap). +- Read and subscribe to [The Official Bootstrap Blog](https://blog.getbootstrap.com/). +- Join [the official Slack room](https://bootstrap-slack.herokuapp.com/). +- Chat with fellow Bootstrappers in IRC. On the `irc.libera.chat` server, in the `#bootstrap` channel. +- Implementation help may be found at Stack Overflow (tagged [`bootstrap-5`](https://stackoverflow.com/questions/tagged/bootstrap-5)). +- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability. + + +## Versioning + +For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](https://semver.org/). Sometimes we screw up, but we adhere to those rules whenever possible. + +See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](https://blog.getbootstrap.com/) contain summaries of the most noteworthy changes made in each release. + + +## Creators + +**Mark Otto** + +- +- + +**Jacob Thornton** + +- +- + + +## Thanks + + + BrowserStack + + +Thanks to [BrowserStack](https://www.browserstack.com/) for providing the infrastructure that allows us to test in real browsers! + + + Netlify + + +Thanks to [Netlify](https://www.netlify.com/) for providing us with Deploy Previews! + + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/bootstrap#sponsor)] + +[![OC sponsor 0](https://opencollective.com/bootstrap/sponsor/0/avatar.svg)](https://opencollective.com/bootstrap/sponsor/0/website) +[![OC sponsor 1](https://opencollective.com/bootstrap/sponsor/1/avatar.svg)](https://opencollective.com/bootstrap/sponsor/1/website) +[![OC sponsor 2](https://opencollective.com/bootstrap/sponsor/2/avatar.svg)](https://opencollective.com/bootstrap/sponsor/2/website) +[![OC sponsor 3](https://opencollective.com/bootstrap/sponsor/3/avatar.svg)](https://opencollective.com/bootstrap/sponsor/3/website) +[![OC sponsor 4](https://opencollective.com/bootstrap/sponsor/4/avatar.svg)](https://opencollective.com/bootstrap/sponsor/4/website) +[![OC sponsor 5](https://opencollective.com/bootstrap/sponsor/5/avatar.svg)](https://opencollective.com/bootstrap/sponsor/5/website) +[![OC sponsor 6](https://opencollective.com/bootstrap/sponsor/6/avatar.svg)](https://opencollective.com/bootstrap/sponsor/6/website) +[![OC sponsor 7](https://opencollective.com/bootstrap/sponsor/7/avatar.svg)](https://opencollective.com/bootstrap/sponsor/7/website) +[![OC sponsor 8](https://opencollective.com/bootstrap/sponsor/8/avatar.svg)](https://opencollective.com/bootstrap/sponsor/8/website) +[![OC sponsor 9](https://opencollective.com/bootstrap/sponsor/9/avatar.svg)](https://opencollective.com/bootstrap/sponsor/9/website) + + +## Backers + +Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/bootstrap#backer)] + +[![Backers](https://opencollective.com/bootstrap/backers.svg?width=890)](https://opencollective.com/bootstrap#backers) + + +## Copyright and license + +Code and documentation copyright 2011–2022 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/main/LICENSE). Docs released under [Creative Commons](https://creativecommons.org/licenses/by/3.0/). diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css new file mode 100644 index 0000000..5792f32 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css @@ -0,0 +1,4226 @@ +/*! + * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text: #0a58ca; + --bs-secondary-text: #6c757d; + --bs-success-text: #146c43; + --bs-info-text: #087990; + --bs-warning-text: #997404; + --bs-danger-text: #b02a37; + --bs-light-text: #6c757d; + --bs-dark-text: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #f8f9fa; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #e9ecef; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + --bs-emphasis-color: #000; + --bs-form-control-bg: var(--bs-body-bg); + --bs-form-control-disabled-bg: var(--bs-secondary-bg); + --bs-highlight-bg: #fff3cd; + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +[data-bs-theme=dark] { + --bs-body-color: #adb5bd; + --bs-body-color-rgb: 173, 181, 189; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #f8f9fa; + --bs-emphasis-color-rgb: 248, 249, 250; + --bs-secondary-color: rgba(173, 181, 189, 0.75); + --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(173, 181, 189, 0.5); + --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-emphasis-color: #fff; + --bs-primary-text: #6ea8fe; + --bs-secondary-text: #dee2e6; + --bs-success-text: #75b798; + --bs-info-text: #6edff6; + --bs-warning-text: #ffda6a; + --bs-danger-text: #ea868f; + --bs-light-text: #f8f9fa; + --bs-dark-text: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #212529; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #495057; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #055160; + --bs-warning-border-subtle: #664d03; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: #fff; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #9ec5fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 158, 197, 254; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + box-sizing: border-box; + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +@media (min-width: 576px) { + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 768px) { + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 992px) { + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 1200px) { + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } +} +@media (min-width: 1400px) { + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} + +/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css.map b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css.map new file mode 100644 index 0000000..41b6c20 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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,yBAAA;ERoyDV;EQ3yDM;IAOI,wBAAA;ERuyDV;EQ9yDM;IAOI,yBAAA;ER0yDV;EQjzDM;IAOI,6BAAA;ER6yDV;EQpzDM;IAOI,8BAAA;ERgzDV;EQvzDM;IAOI,wBAAA;ERmzDV;EQ1zDM;IAOI,+BAAA;ERszDV;EQ7zDM;IAOI,wBAAA;ERyzDV;EQh0DM;IAOI,yBAAA;ER4zDV;EQn0DM;IAOI,8BAAA;ER+zDV;EQt0DM;IAOI,iCAAA;ERk0DV;EQz0DM;IAOI,sCAAA;ERq0DV;EQ50DM;IAOI,yCAAA;ERw0DV;EQ/0DM;IAOI,uBAAA;ER20DV;EQl1DM;IAOI,uBAAA;ER80DV;EQr1DM;IAOI,yBAAA;ERi1DV;EQx1DM;IAOI,yBAAA;ERo1DV;EQ31DM;IAOI,0BAAA;ERu1DV;EQ91DM;IAOI,4BAAA;ER01DV;EQj2DM;IAOI,kCAAA;ER61DV;EQp2DM;IAOI,sCAAA;ERg2DV;EQv2DM;IAOI,oCAAA;ERm2DV;EQ12DM;IAOI,kCAAA;ERs2DV;EQ72DM;IAOI,yCAAA;ERy2DV;EQh3DM;IAOI,wCAAA;ER42DV;EQn3DM;IAOI,wCAAA;ER+2DV;EQt3DM;IAOI,kCAAA;ERk3DV;EQz3DM;IAOI,gCAAA;ERq3DV;EQ53DM;IAOI,8BAAA;ERw3DV;EQ/3DM;IAOI,gCAAA;ER23DV;EQl4DM;IAOI,+BAAA;ER83DV;EQr4DM;IAOI,oCAAA;ERi4DV;EQx4DM;IAOI,kCAAA;ERo4DV;EQ34DM;IAOI,gCAAA;ERu4DV;EQ94DM;IAOI,uCAAA;ER04DV;EQj5DM;IAOI,sCAAA;ER64DV;EQp5DM;IAOI,iCAAA;ERg5DV;EQv5DM;IAOI,2BAAA;ERm5DV;EQ15DM;IAOI,iCAAA;ERs5DV;EQ75DM;IAOI,+BAAA;ERy5DV;EQh6DM;IAOI,6BAAA;ER45DV;EQn6DM;IAOI,+BAAA;ER+5DV;EQt6DM;IAOI,8BAAA;ERk6DV;EQz6DM;IAOI,oBAAA;ERq6DV;EQ56DM;IAOI,mBAAA;ERw6DV;EQ/6DM;IAOI,mBAAA;ER26DV;EQl7DM;IAOI,mBAAA;ER86DV;EQr7DM;IAOI,mBAAA;ERi7DV;EQx7DM;IAOI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EQjtEM;IAOI,+BAAA;ER6sEV;EQptEM;IAOI,iCAAA;ERgtEV;EQvtEM;IAOI,+BAAA;ERmtEV;EQ1tEM;IAOI,0BAAA;ERstEV;EQ7tEM;IAOI,gCAAA;ERytEV;EQhuEM;IAOI,+BAAA;ER4tEV;EQnuEM;IAOI,6BAAA;ER+tEV;EQtuEM;IAOI,+BAAA;ERkuEV;EQzuEM;IAOI,6BAAA;ERquEV;AACF;AIhvEI;EIGI;IAOI,0BAAA;ER0uEV;EQjvEM;IAOI,gCAAA;ER6uEV;EQpvEM;IAOI,yBAAA;ERgvEV;EQvvEM;IAOI,wBAAA;ERmvEV;EQ1vEM;IAOI,yBAAA;ERsvEV;EQ7vEM;IAOI,6BAAA;ERyvEV;EQhwEM;IAOI,8BAAA;ER4vEV;EQnwEM;IAOI,wBAAA;ER+vEV;EQtwEM;IAOI,+BAAA;ERkwEV;EQzwEM;IAOI,wBAAA;ERqwEV;EQ5wEM;IAOI,yBAAA;ERwwEV;EQ/wEM;IAOI,8BAAA;ER2wEV;EQlxEM;IAOI,iCAAA;ER8wEV;EQrxEM;IAOI,sCAAA;ERixEV;EQxxEM;IAOI,yCAAA;ERoxEV;EQ3xEM;IAOI,uBAAA;ERuxEV;EQ9xEM;IAOI,uBAAA;ER0xEV;EQjyEM;IAOI,yBAAA;ER6xEV;EQpyEM;IAOI,yBAAA;ERgyEV;EQvyEM;IAOI,0BAAA;ERmyEV;EQ1yEM;IAOI,4BAAA;ERsyEV;EQ7yEM;IAOI,kCAAA;ERyyEV;EQhzEM;IAOI,sCAAA;ER4yEV;EQnzEM;IAOI,oCAAA;ER+yEV;EQtzEM;IAOI,kCAAA;ERkzEV;EQzzEM;IAOI,yCAAA;ERqzEV;EQ5zEM;IAOI,wCAAA;ERwzEV;EQ/zEM;IAOI,wCAAA;ER2zEV;EQl0EM;IAOI,kCAAA;ER8zEV;EQr0EM;IAOI,gCAAA;ERi0EV;EQx0EM;IAOI,8BAAA;ERo0EV;EQ30EM;IAOI,gCAAA;ERu0EV;EQ90EM;IAOI,+BAAA;ER00EV;EQj1EM;IAOI,oCAAA;ER60EV;EQp1EM;IAOI,kCAAA;ERg1EV;EQv1EM;IAOI,gCAAA;ERm1EV;EQ11EM;IAOI,uCAAA;ERs1EV;EQ71EM;IAOI,sCAAA;ERy1EV;EQh2EM;IAOI,iCA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FM;IAOI,4BAAA;ERqnFV;EQ5nFM;IAOI,8BAAA;ERwnFV;EQ/nFM;IAOI,4BAAA;ER2nFV;EQloFM;IAOI,2BAAA;ER8nFV;EQroFM;IAOI,iCAAA;ERioFV;EQxoFM;IAOI,gCAAA;ERooFV;EQ3oFM;IAOI,8BAAA;ERuoFV;EQ9oFM;IAOI,gCAAA;ER0oFV;EQjpFM;IAOI,8BAAA;ER6oFV;EQppFM;IAOI,4BAAA;ERgpFV;EQvpFM;IAOI,kCAAA;ERmpFV;EQ1pFM;IAOI,iCAAA;ERspFV;EQ7pFM;IAOI,+BAAA;ERypFV;EQhqFM;IAOI,iCAAA;ER4pFV;EQnqFM;IAOI,+BAAA;ER+pFV;EQtqFM;IAOI,0BAAA;ERkqFV;EQzqFM;IAOI,gCAAA;ERqqFV;EQ5qFM;IAOI,+BAAA;ERwqFV;EQ/qFM;IAOI,6BAAA;ER2qFV;EQlrFM;IAOI,+BAAA;ER8qFV;EQrrFM;IAOI,6BAAA;ERirFV;AACF;AI5rFI;EIGI;IAOI,0BAAA;ERsrFV;EQ7rFM;IAOI,gCAAA;ERyrFV;EQhsFM;IAOI,yBAAA;ER4rFV;EQnsFM;IAOI,wBAAA;ER+rFV;EQtsFM;IAOI,yBAAA;ERksFV;EQzsFM;IAOI,6BAAA;ERqsFV;EQ5sFM;IAOI,8BAAA;ERwsFV;EQ/sFM;IAOI,wBAAA;ER2sFV;EQltFM;IAOI,+BAAA;ER8sFV;EQrtFM;IAOI,wBAAA;ERitFV;EQxtFM;IAOI,yBAAA;ERotFV;EQ3tFM;IAOI,8BAAA;ERutFV;EQ9tFM;IAOI,iCAAA;ER0tFV;EQjuFM;IAOI,sCAAA;ER6tFV;EQpuFM;IAOI,yCAAA;ERguFV;EQvuFM;IAOI,uBAAA;ERmuFV;EQ1uFM;IAOI,uBAAA;ERsuFV;EQ7uFM;IAOI,yBAAA;ERyuFV;EQhvFM;IAOI,yBAAA;ER4uFV;EQnvFM;IAOI,0BAAA;ER+uFV;EQtvFM;IAOI,4BAAA;ERkvFV;EQzvFM;IAOI,kCAAA;ERqvFV;EQ5vFM;IAOI,sCAAA;ERwvFV;EQ/vFM;IAOI,oCAAA;ER2vFV;EQlwFM;IAOI,kCAAA;ER8vFV;EQrwFM;IAOI,yCAAA;ERiwFV;EQxwFM;IAOI,wCAAA;E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3lHM;IAOI,wBAAA;ERulHV;EQ9lHM;IAOI,yBAAA;ER0lHV;EQjmHM;IAOI,6BAAA;ER6lHV;EQpmHM;IAOI,8BAAA;ERgmHV;EQvmHM;IAOI,wBAAA;ERmmHV;EQ1mHM;IAOI,+BAAA;ERsmHV;EQ7mHM;IAOI,wBAAA;ERymHV;EQhnHM;IAOI,yBAAA;ER4mHV;EQnnHM;IAOI,8BAAA;ER+mHV;EQtnHM;IAOI,iCAAA;ERknHV;EQznHM;IAOI,sCAAA;ERqnHV;EQ5nHM;IAOI,yCAAA;ERwnHV;EQ/nHM;IAOI,uBAAA;ER2nHV;EQloHM;IAOI,uBAAA;ER8nHV;EQroHM;IAOI,yBAAA;ERioHV;EQxoHM;IAOI,yBAAA;ERooHV;EQ3oHM;IAOI,0BAAA;ERuoHV;EQ9oHM;IAOI,4BAAA;ER0oHV;EQjpHM;IAOI,kCAAA;ER6oHV;EQppHM;IAOI,sCAAA;ERgpHV;EQvpHM;IAOI,oCAAA;ERmpHV;EQ1pHM;IAOI,kCAAA;ERspHV;EQ7pHM;IAOI,yCAAA;ERypHV;EQhqHM;IAOI,wCAAA;ER4pHV;EQnqHM;IAOI,wCAAA;ER+pHV;EQtqHM;IAOI,kCAAA;ERkqHV;EQzqHM;IAOI,gCAAA;ERqqHV;EQ5qHM;IAOI,8BAAA;ERwqHV;EQ/qHM;IAOI,gCAAA;ER2qHV;EQlrHM;IAOI,+BAAA;ER8qHV;EQrrHM;IAOI,oCAAA;ERirHV;EQxrHM;IAOI,kCAAA;ERorHV;EQ3rHM;IAOI,gCAAA;ERurHV;EQ9rHM;IAOI,uCAAA;ER0rHV;EQjsHM;IAOI,sCAAA;ER6rHV;EQpsHM;IAOI,iCAAA;ERgsHV;EQvsHM;IAOI,2BAAA;ERmsHV;EQ1sHM;IAOI,iCAAA;ERssHV;EQ7sHM;IAOI,+BAAA;ERysHV;EQhtHM;IAOI,6BAAA;ER4sHV;EQntHM;IAOI,+BAAA;ER+sHV;EQttHM;IAOI,8BAAA;ERktHV;EQztHM;IAOI,oBAAA;ERqtHV;EQ5tHM;IAOI,mBAAA;ERwtHV;EQ/tHM;IAOI,mBAAA;ER2tHV;EQluHM;IAOI,mBAAA;ER8tHV;EQruHM;IAOI,mBAAA;ERiuHV;EQxuHM;IAOI,mBAAA;ERouHV;EQ3uHM;IAOI,mBAAA;ERuuHV;EQ9uHM;IAOI,mBAAA;ER0uHV;EQjvHM;IAOI,oBAAA;ER6uHV;EQpvHM;IAOI,0BAAA;ERgvHV;EQvvHM;IAOI,yBAAA;ERmvHV;EQ1vHM;IAOI,uBAAA;ERsvHV;EQ7vHM;IAOI,yBAAA;ERyvHV;EQhwHM;IAOI,uBAAA;ER4vHV;EQnwHM;IAOI,uBAAA;ER+vHV;EQtwHM;IAOI,0BAAA;IAAA,yBAAA;ERmwHV;EQ1wHM;IAOI,gCAAA;IAAA,+BAAA;ERuwHV;EQ9wHM;IAOI,+BAAA;IAAA,8BAAA;ER2wHV;EQlxHM;IAOI,6BAAA;IAAA,4BAAA;ER+wHV;EQtxHM;IAOI,+BAAA;IAAA,8BAAA;ERmxHV;EQ1xHM;IAOI,6BAAA;IAAA,4BAAA;ERuxHV;EQ9xHM;IAOI,6BAAA;IAAA,4BAAA;ER2xHV;EQlyHM;IAOI,wBAAA;IAAA,2BAAA;ER+xHV;EQtyHM;IAOI,8BAAA;IAAA,iCAAA;ERmyHV;EQ1yHM;IAOI,6BAAA;IAAA,gCAAA;ERuyHV;EQ9yHM;IAOI,2BAAA;IAAA,8BAAA;ER2yHV;EQlzHM;IAOI,6BAAA;IAAA,gCAAA;ER+yHV;EQtzHM;IAOI,2BAAA;IAAA,8BAAA;ERmzHV;EQ1zHM;IAOI,2BAAA;IAAA,8BAAA;ERuzHV;EQ9zHM;IAOI,wBAAA;ER0zHV;EQj0HM;IAOI,8BAAA;ER6zHV;EQp0HM;IAOI,6BAAA;ERg0HV;EQv0HM;IAOI,2BAAA;ERm0HV;EQ10HM;IAOI,6BAAA;ERs0HV;EQ70HM;IAOI,2BAAA;ERy0HV;EQh1HM;IAOI,2BAAA;ER40HV;EQn1HM;IAOI,0BAAA;ER+0HV;EQt1HM;IAOI,gCAAA;ERk1HV;EQz1HM;IAOI,+BAAA;ERq1HV;EQ51HM;IAOI,6BAAA;ERw1HV;EQ/1HM;IAOI,+BAAA;ER21HV;EQl2HM;IAOI,6BAAA;ER81HV;EQr2HM;IAOI,6BAAA;ERi2HV;EQx2HM;IAOI,2BAAA;ERo2HV;EQ32HM;IAOI,iCAAA;ERu2HV;EQ92HM;IAOI,gCAAA;ER02HV;EQj3HM;IAOI,8BAAA;ER62HV;EQp3HM;IAOI,gCAAA;ERg3HV;EQv3HM;IAOI,8BAAA;ERm3HV;EQ13HM;IAOI,8BAAA;ERs3HV;EQ73HM;IAOI,yBAAA;ERy3HV;EQh4HM;IAOI,+BAAA;ER43HV;EQn4HM;IAOI,8BAAA;ER+3HV;EQt4HM;IAOI,4BAAA;ERk4HV;EQz4HM;IAOI,8BAAA;ERq4HV;EQ54HM;IAOI,4BAAA;ERw4HV;EQ/4HM;IAOI,4BAAA;ER24HV;EQl5HM;IAOI,qBAAA;ER84HV;EQr5HM;IAOI,2BAAA;ERi5HV;EQx5HM;IAOI,0BAAA;ERo5HV;EQ35HM;IAOI,wBAAA;ERu5HV;EQ95HM;IAOI,0BAAA;ER05HV;EQj6HM;IAOI,wBAAA;ER65HV;EQp6HM;IAOI,2BAAA;IAAA,0BAAA;ERi6HV;EQx6HM;IAOI,iCAAA;IAAA,gCAAA;ERq6HV;EQ56HM;IAOI,gCAAA;IAAA,+BAAA;ERy6HV;EQh7HM;IAOI,8BAAA;IAAA,6BAAA;ER66HV;EQp7HM;IAOI,gCAAA;IAAA,+BAAA;ERi7HV;EQx7HM;IAOI,8BAAA;IAAA,6BAAA;ERq7HV;EQ57HM;IAOI,yBAAA;IAAA,4BAAA;ERy7HV;EQh8HM;IAOI,+BAAA;IAAA,kCAAA;ER67HV;EQp8HM;IAOI,8BAAA;IAAA,iCAAA;ERi8HV;EQx8HM;IAOI,4BAAA;IAAA,+BAAA;ERq8HV;EQ58HM;IAOI,8BAAA;IAAA,iCAAA;ERy8HV;EQh9HM;IAOI,4BAAA;IAAA,+BAAA;ER68HV;EQp9HM;IAOI,yBAAA;ERg9HV;EQv9HM;IAOI,+BAAA;ERm9HV;EQ19HM;IAOI,8BAAA;ERs9HV;EQ79HM;IAOI,4BAAA;ERy9HV;EQh+HM;IAOI,8BAAA;ER49HV;EQn+HM;IAOI,4BAAA;ER+9HV;EQt+HM;IAOI,2BAAA;ERk+HV;EQz+HM;IAOI,iCAAA;ERq+HV;EQ5+HM;IAOI,gCAAA;ERw+HV;EQ/+HM;IAOI,8BAAA;ER2+HV;EQl/HM;IAOI,gCAAA;ER8+HV;EQr/HM;IAOI,8BAAA;ERi/HV;EQx/HM;IAOI,4BAAA;ERo/HV;EQ3/HM;IAOI,kCAAA;ERu/HV;EQ9/HM;IAOI,iCAAA;ER0/HV;EQjgIM;IAOI,+BAAA;ER6/HV;EQpgIM;IAOI,iCAAA;ERggIV;EQvgIM;IAOI,+BAAA;ERmgIV;EQ1gIM;IAOI,0BAAA;ERsgIV;EQ7gIM;IAOI,gCAAA;ERygIV;EQhhIM;IAOI,+BAAA;ER4gIV;EQnhIM;IAOI,6BAAA;ER+gIV;EQthIM;IAOI,+BAAA;ERkhIV;EQzhIM;IAOI,6BAAA;ERqhIV;AACF;ASzjIA;ED4BQ;IAOI,0BAAA;ER0hIV;EQjiIM;IAOI,gCAAA;ER6hIV;EQpiIM;IAOI,yBAAA;ERgiIV;EQviIM;IAOI,wBAAA;ERmiIV;EQ1iIM;IAOI,yBAAA;ERsiIV;EQ7iIM;IAOI,6BAAA;ERyiIV;EQhjIM;IAOI,8BAAA;ER4iIV;EQnjIM;IAOI,wBAAA;ER+iIV;EQtjIM;IAOI,+BAAA;ERkjIV;EQzjIM;IAOI,wBAAA;ERqjIV;AACF","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n$primary-text: $blue-600 !default;\n$secondary-text: $gray-600 !default;\n$success-text: $green-600 !default;\n$info-text: $cyan-700 !default;\n$warning-text: $yellow-700 !default;\n$danger-text: $red-600 !default;\n$light-text: $gray-600 !default;\n$dark-text: $gray-700 !default;\n\n$primary-bg-subtle: $blue-100 !default;\n$secondary-bg-subtle: $gray-100 !default;\n$success-bg-subtle: $green-100 !default;\n$info-bg-subtle: $cyan-100 !default;\n$warning-bg-subtle: $yellow-100 !default;\n$danger-bg-subtle: $red-100 !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n\n$primary-border-subtle: $blue-200 !default;\n$secondary-border-subtle: $gray-200 !default;\n$success-border-subtle: $green-200 !default;\n$info-border-subtle: $cyan-200 !default;\n$warning-border-subtle: $yellow-200 !default;\n$danger-border-subtle: $red-200 !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-emphasis-color: $black !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-2xl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba(var(--#{$prefix}body-color-rgb), .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba(var(--#{$prefix}body-color-rgb), .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: var(--#{$prefix}secondary-color) !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: transparent !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}form-control-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}form-control-disabled-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default; //$gray-400\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc($input-border-width * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.875em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}success-text),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}success),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}danger-text),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}danger),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc($dropdown-border-radius - $dropdown-border-width) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc($pagination-border-width * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default; // Sass variable because of $accordion-button-icon\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc($popover-border-radius - $popover-border-width) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css new file mode 100644 index 0000000..d6c50ce --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text:#0a58ca;--bs-secondary-text:#6c757d;--bs-success-text:#146c43;--bs-info-text:#087990;--bs-warning-text:#997404;--bs-danger-text:#b02a37;--bs-light-text:#6c757d;--bs-dark-text:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#f8f9fa;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#e9ecef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#fff3cd;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#f8f9fa;--bs-emphasis-color-rgb:248,249,250;--bs-secondary-color:rgba(173, 181, 189, 0.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173, 181, 189, 0.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#6ea8fe;--bs-secondary-text:#dee2e6;--bs-success-text:#75b798;--bs-info-text:#6edff6;--bs-warning-text:#ffda6a;--bs-danger-text:#ea868f;--bs-light-text:#f8f9fa;--bs-dark-text:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#055160;--bs-warning-border-subtle:#664d03;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#6ea8fe;--bs-link-hover-color:#9ec5fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:158,197,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css.map b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css.map new file mode 100644 index 0000000..ff0a5e4 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap-grid.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css new file mode 100644 index 0000000..a35343a --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css @@ -0,0 +1,4225 @@ +/*! + * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text: #0a58ca; + --bs-secondary-text: #6c757d; + --bs-success-text: #146c43; + --bs-info-text: #087990; + --bs-warning-text: #997404; + --bs-danger-text: #b02a37; + --bs-light-text: #6c757d; + --bs-dark-text: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #f8f9fa; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #e9ecef; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + --bs-emphasis-color: #000; + --bs-form-control-bg: var(--bs-body-bg); + --bs-form-control-disabled-bg: var(--bs-secondary-bg); + --bs-highlight-bg: #fff3cd; + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +[data-bs-theme=dark] { + --bs-body-color: #adb5bd; + --bs-body-color-rgb: 173, 181, 189; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #f8f9fa; + --bs-emphasis-color-rgb: 248, 249, 250; + --bs-secondary-color: rgba(173, 181, 189, 0.75); + --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(173, 181, 189, 0.5); + --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-emphasis-color: #fff; + --bs-primary-text: #6ea8fe; + --bs-secondary-text: #dee2e6; + --bs-success-text: #75b798; + --bs-info-text: #6edff6; + --bs-warning-text: #ffda6a; + --bs-danger-text: #ea868f; + --bs-light-text: #f8f9fa; + --bs-dark-text: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #212529; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #495057; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #055160; + --bs-warning-border-subtle: #664d03; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: #fff; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #9ec5fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 158, 197, 254; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-left: calc(var(--bs-gutter-x) * 0.5); + padding-right: calc(var(--bs-gutter-x) * 0.5); + margin-left: auto; + margin-right: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + box-sizing: border-box; + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-left: calc(var(--bs-gutter-x) * 0.5); + padding-right: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-right: 8.33333333%; +} + +.offset-2 { + margin-right: 16.66666667%; +} + +.offset-3 { + margin-right: 25%; +} + +.offset-4 { + margin-right: 33.33333333%; +} + +.offset-5 { + margin-right: 41.66666667%; +} + +.offset-6 { + margin-right: 50%; +} + +.offset-7 { + margin-right: 58.33333333%; +} + +.offset-8 { + margin-right: 66.66666667%; +} + +.offset-9 { + margin-right: 75%; +} + +.offset-10 { + margin-right: 83.33333333%; +} + +.offset-11 { + margin-right: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-right: 0; + } + .offset-sm-1 { + margin-right: 8.33333333%; + } + .offset-sm-2 { + margin-right: 16.66666667%; + } + .offset-sm-3 { + margin-right: 25%; + } + .offset-sm-4 { + margin-right: 33.33333333%; + } + .offset-sm-5 { + margin-right: 41.66666667%; + } + .offset-sm-6 { + margin-right: 50%; + } + .offset-sm-7 { + margin-right: 58.33333333%; + } + .offset-sm-8 { + margin-right: 66.66666667%; + } + .offset-sm-9 { + margin-right: 75%; + } + .offset-sm-10 { + margin-right: 83.33333333%; + } + .offset-sm-11 { + margin-right: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-right: 0; + } + .offset-md-1 { + margin-right: 8.33333333%; + } + .offset-md-2 { + margin-right: 16.66666667%; + } + .offset-md-3 { + margin-right: 25%; + } + .offset-md-4 { + margin-right: 33.33333333%; + } + .offset-md-5 { + margin-right: 41.66666667%; + } + .offset-md-6 { + margin-right: 50%; + } + .offset-md-7 { + margin-right: 58.33333333%; + } + .offset-md-8 { + margin-right: 66.66666667%; + } + .offset-md-9 { + margin-right: 75%; + } + .offset-md-10 { + margin-right: 83.33333333%; + } + .offset-md-11 { + margin-right: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-right: 0; + } + .offset-lg-1 { + margin-right: 8.33333333%; + } + .offset-lg-2 { + margin-right: 16.66666667%; + } + .offset-lg-3 { + margin-right: 25%; + } + .offset-lg-4 { + margin-right: 33.33333333%; + } + .offset-lg-5 { + margin-right: 41.66666667%; + } + .offset-lg-6 { + margin-right: 50%; + } + .offset-lg-7 { + margin-right: 58.33333333%; + } + .offset-lg-8 { + margin-right: 66.66666667%; + } + .offset-lg-9 { + margin-right: 75%; + } + .offset-lg-10 { + margin-right: 83.33333333%; + } + .offset-lg-11 { + margin-right: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-right: 0; + } + .offset-xl-1 { + margin-right: 8.33333333%; + } + .offset-xl-2 { + margin-right: 16.66666667%; + } + .offset-xl-3 { + margin-right: 25%; + } + .offset-xl-4 { + margin-right: 33.33333333%; + } + .offset-xl-5 { + margin-right: 41.66666667%; + } + .offset-xl-6 { + margin-right: 50%; + } + .offset-xl-7 { + margin-right: 58.33333333%; + } + .offset-xl-8 { + margin-right: 66.66666667%; + } + .offset-xl-9 { + margin-right: 75%; + } + .offset-xl-10 { + margin-right: 83.33333333%; + } + .offset-xl-11 { + margin-right: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-right: 0; + } + .offset-xxl-1 { + margin-right: 8.33333333%; + } + .offset-xxl-2 { + margin-right: 16.66666667%; + } + .offset-xxl-3 { + margin-right: 25%; + } + .offset-xxl-4 { + margin-right: 33.33333333%; + } + .offset-xxl-5 { + margin-right: 41.66666667%; + } + .offset-xxl-6 { + margin-right: 50%; + } + .offset-xxl-7 { + margin-right: 58.33333333%; + } + .offset-xxl-8 { + margin-right: 66.66666667%; + } + .offset-xxl-9 { + margin-right: 75%; + } + .offset-xxl-10 { + margin-right: 83.33333333%; + } + .offset-xxl-11 { + margin-right: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-left: 0 !important; + margin-right: 0 !important; +} + +.mx-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; +} + +.mx-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; +} + +.mx-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; +} + +.mx-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; +} + +.mx-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; +} + +.mx-auto { + margin-left: auto !important; + margin-right: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-left: 0 !important; +} + +.me-1 { + margin-left: 0.25rem !important; +} + +.me-2 { + margin-left: 0.5rem !important; +} + +.me-3 { + margin-left: 1rem !important; +} + +.me-4 { + margin-left: 1.5rem !important; +} + +.me-5 { + margin-left: 3rem !important; +} + +.me-auto { + margin-left: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-right: 0 !important; +} + +.ms-1 { + margin-right: 0.25rem !important; +} + +.ms-2 { + margin-right: 0.5rem !important; +} + +.ms-3 { + margin-right: 1rem !important; +} + +.ms-4 { + margin-right: 1.5rem !important; +} + +.ms-5 { + margin-right: 3rem !important; +} + +.ms-auto { + margin-right: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-left: 0 !important; + padding-right: 0 !important; +} + +.px-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; +} + +.px-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; +} + +.px-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; +} + +.px-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; +} + +.px-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-left: 0 !important; +} + +.pe-1 { + padding-left: 0.25rem !important; +} + +.pe-2 { + padding-left: 0.5rem !important; +} + +.pe-3 { + padding-left: 1rem !important; +} + +.pe-4 { + padding-left: 1.5rem !important; +} + +.pe-5 { + padding-left: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-right: 0 !important; +} + +.ps-1 { + padding-right: 0.25rem !important; +} + +.ps-2 { + padding-right: 0.5rem !important; +} + +.ps-3 { + padding-right: 1rem !important; +} + +.ps-4 { + padding-right: 1.5rem !important; +} + +.ps-5 { + padding-right: 3rem !important; +} + +@media (min-width: 576px) { + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-sm-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-sm-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-sm-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-sm-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-sm-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-sm-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-left: 0 !important; + } + .me-sm-1 { + margin-left: 0.25rem !important; + } + .me-sm-2 { + margin-left: 0.5rem !important; + } + .me-sm-3 { + margin-left: 1rem !important; + } + .me-sm-4 { + margin-left: 1.5rem !important; + } + .me-sm-5 { + margin-left: 3rem !important; + } + .me-sm-auto { + margin-left: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-right: 0 !important; + } + .ms-sm-1 { + margin-right: 0.25rem !important; + } + .ms-sm-2 { + margin-right: 0.5rem !important; + } + .ms-sm-3 { + margin-right: 1rem !important; + } + .ms-sm-4 { + margin-right: 1.5rem !important; + } + .ms-sm-5 { + margin-right: 3rem !important; + } + .ms-sm-auto { + margin-right: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-sm-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-sm-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-sm-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-sm-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-sm-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-left: 0 !important; + } + .pe-sm-1 { + padding-left: 0.25rem !important; + } + .pe-sm-2 { + padding-left: 0.5rem !important; + } + .pe-sm-3 { + padding-left: 1rem !important; + } + .pe-sm-4 { + padding-left: 1.5rem !important; + } + .pe-sm-5 { + padding-left: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-right: 0 !important; + } + .ps-sm-1 { + padding-right: 0.25rem !important; + } + .ps-sm-2 { + padding-right: 0.5rem !important; + } + .ps-sm-3 { + padding-right: 1rem !important; + } + .ps-sm-4 { + padding-right: 1.5rem !important; + } + .ps-sm-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 768px) { + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-md-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-md-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-md-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-md-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-md-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-md-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-left: 0 !important; + } + .me-md-1 { + margin-left: 0.25rem !important; + } + .me-md-2 { + margin-left: 0.5rem !important; + } + .me-md-3 { + margin-left: 1rem !important; + } + .me-md-4 { + margin-left: 1.5rem !important; + } + .me-md-5 { + margin-left: 3rem !important; + } + .me-md-auto { + margin-left: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-right: 0 !important; + } + .ms-md-1 { + margin-right: 0.25rem !important; + } + .ms-md-2 { + margin-right: 0.5rem !important; + } + .ms-md-3 { + margin-right: 1rem !important; + } + .ms-md-4 { + margin-right: 1.5rem !important; + } + .ms-md-5 { + margin-right: 3rem !important; + } + .ms-md-auto { + margin-right: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-md-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-md-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-md-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-md-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-md-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-left: 0 !important; + } + .pe-md-1 { + padding-left: 0.25rem !important; + } + .pe-md-2 { + padding-left: 0.5rem !important; + } + .pe-md-3 { + padding-left: 1rem !important; + } + .pe-md-4 { + padding-left: 1.5rem !important; + } + .pe-md-5 { + padding-left: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-right: 0 !important; + } + .ps-md-1 { + padding-right: 0.25rem !important; + } + .ps-md-2 { + padding-right: 0.5rem !important; + } + .ps-md-3 { + padding-right: 1rem !important; + } + .ps-md-4 { + padding-right: 1.5rem !important; + } + .ps-md-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 992px) { + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-lg-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-lg-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-lg-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-lg-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-lg-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-lg-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-left: 0 !important; + } + .me-lg-1 { + margin-left: 0.25rem !important; + } + .me-lg-2 { + margin-left: 0.5rem !important; + } + .me-lg-3 { + margin-left: 1rem !important; + } + .me-lg-4 { + margin-left: 1.5rem !important; + } + .me-lg-5 { + margin-left: 3rem !important; + } + .me-lg-auto { + margin-left: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-right: 0 !important; + } + .ms-lg-1 { + margin-right: 0.25rem !important; + } + .ms-lg-2 { + margin-right: 0.5rem !important; + } + .ms-lg-3 { + margin-right: 1rem !important; + } + .ms-lg-4 { + margin-right: 1.5rem !important; + } + .ms-lg-5 { + margin-right: 3rem !important; + } + .ms-lg-auto { + margin-right: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-lg-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-lg-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-lg-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-lg-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-lg-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-left: 0 !important; + } + .pe-lg-1 { + padding-left: 0.25rem !important; + } + .pe-lg-2 { + padding-left: 0.5rem !important; + } + .pe-lg-3 { + padding-left: 1rem !important; + } + .pe-lg-4 { + padding-left: 1.5rem !important; + } + .pe-lg-5 { + padding-left: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-right: 0 !important; + } + .ps-lg-1 { + padding-right: 0.25rem !important; + } + .ps-lg-2 { + padding-right: 0.5rem !important; + } + .ps-lg-3 { + padding-right: 1rem !important; + } + .ps-lg-4 { + padding-right: 1.5rem !important; + } + .ps-lg-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 1200px) { + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xl-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-left: 0 !important; + } + .me-xl-1 { + margin-left: 0.25rem !important; + } + .me-xl-2 { + margin-left: 0.5rem !important; + } + .me-xl-3 { + margin-left: 1rem !important; + } + .me-xl-4 { + margin-left: 1.5rem !important; + } + .me-xl-5 { + margin-left: 3rem !important; + } + .me-xl-auto { + margin-left: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-right: 0 !important; + } + .ms-xl-1 { + margin-right: 0.25rem !important; + } + .ms-xl-2 { + margin-right: 0.5rem !important; + } + .ms-xl-3 { + margin-right: 1rem !important; + } + .ms-xl-4 { + margin-right: 1.5rem !important; + } + .ms-xl-5 { + margin-right: 3rem !important; + } + .ms-xl-auto { + margin-right: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xl-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-left: 0 !important; + } + .pe-xl-1 { + padding-left: 0.25rem !important; + } + .pe-xl-2 { + padding-left: 0.5rem !important; + } + .pe-xl-3 { + padding-left: 1rem !important; + } + .pe-xl-4 { + padding-left: 1.5rem !important; + } + .pe-xl-5 { + padding-left: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-right: 0 !important; + } + .ps-xl-1 { + padding-right: 0.25rem !important; + } + .ps-xl-2 { + padding-right: 0.5rem !important; + } + .ps-xl-3 { + padding-right: 1rem !important; + } + .ps-xl-4 { + padding-right: 1.5rem !important; + } + .ps-xl-5 { + padding-right: 3rem !important; + } +} +@media (min-width: 1400px) { + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-left: 0 !important; + margin-right: 0 !important; + } + .mx-xxl-1 { + margin-left: 0.25rem !important; + margin-right: 0.25rem !important; + } + .mx-xxl-2 { + margin-left: 0.5rem !important; + margin-right: 0.5rem !important; + } + .mx-xxl-3 { + margin-left: 1rem !important; + margin-right: 1rem !important; + } + .mx-xxl-4 { + margin-left: 1.5rem !important; + margin-right: 1.5rem !important; + } + .mx-xxl-5 { + margin-left: 3rem !important; + margin-right: 3rem !important; + } + .mx-xxl-auto { + margin-left: auto !important; + margin-right: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-left: 0 !important; + } + .me-xxl-1 { + margin-left: 0.25rem !important; + } + .me-xxl-2 { + margin-left: 0.5rem !important; + } + .me-xxl-3 { + margin-left: 1rem !important; + } + .me-xxl-4 { + margin-left: 1.5rem !important; + } + .me-xxl-5 { + margin-left: 3rem !important; + } + .me-xxl-auto { + margin-left: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-right: 0 !important; + } + .ms-xxl-1 { + margin-right: 0.25rem !important; + } + .ms-xxl-2 { + margin-right: 0.5rem !important; + } + .ms-xxl-3 { + margin-right: 1rem !important; + } + .ms-xxl-4 { + margin-right: 1.5rem !important; + } + .ms-xxl-5 { + margin-right: 3rem !important; + } + .ms-xxl-auto { + margin-right: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-left: 0 !important; + padding-right: 0 !important; + } + .px-xxl-1 { + padding-left: 0.25rem !important; + padding-right: 0.25rem !important; + } + .px-xxl-2 { + padding-left: 0.5rem !important; + padding-right: 0.5rem !important; + } + .px-xxl-3 { + padding-left: 1rem !important; + padding-right: 1rem !important; + } + .px-xxl-4 { + padding-left: 1.5rem !important; + padding-right: 1.5rem !important; + } + .px-xxl-5 { + padding-left: 3rem !important; + padding-right: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-left: 0 !important; + } + .pe-xxl-1 { + padding-left: 0.25rem !important; + } + .pe-xxl-2 { + padding-left: 0.5rem !important; + } + .pe-xxl-3 { + padding-left: 1rem !important; + } + .pe-xxl-4 { + padding-left: 1.5rem !important; + } + .pe-xxl-5 { + padding-left: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-right: 0 !important; + } + .ps-xxl-1 { + padding-right: 0.25rem !important; + } + .ps-xxl-2 { + padding-right: 0.5rem !important; + } + .ps-xxl-3 { + padding-right: 1rem !important; + } + .ps-xxl-4 { + padding-right: 1.5rem !important; + } + .ps-xxl-5 { + padding-right: 3rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css.map b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css.map new file mode 100644 index 0000000..66b2117 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"AACE;;;;EAAA;ACDF;;EASI,kBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,kBAAA;EAAA,iBAAA;EAAA,oBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAAA,kBAAA;EAAA,gBAAA;EAAA,gBAAA;EAAA,kBAAA;EAAA,uBAAA;EAIA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAAA,sBAAA;EAIA,qBAAA;EAAA,uBAAA;EAAA,qBAAA;EAAA,kBAAA;EAAA,qBAAA;EAAA,oBAAA;EAAA,mBAAA;EAAA,kBAAA;EAIA,8BAAA;EAAA,iCAAA;EAAA,6BAAA;EAAA,2BAAA;EAAA,6BAAA;EAAA,4BAAA;EAAA,6BAAA;EAAA,yBAAA;EAIA,0BAAA;EAAA,4BAAA;EAAA,0BAAA;EAAA,uBAAA;EAAA,0BAAA;EAAA,yBAAA;EAAA,wBAAA;EAAA,uBAAA;EAIA,+BAAA;EAAA,iCAAA;EAAA,+BAAA;EAAA,4BAAA;EAAA,+BAAA;EAAA,8BAAA;EAAA,6BAAA;EAAA,4BAAA;EAIA,mCAAA;EAAA,qCAAA;EAAA,mCAAA;EAAA,gCAAA;EAAA,mCAAA;EAAA,kCAAA;EAAA,iCAAA;EAAA,gCAAA;EAGF,6BAAA;EACA,uBAAA;EACA,+BAAA;EACA,+BAAA;EAMA,qNAAA;EACA,yGAAA;EACA,yFAAA;EAOA,gDAAA;EC+OI,yBALI;EDxOR,0BAAA;EACA,0BAAA;EACA,wBAAA;EAEA,yBAAA;EACA,gCAAA;EAEA,4CAAA;EACA,oCAAA;EACA,0BAAA;EACA,oCAAA;EAEA,0CAAA;EACA,mCAAA;EACA,yBAAA;EACA,mCAAA;EAKA,kBAAA;EACA,+BAAA;EAOA,wBAAA;EACA,iCAAA;EACA,+BAAA;EAEA,8BAAA;EACA,sCAAA;EAMA,wBAAA;EACA,0BAAA;EAGA,sBAAA;EACA,wBAAA;EACA,0BAAA;EACA,mDAAA;EAEA,4BAAA;EACA,8BAAA;EACA,6BAAA;EACA,2BAAA;EACA,4BAAA;EACA,8BAAA;EAGA,mEAAA;EACA,4EAAA;EACA,qEAAA;EACA,4EAAA;EAEA,yBAAA;EAGA,uCAAA;EACA,qDAAA;EAGA,0BAAA;EAGE,qBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,yBAAA;EAAA,0BAAA;EAAA,2BAAA;AEFJ;;AC9GI;EHuHA,wBAAA;EACA,kCAAA;EACA,qBAAA;EACA,4BAAA;EAEA,4BAAA;EACA,sCAAA;EAEA,+CAAA;EACA,uCAAA;EACA,0BAAA;EACA,iCAAA;EAEA,6CAAA;EACA,sCAAA;EACA,yBAAA;EACA,gCAAA;EAEA,yBAAA;EAEA,0BAAA;EACA,4BAAA;EACA,0BAAA;EACA,uBAAA;EACA,0BAAA;EACA,yBAAA;EACA,wBAAA;EACA,uBAAA;EAEA,+BAAA;EACA,iCAAA;EACA,+BAAA;EACA,4BAAA;EACA,+BAAA;EACA,8BAAA;EACA,6BAAA;EACA,4BAAA;EAEA,mCAAA;EACA,qCAAA;EACA,mCAAA;EACA,gCAAA;EACA,mCAAA;EACA,kCAAA;EACA,iCAAA;EACA,gCAAA;EAEA,wBAAA;EAEA,wBAAA;EACA,8BAAA;EACA,kCAAA;EACA,wCAAA;EAEA,wBAAA;EAEA,0BAAA;EACA,wDAAA;AEhBJ;;AEzKE;;;;;;;ECHA,qBAAA;EACA,gBAAA;EACA,WAAA;EACA,4CAAA;EACA,6CAAA;EACA,iBAAA;EACA,kBAAA;AHsLF;;AIhII;EF5CE;IACE,gBGqde;ELrSrB;AACF;AItII;EF5CE;IACE,gBGqde;ELhSrB;AACF;AI3II;EF5CE;IACE,gBGqde;EL3RrB;AACF;AIhJI;EF5CE;IACE,iBGqde;ELtRrB;AACF;AIrJI;EF5CE;IACE,iBGqde;ELjRrB;AACF;AMpNE;ECAA,qBAAA;EACA,gBAAA;EACA,aAAA;EACA,eAAA;EAEA,yCAAA;EACA,4CAAA;EACA,6CAAA;APsNF;AM1NI;ECSF,sBAAA;EAIA,cAAA;EACA,WAAA;EACA,eAAA;EACA,4CAAA;EACA,6CAAA;EACA,8BAAA;APiNF;;AOlKM;EACE,YAAA;APqKR;;AOlKM;EApCJ,cAAA;EACA,WAAA;AP0MF;;AO5LE;EACE,cAAA;EACA,WAAA;AP+LJ;;AOjME;EACE,cAAA;EACA,UAAA;APoMJ;;AOtME;EACE,cAAA;EACA,qBAAA;APyMJ;;AO3ME;EACE,cAAA;EACA,UAAA;AP8MJ;;AOhNE;EACE,cAAA;EACA,UAAA;APmNJ;;AOrNE;EACE,cAAA;EACA,qBAAA;APwNJ;;AOzLM;EAhDJ,cAAA;EACA,WAAA;AP6OF;;AOxLU;EAhEN,cAAA;EACA,kBAAA;AP4PJ;;AO7LU;EAhEN,cAAA;EACA,mBAAA;APiQJ;;AOlMU;EAhEN,cAAA;EACA,UAAA;APsQJ;;AOvMU;EAhEN,cAAA;EACA,mBAAA;AP2QJ;;AO5MU;EAhEN,cAAA;EACA,mBAAA;APgRJ;;AOjNU;EAhEN,cAAA;EACA,UAAA;APqRJ;;AOtNU;EAhEN,cAAA;EACA,mBAAA;AP0RJ;;AO3NU;EAhEN,cAAA;EACA,mBAAA;AP+RJ;;AOhOU;EAhEN,cAAA;EACA,UAAA;APoSJ;;AOrOU;EAhEN,cAAA;EACA,mBAAA;APySJ;;AO1OU;EAhEN,cAAA;EACA,mBAAA;AP8SJ;;AO/OU;EAhEN,cAAA;EACA,WAAA;APmTJ;;AO5OY;EAxDV,yBAAA;APwSF;;AOhPY;EAxDV,0BAAA;AP4SF;;AOpPY;EAxDV,iBAAA;APgTF;;AOxPY;EAxDV,0BAAA;APoTF;;AO5PY;EAxDV,0BAAA;APwTF;;AOhQY;EAxDV,iBAAA;AP4TF;;AOpQY;EAxDV,0BAAA;APgUF;;AOxQY;EAxDV,0BAAA;APoUF;;AO5QY;EAxDV,iBAAA;APwUF;;AOhRY;EAxDV,0BAAA;AP4UF;;AOpRY;EAxDV,0BAAA;APgVF;;AO7QQ;;EAEE,gBAAA;APgRV;;AO7QQ;;EAEE,gBAAA;APgRV;;AOvRQ;;EAEE,sBAAA;AP0RV;;AOvRQ;;EAEE,sBAAA;AP0RV;;AOjSQ;;EAEE,qBAAA;APoSV;;AOjSQ;;EAEE,qBAAA;APoSV;;AO3SQ;;EAEE,mBAAA;AP8SV;;AO3SQ;;EAEE,mBAAA;AP8SV;;AOrTQ;;EAEE,qBAAA;APwTV;;AOrTQ;;EAEE,qBAAA;APwTV;;AO/TQ;;EAEE,mBAAA;APkUV;;AO/TQ;;EAEE,mBAAA;APkUV;;AI5XI;EGUE;IACE,YAAA;EPsXN;EOnXI;IApCJ,cAAA;IACA,WAAA;EP0ZA;EO5YA;IACE,cAAA;IACA,WAAA;EP8YF;EOhZA;IACE,cAAA;IACA,UAAA;EPkZF;EOpZA;IACE,cAAA;IACA,qBAAA;EPsZF;EOxZA;IACE,cAAA;IACA,UAAA;EP0ZF;EO5ZA;IACE,cAAA;IACA,UAAA;EP8ZF;EOhaA;IACE,cAAA;IACA,qBAAA;EPkaF;EOnYI;IAhDJ,cAAA;IACA,WAAA;EPsbA;EOjYQ;IAhEN,cAAA;IACA,kBAAA;EPocF;EOrYQ;IAhEN,cAAA;IACA,mBAAA;EPwcF;EOzYQ;IAhEN,cAAA;IACA,UAAA;EP4cF;EO7YQ;IAhEN,cAAA;IACA,mBAAA;EPgdF;EOjZQ;IAhEN,cAAA;IACA,mBAAA;EPodF;EOrZQ;IAhEN,cAAA;IACA,UAAA;EPwdF;EOzZQ;IAhEN,cAAA;IACA,mBAAA;EP4dF;EO7ZQ;IAhEN,cAAA;IACA,mBAAA;EPgeF;EOjaQ;IAhEN,cAAA;IACA,UAAA;EPoeF;EOraQ;IAhEN,cAAA;IACA,mBAAA;EPweF;EOzaQ;IAhEN,cAAA;IACA,mBAAA;EP4eF;EO7aQ;IAhEN,cAAA;IACA,WAAA;EPgfF;EOzaU;IAxDV,eAAA;EPoeA;EO5aU;IAxDV,yBAAA;EPueA;EO/aU;IAxDV,0BAAA;EP0eA;EOlbU;IAxDV,iBAAA;EP6eA;EOrbU;IAxDV,0BAAA;EPgfA;EOxbU;IAxDV,0BAAA;EPmfA;EO3bU;IAxDV,iBAAA;EPsfA;EO9bU;IAxDV,0BAAA;EPyfA;EOjcU;IAxDV,0BAAA;EP4fA;EOpcU;IAxDV,iBAAA;EP+fA;EOvcU;IAxDV,0BAAA;EPkgBA;EO1cU;IAxDV,0BAAA;EPqgBA;EOlcM;;IAEE,gBAAA;EPocR;EOjcM;;IAEE,gBAAA;EPmcR;EO1cM;;IAEE,sBAAA;EP4cR;EOzcM;;IAEE,sBAAA;EP2cR;EOldM;;IAEE,qBAAA;EPodR;EOjdM;;IAEE,qBAAA;EPmdR;EO1dM;;IAEE,mBAAA;EP4dR;EOzdM;;IAEE,mBAAA;EP2dR;EOleM;;IAEE,qBAAA;EPoeR;EOjeM;;IAEE,qBAAA;EPmeR;EO1eM;;IAEE,mBAAA;EP4eR;EOzeM;;IAEE,mBAAA;EP2eR;AACF;AItiBI;EGUE;IACE,YAAA;EP+hBN;EO5hBI;IApCJ,cAAA;IACA,WAAA;EPmkBA;EOrjBA;IACE,cAAA;IACA,WAAA;EPujBF;EOzjBA;IACE,cAAA;IACA,UAAA;EP2jBF;EO7jBA;IACE,cAAA;IACA,qBAAA;EP+jBF;EOjkBA;IACE,cAAA;IACA,UAAA;EPmkBF;EOrkBA;IACE,cAAA;IACA,UAAA;EPukBF;EOzkBA;IACE,cAAA;IACA,qBAAA;EP2kBF;EO5iBI;IAhDJ,cAAA;IACA,WAAA;EP+lBA;EO1iBQ;IAhEN,cAAA;IACA,kBAAA;EP6mBF;EO9iBQ;IAhEN,cAAA;IACA,mBAAA;EPinBF;EOljBQ;IAhEN,cAAA;IACA,UAAA;EPqnBF;EOtjBQ;IAhEN,cAAA;IACA,mBAAA;EPynBF;EO1jBQ;IAhEN,cAAA;IACA,mBAAA;EP6nBF;EO9jBQ;IAhEN,cAAA;IACA,UAAA;EPioBF;EOlkBQ;IAhEN,cAAA;IACA,mBAAA;EPqoBF;EOtkBQ;IAhEN,cAAA;IACA,mBAAA;EPyoBF;EO1kBQ;IAhEN,cAAA;IACA,UAAA;EP6oBF;EO9kBQ;IAhEN,cAAA;IACA,mBAAA;EPipBF;EOllBQ;IAhEN,cAAA;IACA,mBAAA;EPqpBF;EOtlBQ;IAhEN,cAAA;IACA,WAAA;EPypBF;EOllBU;IAxDV,eAAA;EP6oBA;EOrlBU;IAxDV,yBAAA;EPgpBA;EOxlBU;IAxDV,0BAAA;EPmpBA;EO3lBU;IAxDV,iBAAA;EPspBA;EO9lBU;IAxDV,0BAAA;EPypBA;EOjmBU;IAxDV,0BAAA;EP4pBA;EOpmBU;IAxDV,iBAAA;EP+pBA;EOvmBU;IAxDV,0BAAA;EPkqBA;EO1mBU;IAxDV,0BAAA;EPqqBA;EO7mBU;IAxDV,iBAAA;EPwqBA;EOhnBU;IAxDV,0BAAA;EP2qBA;EOnnBU;IAxDV,0BAAA;EP8qBA;EO3mBM;;IAEE,gBAAA;EP6mBR;EO1mBM;;IAEE,gBAAA;EP4mBR;EOnnBM;;IAEE,sBAAA;EPqnBR;EOlnBM;;IAEE,sBAAA;EPonBR;EO3nBM;;IAEE,qBAAA;EP6nBR;EO1nBM;;IAEE,qBAAA;EP4nBR;EOnoBM;;IAEE,mBAAA;EPqoBR;EOloBM;;IAEE,mBAAA;EPooBR;EO3oBM;;IAEE,qBAAA;EP6oBR;EO1oBM;;IAEE,qBAAA;EP4oBR;EOnpBM;;IAEE,mBAAA;EPqpBR;EOlpBM;;IAEE,mBAAA;EPopBR;AACF;AI/sBI;EGUE;IACE,YAAA;EPwsBN;EOrsBI;IApCJ,cAAA;IACA,WAAA;EP4uBA;EO9tBA;IACE,cAAA;IACA,WAAA;EPguBF;EOluBA;IACE,cAAA;IACA,UAAA;EPouBF;EOtuBA;IACE,cAAA;IACA,qBAAA;EPwuBF;EO1uBA;IACE,cAAA;IACA,UAAA;EP4uBF;EO9uBA;IACE,cAAA;IACA,UAAA;EPgvBF;EOlvBA;IACE,cAAA;IACA,qBAAA;EPovBF;EOrtBI;IAhDJ,cAAA;IACA,WAAA;EPwwBA;EOntBQ;IAhEN,cAAA;IACA,kBAAA;EPsxBF;EOvtBQ;IAhEN,cAAA;IACA,mBAAA;EP0xBF;EO3tBQ;IAhEN,cAAA;IACA,UAAA;EP8xBF;EO/tBQ;IAhEN,cAAA;IACA,mBAAA;EPkyBF;EOnuBQ;IAhEN,cAAA;IACA,mBAAA;EPsyBF;EOvuBQ;IAhEN,cAAA;IACA,UAAA;EP0yBF;EO3uBQ;IAhEN,cAAA;IACA,mBAAA;EP8yBF;EO/uBQ;IAhEN,cAAA;IACA,mBAAA;EPkzBF;EOnvBQ;IAhEN,cAAA;IACA,UAAA;EPszBF;EOvvBQ;IAhEN,cAAA;IACA,mBAAA;EP0zBF;EO3vBQ;IAhEN,cAAA;IACA,mBAAA;EP8zBF;EO/vBQ;IAhEN,cAAA;IACA,WAAA;EPk0BF;EO3vBU;IAxDV,eAAA;EPszBA;EO9vBU;IAxDV,yBAAA;EPyzBA;EOjwBU;IAxDV,0BAAA;EP4zBA;EOpwBU;IAxDV,iBAAA;EP+zBA;EOvwBU;IAxDV,0BAAA;EPk0BA;EO1wBU;IAxDV,0BAAA;EPq0BA;EO7wBU;IAxDV,iBAAA;EPw0BA;EOhxBU;IAxDV,0BAAA;EP20BA;EOnxBU;IAxDV,0BAAA;EP80BA;EOtxBU;IAxDV,iBAAA;EPi1BA;EOzxBU;IAxDV,0BAAA;EPo1BA;EO5xBU;IAxDV,0BAAA;EPu1BA;EOpxBM;;IAEE,gBAAA;EPsxBR;EOnxBM;;IAEE,gBAAA;EPqxBR;EO5xBM;;IAEE,sBAAA;EP8xBR;EO3xBM;;IAEE,sBAAA;EP6xBR;EOpyBM;;IAEE,qBAAA;EPsyBR;EOnyBM;;IAEE,qBAAA;EPqyBR;EO5yBM;;IAEE,mBAAA;EP8yBR;EO3yBM;;IAEE,mBAAA;EP6yBR;EOpzBM;;IAEE,qBAAA;EPszBR;EOnzBM;;IAEE,qBAAA;EPqzBR;EO5zBM;;IAEE,mBAAA;EP8zBR;EO3zBM;;IAEE,mBAAA;EP6zBR;AACF;AIx3BI;EGUE;IACE,YAAA;EPi3BN;EO92BI;IApCJ,cAAA;IACA,WAAA;EPq5BA;EOv4BA;IACE,cAAA;IACA,WAAA;EPy4BF;EO34BA;IACE,cAAA;IACA,UAAA;EP64BF;EO/4BA;IACE,cAAA;IACA,qBAAA;EPi5BF;EOn5BA;IACE,cAAA;IACA,UAAA;EPq5BF;EOv5BA;IACE,cAAA;IACA,UAAA;EPy5BF;EO35BA;IACE,cAAA;IACA,qBAAA;EP65BF;EO93BI;IAhDJ,cAAA;IACA,WAAA;EPi7BA;EO53BQ;IAhEN,cAAA;IACA,kBAAA;EP+7BF;EOh4BQ;IAhEN,cAAA;IACA,mBAAA;EPm8BF;EOp4BQ;IAhEN,cAAA;IACA,UAAA;EPu8BF;EOx4BQ;IAhEN,cAAA;IACA,mBAAA;EP28BF;EO54BQ;IAhEN,cAAA;IACA,mBAAA;EP+8BF;EOh5BQ;IAhEN,cAAA;IACA,UAAA;EPm9BF;EOp5BQ;IAhEN,cAAA;IACA,mBAAA;EPu9BF;EOx5BQ;IAhEN,cAAA;IACA,mBAAA;EP29BF;EO55BQ;IAhEN,cAAA;IACA,UAAA;EP+9BF;EOh6BQ;IAhEN,cAAA;IACA,mBAAA;EPm+BF;EOp6BQ;IAhEN,cAAA;IACA,mBAAA;EPu+BF;EOx6BQ;IAhEN,cAAA;IACA,WAAA;EP2+BF;EOp6BU;IAxDV,eAAA;EP+9BA;EOv6BU;IAxDV,yBAAA;EPk+BA;EO16BU;IAxDV,0BAAA;EPq+BA;EO76BU;IAxDV,iBAAA;EPw+BA;EOh7BU;IAxDV,0BAAA;EP2+BA;EOn7BU;IAxDV,0BAAA;EP8+BA;EOt7BU;IAxDV,iBAAA;EPi/BA;EOz7BU;IAxDV,0BAAA;EPo/BA;EO57BU;IAxDV,0BAAA;EPu/BA;EO/7BU;IAxDV,iBAAA;EP0/BA;EOl8BU;IAxDV,0BAAA;EP6/BA;EOr8BU;IAxDV,0BAAA;EPggCA;EO77BM;;IAEE,gBAAA;EP+7BR;EO57BM;;IAEE,gBAAA;EP87BR;EOr8BM;;IAEE,sBAAA;EPu8BR;EOp8BM;;IAEE,sBAAA;EPs8BR;EO78BM;;IAEE,qBAAA;EP+8BR;EO58BM;;IAEE,qBAAA;EP88BR;EOr9BM;;IAEE,mBAAA;EPu9BR;EOp9BM;;IAEE,mBAAA;EPs9BR;EO79BM;;IAEE,qBAAA;EP+9BR;EO59BM;;IAEE,qBAAA;EP89BR;EOr+BM;;IAEE,mBAAA;EPu+BR;EOp+BM;;IAEE,mBAAA;EPs+BR;AACF;AIjiCI;EGUE;IACE,YAAA;EP0hCN;EOvhCI;IApCJ,cAAA;IACA,WAAA;EP8jCA;EOhjCA;IACE,cAAA;IACA,WAAA;EPkjCF;EOpjCA;IACE,cAAA;IACA,UAAA;EPsjCF;EOxjCA;IACE,cAAA;IACA,qBAAA;EP0jCF;EO5jCA;IACE,cAAA;IACA,UAAA;EP8jCF;EOhkCA;IACE,cAAA;IACA,UAAA;EPkkCF;EOpkCA;IACE,cAAA;IACA,qBAAA;EPskCF;EOviCI;IAhDJ,cAAA;IACA,WAAA;EP0lCA;EOriCQ;IAhEN,cAAA;IACA,kBAAA;EPwmCF;EOziCQ;IAhEN,cAAA;IACA,mBAAA;EP4mCF;EO7iCQ;IAhEN,cAAA;IACA,UAAA;EPgnCF;EOjjCQ;IAhEN,cAAA;IACA,mBAAA;EPonCF;EOrjCQ;IAhEN,cAAA;IACA,mBAAA;EPwnCF;EOzjCQ;IAhEN,cAAA;IACA,UAAA;EP4nCF;EO7jCQ;IAhEN,cAAA;IACA,mBAAA;EPgoCF;EOjkCQ;IAhEN,cAAA;IACA,mBAAA;EPooCF;EOrkCQ;IAhEN,cAAA;IACA,UAAA;EPwoCF;EOzkCQ;IAhEN,cAAA;IACA,mBAAA;EP4oCF;EO7kCQ;IAhEN,cAAA;IACA,mBAAA;EPgpCF;EOjlCQ;IAhEN,cAAA;IACA,WAAA;EPopCF;EO7kCU;IAxDV,eAAA;EPwoCA;EOhlCU;IAxDV,yBAAA;EP2oCA;EOnlCU;IAxDV,0BAAA;EP8oCA;EOtlCU;IAxDV,iBAAA;EPipCA;EOzlCU;IAxDV,0BAAA;EPopCA;EO5lCU;IAxDV,0BAAA;EPupCA;EO/lCU;IAxDV,iBAAA;EP0pCA;EOlmCU;IAxDV,0BAAA;EP6pCA;EOrmCU;IAxDV,0BAAA;EPgqCA;EOxmCU;IAxDV,iBAAA;EPmqCA;EO3mCU;IAxDV,0BAAA;EPsqCA;EO9mCU;IAxDV,0BAAA;EPyqCA;EOtmCM;;IAEE,gBAAA;EPwmCR;EOrmCM;;IAEE,gBAAA;EPumCR;EO9mCM;;IAEE,sBAAA;EPgnCR;EO7mCM;;IAEE,sBAAA;EP+mCR;EOtnCM;;IAEE,qBAAA;EPwnCR;EOrnCM;;IAEE,qBAAA;EPunCR;EO9nCM;;IAEE,mBAAA;EPgoCR;EO7nCM;;IAEE,mBAAA;EP+nCR;EOtoCM;;IAEE,qBAAA;EPwoCR;EOroCM;;IAEE,qBAAA;EPuoCR;EO9oCM;;IAEE,mBAAA;EPgpCR;EO7oCM;;IAEE,mBAAA;EP+oCR;AACF;AQvsCQ;EAOI,0BAAA;ARmsCZ;;AQ1sCQ;EAOI,gCAAA;ARusCZ;;AQ9sCQ;EAOI,yBAAA;AR2sCZ;;AQltCQ;EAOI,wBAAA;AR+sCZ;;AQttCQ;EAOI,yBAAA;ARmtCZ;;AQ1tCQ;EAOI,6BAAA;ARutCZ;;AQ9tCQ;EAOI,8BAAA;AR2tCZ;;AQluCQ;EAOI,wBAAA;AR+tCZ;;AQtuCQ;EAOI,+BAAA;ARmuCZ;;AQ1uCQ;EAOI,wBAAA;ARuuCZ;;AQ9uCQ;EAOI,yBAAA;AR2uCZ;;AQlvCQ;EAOI,8BAAA;AR+uCZ;;AQtvCQ;EAOI,iCAAA;ARmvCZ;;AQ1vCQ;EAOI,sCAAA;ARuvCZ;;AQ9vCQ;EAOI,yCAAA;AR2vCZ;;AQlwCQ;EAOI,uBAAA;AR+vCZ;;AQtwCQ;EAOI,uBAAA;ARmwCZ;;AQ1wCQ;EAOI,yBAAA;ARuwCZ;;AQ9wCQ;EAOI,yBAAA;AR2wCZ;;AQlxCQ;EAOI,0BAAA;AR+wCZ;;AQtxCQ;EAOI,4BAAA;ARmxCZ;;AQ1xCQ;EAOI,kCAAA;ARuxCZ;;AQ9xCQ;EAOI,sCAAA;AR2xCZ;;AQlyCQ;EAOI,oCAAA;AR+xCZ;;AQtyCQ;EAOI,kCAAA;ARmyCZ;;AQ1yCQ;EAOI,yCAAA;ARuyCZ;;AQ9yCQ;EAOI,wCAAA;AR2yCZ;;AQlzCQ;EAOI,wCAAA;AR+yCZ;;AQtzCQ;EAOI,kCAAA;ARmzCZ;;AQ1zCQ;EAOI,gCAAA;ARuzCZ;;AQ9zCQ;EAOI,8BAAA;AR2zCZ;;AQl0CQ;EAOI,gCAAA;AR+zCZ;;AQt0CQ;EAOI,+BAAA;ARm0CZ;;AQ10CQ;EAOI,oCAAA;ARu0CZ;;AQ90CQ;EAOI,kCAAA;AR20CZ;;AQl1CQ;EAOI,gCAAA;AR+0CZ;;AQt1CQ;EAOI,uCAAA;ARm1CZ;;AQ11CQ;EAOI,sCAAA;ARu1CZ;;AQ91CQ;EAOI,iCAAA;AR21CZ;;AQl2CQ;EAOI,2BAAA;AR+1CZ;;AQt2CQ;EAOI,iCAAA;ARm2CZ;;AQ12CQ;EAOI,+BAAA;ARu2CZ;;AQ92CQ;EAOI,6BAAA;AR22CZ;;AQl3CQ;EAOI,+BAAA;AR+2CZ;;AQt3CQ;EAOI,8BAAA;ARm3CZ;;AQ13CQ;EAOI,oBAAA;ARu3CZ;;AQ93CQ;EAOI,mBAAA;AR23CZ;;AQl4CQ;EAOI,mBAAA;AR+3CZ;;AQt4CQ;EAOI,mBAAA;ARm4CZ;;AQ14CQ;EAOI,mBAAA;ARu4CZ;;AQ94CQ;EAOI,mBAAA;AR24CZ;;AQl5CQ;EAOI,mBAAA;AR+4CZ;;AQt5CQ;EAOI,mBAAA;ARm5CZ;;AQ15CQ;EAOI,oBAAA;ARu5CZ;;AQ95CQ;EAOI,0BAAA;AR25CZ;;AQl6CQ;EAOI,yBAAA;AR+5CZ;;AQt6CQ;EAOI,uBAAA;ARm6CZ;;AQ16CQ;EAOI,yBAAA;ARu6CZ;;AQ96CQ;EAOI,uBAAA;AR26CZ;;AQl7CQ;EAOI,uBAAA;AR+6CZ;;AQt7CQ;EAOI,yBAAA;EAAA,0BAAA;ARo7CZ;;AQ37CQ;EAOI,+BAAA;EAAA,gCAAA;ARy7CZ;;AQh8CQ;EAOI,8BAAA;EAAA,+BAAA;AR87CZ;;AQr8CQ;EAOI,4BAAA;EAAA,6BAAA;ARm8CZ;;AQ18CQ;EAOI,8BAAA;EAAA,+BAAA;ARw8CZ;;AQ/8CQ;EAOI,4BAAA;EAAA,6BAAA;AR68CZ;;AQp9CQ;EAOI,4BAAA;EAAA,6BAAA;ARk9CZ;;AQz9CQ;EAOI,wBAAA;EAAA,2BAAA;ARu9CZ;;AQ99CQ;EAOI,8BAAA;EAAA,iCAAA;AR49CZ;;AQn+CQ;EAOI,6BAAA;EAAA,gCAAA;ARi+CZ;;AQx+CQ;EAOI,2BAAA;EAAA,8BAAA;ARs+CZ;;AQ7+CQ;EAOI,6BAAA;EAAA,gCAAA;AR2+CZ;;AQl/CQ;EAOI,2BAAA;EAAA,8BAAA;ARg/CZ;;AQv/CQ;EAOI,2BAAA;EAAA,8BAAA;ARq/CZ;;AQ5/CQ;EAOI,wBAAA;ARy/CZ;;AQhgDQ;EAOI,8BAAA;AR6/CZ;;AQpgDQ;EAOI,6BAAA;ARigDZ;;AQxgDQ;EAOI,2BAAA;ARqgDZ;;AQ5gDQ;EAOI,6BAAA;ARygDZ;;AQhhDQ;EAOI,2BAAA;AR6gDZ;;AQphDQ;EAOI,2BAAA;ARihDZ;;AQxhDQ;EAOI,yBAAA;ARqhDZ;;AQ5hDQ;EAOI,+BAAA;ARyhDZ;;AQhiDQ;EAOI,8BAAA;AR6hDZ;;AQpiDQ;EAOI,4BAAA;ARiiDZ;;AQxiDQ;EAOI,8BAAA;ARqiDZ;;AQ5iDQ;EAOI,4BAAA;ARyiDZ;;AQhjDQ;EAOI,4BAAA;AR6iDZ;;AQpjDQ;EAOI,2BAAA;ARijDZ;;AQxjDQ;EAOI,iCAAA;ARqjDZ;;AQ5jDQ;EAOI,gCAAA;ARyjDZ;;AQhkDQ;EAOI,8BAAA;AR6jDZ;;AQpkDQ;EAOI,gCAAA;ARikDZ;;AQxkDQ;EAOI,8BAAA;ARqkDZ;;AQ5kDQ;EAOI,8BAAA;ARykDZ;;AQhlDQ;EAOI,0BAAA;AR6kDZ;;AQplDQ;EAOI,gCAAA;ARilDZ;;AQxlDQ;EAOI,+BAAA;ARqlDZ;;AQ5lDQ;EAOI,6BAAA;ARylDZ;;AQhmDQ;EAOI,+BAAA;AR6lDZ;;AQpmDQ;EAOI,6BAAA;ARimDZ;;AQxmDQ;EAOI,6BAAA;ARqmDZ;;AQ5mDQ;EAOI,qBAAA;ARymDZ;;AQhnDQ;EAOI,2BAAA;AR6mDZ;;AQpnDQ;EAOI,0BAAA;ARinDZ;;AQxnDQ;EAOI,wBAAA;ARqnDZ;;AQ5nDQ;EAOI,0BAAA;ARynDZ;;AQhoDQ;EAOI,wBAAA;AR6nDZ;;AQpoDQ;EAOI,0BAAA;EAAA,2BAAA;ARkoDZ;;AQzoDQ;EAOI,gCAAA;EAAA,iCAAA;ARuoDZ;;AQ9oDQ;EAOI,+BAAA;EAAA,gCAAA;AR4oDZ;;AQnpDQ;EAOI,6BAAA;EAAA,8BAAA;ARipDZ;;AQxpDQ;EAOI,+BAAA;EAAA,gCAAA;ARspDZ;;AQ7pDQ;EAOI,6BAAA;EAAA,8BAAA;AR2pDZ;;AQlqDQ;EAOI,yBAAA;EAAA,4BAAA;ARgqDZ;;AQvqDQ;EAOI,+BAAA;EAAA,kCAAA;ARqqDZ;;AQ5qDQ;EAOI,8BAAA;EAAA,iCAAA;AR0qDZ;;AQjrDQ;EAOI,4BAAA;EAAA,+BAAA;AR+qDZ;;AQtrDQ;EAOI,8BAAA;EAAA,iCAAA;ARorDZ;;AQ3rDQ;EAOI,4BAAA;EAAA,+BAAA;ARyrDZ;;AQhsDQ;EAOI,yBAAA;AR6rDZ;;AQpsDQ;EAOI,+BAAA;ARisDZ;;AQxsDQ;EAOI,8BAAA;ARqsDZ;;AQ5sDQ;EAOI,4BAAA;ARysDZ;;AQhtDQ;EAOI,8BAAA;AR6sDZ;;AQptDQ;EAOI,4BAAA;ARitDZ;;AQxtDQ;EAOI,0BAAA;ARqtDZ;;AQ5tDQ;EAOI,gCAAA;ARytDZ;;AQhuDQ;EAOI,+BAAA;AR6tDZ;;AQpuDQ;EAOI,6BAAA;ARiuDZ;;AQxuDQ;EAOI,+BAAA;ARquDZ;;AQ5uDQ;EAOI,6BAAA;ARyuDZ;;AQhvDQ;EAOI,4BAAA;AR6uDZ;;AQpvDQ;EAOI,kCAAA;ARivDZ;;AQxvDQ;EAOI,iCAAA;ARqvDZ;;AQ5vDQ;EAOI,+BAAA;ARyvDZ;;AQhwDQ;EAOI,iCAAA;AR6vDZ;;AQpwDQ;EAOI,+BAAA;ARiwDZ;;AQxwDQ;EAOI,2BAAA;ARqwDZ;;AQ5wDQ;EAOI,iCAAA;ARywDZ;;AQhxDQ;EAOI,gCAAA;AR6wDZ;;AQpxDQ;EAOI,8BAAA;ARixDZ;;AQxxDQ;EAOI,gCAAA;ARqxDZ;;AQ5xDQ;EAOI,8BAAA;ARyxDZ;;AInyDI;EIGI;IAOI,0BAAA;ER8xDV;EQryDM;IAOI,gCAAA;ERiyDV;EQxyDM;IAOI,yBAAA;ERoyDV;EQ3yDM;IAOI,wBAAA;ERuyDV;EQ9yDM;IAOI,yBAAA;ER0yDV;EQjzDM;IAOI,6BAAA;ER6yDV;EQpzDM;IAOI,8BAAA;ERgzDV;EQvzDM;IAOI,wBAAA;ERmzDV;EQ1zDM;IAOI,+BAAA;ERszDV;EQ7zDM;IAOI,wBAAA;ERyzDV;EQh0DM;IAOI,yBAAA;ER4zDV;EQn0DM;IAOI,8BAAA;ER+zDV;EQt0DM;IAOI,iCAAA;ERk0DV;EQz0DM;IAOI,sCAAA;ERq0DV;EQ50DM;IAOI,yCAAA;ERw0DV;EQ/0DM;IAOI,uBAAA;ER20DV;EQl1DM;IAOI,uBAAA;ER80DV;EQr1DM;IAOI,yBAAA;ERi1DV;EQx1DM;IAOI,yBAAA;ERo1DV;EQ31DM;IAOI,0BAAA;ERu1DV;EQ91DM;IAOI,4BAAA;ER01DV;EQj2DM;IAOI,kCAAA;ER61DV;EQp2DM;IAOI,sCAAA;ERg2DV;EQv2DM;IAOI,oCAAA;ERm2DV;EQ12DM;IAOI,kCAAA;ERs2DV;EQ72DM;IAOI,yCAAA;ERy2DV;EQh3DM;IAOI,wCAAA;ER42DV;EQn3DM;IAOI,wCAAA;ER+2DV;EQt3DM;IAOI,kCAAA;ERk3DV;EQz3DM;IAOI,gCAAA;ERq3DV;EQ53DM;IAOI,8BAAA;ERw3DV;EQ/3DM;IAOI,gCAAA;ER23DV;EQl4DM;IAOI,+BAAA;ER83DV;EQr4DM;IAOI,oCAAA;ERi4DV;EQx4DM;IAOI,kCAAA;ERo4DV;EQ34DM;IAOI,gCAAA;ERu4DV;EQ94DM;IAOI,uCAAA;ER04DV;EQj5DM;IAOI,sCAAA;ER64DV;EQp5DM;IAOI,iCAAA;ERg5DV;EQv5DM;IAOI,2BAAA;ERm5DV;EQ15DM;IAOI,iCAAA;ERs5DV;EQ75DM;IAOI,+BAAA;ERy5DV;EQh6DM;IAOI,6BAAA;ER45DV;EQn6DM;IAOI,+BAAA;ER+5DV;EQt6DM;IAOI,8BAAA;ERk6DV;EQz6DM;IAOI,oBAAA;ERq6DV;EQ56DM;IAOI,mBAAA;ERw6DV;EQ/6DM;IAOI,mBAAA;ER26DV;EQl7DM;IAOI,mBAAA;ER86DV;EQr7DM;IAOI,mBAAA;ERi7DV;EQx7DM;IAOI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EQjtEM;IAOI,+BAAA;ER6sEV;EQptEM;IAOI,iCAAA;ERgtEV;EQvtEM;IAOI,+BAAA;ERmtEV;EQ1tEM;IAOI,2BAAA;ERstEV;EQ7tEM;IAOI,iCAAA;ERytEV;EQhuEM;IAOI,gCAAA;ER4tEV;EQnuEM;IAOI,8BAAA;ER+tEV;EQtuEM;IAOI,gCAAA;ERkuEV;EQzuEM;IAOI,8BAAA;ERquEV;AACF;AIhvEI;EIGI;IAOI,0BAAA;ER0uEV;EQjvEM;IAOI,gCAAA;ER6uEV;EQpvEM;IAOI,yBAAA;ERgvEV;EQvvEM;IAOI,wBAAA;ERmvEV;EQ1vEM;IAOI,yBAAA;ERsvEV;EQ7vEM;IAOI,6BAAA;ERyvEV;EQhwEM;IAOI,8BAAA;ER4vEV;EQnwEM;IAOI,wBAAA;ER+vEV;EQtwEM;IAOI,+BAAA;ERkwEV;EQzwEM;IAOI,wBAAA;ERqwEV;EQ5wEM;IAOI,yBAAA;ERwwEV;EQ/wEM;IAOI,8BAAA;ER2wEV;EQlxEM;IAOI,iCAAA;ER8wEV;EQrxEM;IAOI,sCAAA;ERixEV;EQxxEM;IAOI,yCAAA;ERoxEV;EQ3xEM;IAOI,uBAAA;ERuxEV;EQ9xEM;IAOI,uBAAA;ER0xEV;EQjyEM;IAOI,yBAAA;ER6xEV;EQpyEM;IAOI,yBAAA;ERgyEV;EQvyEM;IAOI,0BAAA;ERmyEV;EQ1yEM;IAOI,4BAAA;ERsyEV;EQ7yEM;IAOI,kCAAA;ERyyEV;EQhzEM;IAOI,sCAAA;ER4yEV;EQnzEM;IAOI,oCAAA;ER+yEV;EQtzEM;IAOI,kCAAA;ERkzEV;EQzzEM;IAOI,yCAAA;ERqzEV;EQ5zEM;IAOI,wCAAA;ERwzEV;EQ/zEM;IAOI,wCAAA;ER2zEV;EQl0EM;IAOI,kCAAA;ER8zEV;EQr0EM;IAOI,gCAAA;ERi0EV;EQx0EM;IAOI,8BAAA;ERo0EV;EQ30EM;IAOI,gCAAA;ERu0EV;EQ90EM;IAOI,+BAAA;ER00EV;EQj1EM;IAOI,oCAAA;ER60EV;EQp1EM;IAOI,kCAAA;ERg1EV;EQv1EM;IAOI,gCAAA;ERm1EV;EQ11EM;IAOI,uCAAA;ERs1EV;EQ71EM;IAOI,sCAAA;ERy1EV;EQh2EM;IAOI,iCA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FM;IAOI,4BAAA;ERqnFV;EQ5nFM;IAOI,8BAAA;ERwnFV;EQ/nFM;IAOI,4BAAA;ER2nFV;EQloFM;IAOI,0BAAA;ER8nFV;EQroFM;IAOI,gCAAA;ERioFV;EQxoFM;IAOI,+BAAA;ERooFV;EQ3oFM;IAOI,6BAAA;ERuoFV;EQ9oFM;IAOI,+BAAA;ER0oFV;EQjpFM;IAOI,6BAAA;ER6oFV;EQppFM;IAOI,4BAAA;ERgpFV;EQvpFM;IAOI,kCAAA;ERmpFV;EQ1pFM;IAOI,iCAAA;ERspFV;EQ7pFM;IAOI,+BAAA;ERypFV;EQhqFM;IAOI,iCAAA;ER4pFV;EQnqFM;IAOI,+BAAA;ER+pFV;EQtqFM;IAOI,2BAAA;ERkqFV;EQzqFM;IAOI,iCAAA;ERqqFV;EQ5qFM;IAOI,gCAAA;ERwqFV;EQ/qFM;IAOI,8BAAA;ER2qFV;EQlrFM;IAOI,gCAAA;ER8qFV;EQrrFM;IAOI,8BAAA;ERirFV;AACF;AI5rFI;EIGI;IAOI,0BAAA;ERsrFV;EQ7rFM;IAOI,gCAAA;ERyrFV;EQhsFM;IAOI,yBAAA;ER4rFV;EQnsFM;IAOI,wBAAA;ER+rFV;EQtsFM;IAOI,yBAAA;ERksFV;EQzsFM;IAOI,6BAAA;ERqsFV;EQ5sFM;IAOI,8BAAA;ERwsFV;EQ/sFM;IAOI,wBAAA;ER2sFV;EQltFM;IAOI,+BAAA;ER8sFV;EQrtFM;IAOI,wBAAA;ERitFV;EQxtFM;IAOI,yBAAA;ERotFV;EQ3tFM;IAOI,8BAAA;ERutFV;EQ9tFM;IAOI,iCAAA;ER0tFV;EQjuFM;IAOI,sCAAA;ER6tFV;EQpuFM;IAOI,yCAAA;ERguFV;EQvuFM;IAOI,uBAAA;ERmuFV;EQ1uFM;IAOI,uBAAA;ERsuFV;EQ7uFM;IAOI,yBAAA;ERyuFV;EQhvFM;IAOI,yBAAA;ER4uFV;EQnvFM;IAOI,0BAAA;ER+uFV;EQtvFM;IAOI,4BAAA;ERkvFV;EQzvFM;IAOI,kCAAA;ERqvFV;EQ5vFM;IAOI,sCAAA;ERwvFV;EQ/vFM;IAOI,oCAAA;ER2vFV;EQlwFM;IAOI,kCAAA;ER8vFV;EQrwFM;IAOI,yCAAA;ERiwFV;EQxwFM;IAOI,wCAAA;E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3lHM;IAOI,wBAAA;ERulHV;EQ9lHM;IAOI,yBAAA;ER0lHV;EQjmHM;IAOI,6BAAA;ER6lHV;EQpmHM;IAOI,8BAAA;ERgmHV;EQvmHM;IAOI,wBAAA;ERmmHV;EQ1mHM;IAOI,+BAAA;ERsmHV;EQ7mHM;IAOI,wBAAA;ERymHV;EQhnHM;IAOI,yBAAA;ER4mHV;EQnnHM;IAOI,8BAAA;ER+mHV;EQtnHM;IAOI,iCAAA;ERknHV;EQznHM;IAOI,sCAAA;ERqnHV;EQ5nHM;IAOI,yCAAA;ERwnHV;EQ/nHM;IAOI,uBAAA;ER2nHV;EQloHM;IAOI,uBAAA;ER8nHV;EQroHM;IAOI,yBAAA;ERioHV;EQxoHM;IAOI,yBAAA;ERooHV;EQ3oHM;IAOI,0BAAA;ERuoHV;EQ9oHM;IAOI,4BAAA;ER0oHV;EQjpHM;IAOI,kCAAA;ER6oHV;EQppHM;IAOI,sCAAA;ERgpHV;EQvpHM;IAOI,oCAAA;ERmpHV;EQ1pHM;IAOI,kCAAA;ERspHV;EQ7pHM;IAOI,yCAAA;ERypHV;EQhqHM;IAOI,wCAAA;ER4pHV;EQnqHM;IAOI,wCAAA;ER+pHV;EQtqHM;IAOI,kCAAA;ERkqHV;EQzqHM;IAOI,gCAAA;ERqqHV;EQ5qHM;IAOI,8BAAA;ERwqHV;EQ/qHM;IAOI,gCAAA;ER2qHV;EQlrHM;IAOI,+BAAA;ER8qHV;EQrrHM;IAOI,oCAAA;ERirHV;EQxrHM;IAOI,kCAAA;ERorHV;EQ3rHM;IAOI,gCAAA;ERurHV;EQ9rHM;IAOI,uCAAA;ER0rHV;EQjsHM;IAOI,sCAAA;ER6rHV;EQpsHM;IAOI,iCAAA;ERgsHV;EQvsHM;IAOI,2BAAA;ERmsHV;EQ1sHM;IAOI,iCAAA;ERssHV;EQ7sHM;IAOI,+BAAA;ERysHV;EQhtHM;IAOI,6BAAA;ER4sHV;EQntHM;IAOI,+BAAA;ER+sHV;EQttHM;IAOI,8BAAA;ERktHV;EQztHM;IAOI,oBAAA;ERqtHV;EQ5tHM;IAOI,mBAAA;ERwtHV;EQ/tHM;IAOI,mBAAA;ER2tHV;EQluHM;IAOI,mBAAA;ER8tHV;EQruHM;IAOI,mBAAA;ERiuHV;EQxuHM;IAOI,mBAAA;ERouHV;EQ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","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n$primary-text: $blue-600 !default;\n$secondary-text: $gray-600 !default;\n$success-text: $green-600 !default;\n$info-text: $cyan-700 !default;\n$warning-text: $yellow-700 !default;\n$danger-text: $red-600 !default;\n$light-text: $gray-600 !default;\n$dark-text: $gray-700 !default;\n\n$primary-bg-subtle: $blue-100 !default;\n$secondary-bg-subtle: $gray-100 !default;\n$success-bg-subtle: $green-100 !default;\n$info-bg-subtle: $cyan-100 !default;\n$warning-bg-subtle: $yellow-100 !default;\n$danger-bg-subtle: $red-100 !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n\n$primary-border-subtle: $blue-200 !default;\n$secondary-border-subtle: $gray-200 !default;\n$success-border-subtle: $green-200 !default;\n$info-border-subtle: $cyan-200 !default;\n$warning-border-subtle: $yellow-200 !default;\n$danger-border-subtle: $red-200 !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-emphasis-color: $black !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-2xl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba(var(--#{$prefix}body-color-rgb), .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba(var(--#{$prefix}body-color-rgb), .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: var(--#{$prefix}secondary-color) !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: transparent !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}form-control-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}form-control-disabled-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default; //$gray-400\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc($input-border-width * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.875em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}success-text),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}success),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}danger-text),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}danger),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc($dropdown-border-radius - $dropdown-border-width) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc($pagination-border-width * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default; // Sass variable because of $accordion-button-icon\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc($popover-border-radius - $popover-border-width) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css new file mode 100644 index 0000000..25518fa --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text:#0a58ca;--bs-secondary-text:#6c757d;--bs-success-text:#146c43;--bs-info-text:#087990;--bs-warning-text:#997404;--bs-danger-text:#b02a37;--bs-light-text:#6c757d;--bs-dark-text:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#f8f9fa;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#e9ecef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#fff3cd;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#f8f9fa;--bs-emphasis-color-rgb:248,249,250;--bs-secondary-color:rgba(173, 181, 189, 0.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173, 181, 189, 0.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#6ea8fe;--bs-secondary-text:#dee2e6;--bs-success-text:#75b798;--bs-info-text:#6edff6;--bs-warning-text:#ffda6a;--bs-danger-text:#ea868f;--bs-light-text:#f8f9fa;--bs-dark-text:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#055160;--bs-warning-border-subtle:#664d03;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#6ea8fe;--bs-link-hover-color:#9ec5fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:158,197,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} +/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map new file mode 100644 index 0000000..93574dc --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap-grid.rtl.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css b/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css new file mode 100644 index 0000000..34713f9 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css @@ -0,0 +1,591 @@ +/*! + * Bootstrap Reboot v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text: #0a58ca; + --bs-secondary-text: #6c757d; + --bs-success-text: #146c43; + --bs-info-text: #087990; + --bs-warning-text: #997404; + --bs-danger-text: #b02a37; + --bs-light-text: #6c757d; + --bs-dark-text: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #f8f9fa; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #e9ecef; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + --bs-emphasis-color: #000; + --bs-form-control-bg: var(--bs-body-bg); + --bs-form-control-disabled-bg: var(--bs-secondary-bg); + --bs-highlight-bg: #fff3cd; + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +[data-bs-theme=dark] { + --bs-body-color: #adb5bd; + --bs-body-color-rgb: 173, 181, 189; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #f8f9fa; + --bs-emphasis-color-rgb: 248, 249, 250; + --bs-secondary-color: rgba(173, 181, 189, 0.75); + --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(173, 181, 189, 0.5); + --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-emphasis-color: #fff; + --bs-primary-text: #6ea8fe; + --bs-secondary-text: #dee2e6; + --bs-success-text: #75b798; + --bs-info-text: #6edff6; + --bs-warning-text: #ffda6a; + --bs-danger-text: #ea868f; + --bs-light-text: #f8f9fa; + --bs-dark-text: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #212529; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #495057; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #055160; + --bs-warning-border-subtle: #664d03; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: #fff; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #9ec5fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 158, 197, 254; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} + +h6, h5, h4, h3, h2, h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color, inherit); +} + +h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1 { + font-size: 2.5rem; + } +} + +h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2 { + font-size: 2rem; + } +} + +h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3 { + font-size: 1.75rem; + } +} + +h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4 { + font-size: 1.5rem; + } +} + +h5 { + font-size: 1.25rem; +} + +h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small { + font-size: 0.875em; +} + +mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css.map b/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css.map new file mode 100644 index 0000000..b9c2637 --- /dev/null +++ b/public/assets/libs/bootstrap/dist/css/bootstrap-reboot.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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R;ADhHI;EG5BJ;IHqMQ,iBAAA;ECrDN;AACF;;AE5IA;EHqLM,kBALI;AChCV;;AE3IA;EHgLM,eALI;AC5BV;;AEpIA;EACE,aAAA;EACA,mBC2U0B;AHpM5B;;AE7HA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AFgIF;;AE1HA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AF6HF;;AEvHA;;EAEE,kBAAA;AF0HF;;AEvHA;;;EAGE,aAAA;EACA,mBAAA;AF0HF;;AEvHA;;;;EAIE,gBAAA;AF0HF;;AEvHA;EACE,gBCqa4B;AH3S9B;;AErHA;EACE,qBAAA;EACA,cAAA;AFwHF;;AElHA;EACE,gBAAA;AFqHF;;AE7GA;;EAEE,mBC8Y4B;AH9R9B;;AExGA;EHmFM,kBALI;AC8BV;;AErGA;EACE,iBCud4B;EDtd5B,wCAAA;AFwGF;;AE/FA;;EAEE,kBAAA;EH+DI,iBALI;EGxDR,cAAA;EACA,wBAAA;AFkGF;;AE/FA;EAAM,eAAA;AFmGN;;AElGA;EAAM,WAAA;AFsGN;;AEjGA;EACE,gEAAA;EACA,0BC6MwC;AHzG1C;AElGE;EACE,mDAAA;AFoGJ;;AEzFE;EAEE,cAAA;EACA,qBAAA;AF2FJ;;AEpFA;;;;EAIE,qCCyT4B;EJpSxB,cALI;ACwEV;;AEhFA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EHSI,kBALI;ACgFV;AE/EE;EHII,kBALI;EGGN,cAAA;EACA,kBAAA;AFiFJ;;AE7EA;EHHM,kBALI;EGUR,2BAAA;EACA,qBAAA;AFgFF;AE7EE;EACE,cAAA;AF+EJ;;AE3EA;EACE,2BAAA;EHfI,kBALI;EGsBR,wBC42CkC;ED32ClC,sCC42CkC;EChpDhC,sBAAA;AJmXJ;AE5EE;EACE,UAAA;EHtBE,cALI;AC0GV;;AEpEA;EACE,gBAAA;AFuEF;;AEjEA;;EAEE,sBAAA;AFoEF;;AE5DA;EACE,oBAAA;EACA,yBAAA;AF+DF;;AE5DA;EACE,mBC8V4B;ED7V5B,sBC6V4B;ED5V5B,gCCqT4B;EDpT5B,gBAAA;AF+DF;;AExDA;EAEE,mBAAA;EACA,gCAAA;AF0DF;;AEvDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AF0DF;;AElDA;EACE,qBAAA;AFqDF;;AE/CA;EAEE,gBAAA;AFiDF;;AEzCA;EACE,UAAA;AF4CF;;AEvCA;;;;;EAKE,SAAA;EACA,oBAAA;EHrHI,kBALI;EG4HR,oBAAA;AF0CF;;AEtCA;;EAEE,oBAAA;AFyCF;;AEpCA;EACE,eAAA;AFuCF;;AEpCA;EAGE,iBAAA;AFqCF;AElCE;EACE,UAAA;AFoCJ;;AE7BA;EACE,wBAAA;AFgCF;;AExBA;;;;EAIE,0BAAA;AF2BF;AExBI;;;;EACE,eAAA;AF6BN;;AEtBA;EACE,UAAA;EACA,kBAAA;AFyBF;;AEpBA;EACE,gBAAA;AFuBF;;AEbA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AFgBF;;AERA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBCsL4B;EJhYtB,iCAAA;EG6MN,oBAAA;AFUF;ADzXI;EGwWJ;IH/LQ,iBAAA;ECoNN;AACF;AEbE;EACE,WAAA;AFeJ;;AERA;;;;;;;EAOE,UAAA;AFWF;;AERA;EACE,YAAA;AFWF;;AEFA;EACE,oBAAA;EACA,6BAAA;AFKF;;AEGA;;;;;;;CAAA;AAWA;EACE,wBAAA;AFHF;;AEQA;EACE,UAAA;AFLF;;AEYA;EACE,aAAA;EACA,0BAAA;AFTF;;AEOA;EACE,aAAA;EACA,0BAAA;AFTF;;AEcA;EACE,qBAAA;AFXF;;AEgBA;EACE,SAAA;AFbF;;AEoBA;EACE,kBAAA;EACA,eAAA;AFjBF;;AEyBA;EACE,wBAAA;AFtBF;;AE8BA;EACE,wBAAA;AF3BF","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color, inherit);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color, inherit);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-` + +

    + + + + + + diff --git a/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle-modularity.js b/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle-modularity.js new file mode 100644 index 0000000..a8670ca --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle-modularity.js @@ -0,0 +1,17 @@ +/* eslint-env node */ + +const commonjs = require('@rollup/plugin-commonjs') +const configRollup = require('./rollup.bundle') + +const config = { + ...configRollup, + input: 'js/tests/integration/bundle-modularity.js', + output: { + file: 'js/coverage/bundle-modularity.js', + format: 'iife' + } +} + +config.plugins.unshift(commonjs()) + +module.exports = config diff --git a/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle.js b/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle.js new file mode 100644 index 0000000..caddcab --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/integration/rollup.bundle.js @@ -0,0 +1,24 @@ +/* eslint-env node */ + +const { babel } = require('@rollup/plugin-babel') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const replace = require('@rollup/plugin-replace') + +module.exports = { + input: 'js/tests/integration/bundle.js', + output: { + file: 'js/coverage/bundle.js', + format: 'iife' + }, + plugins: [ + replace({ + 'process.env.NODE_ENV': '"production"', + preventAssignment: true + }), + nodeResolve(), + babel({ + exclude: 'node_modules/**', + babelHelpers: 'bundled' + }) + ] +} diff --git a/public/assets/libs/bootstrap/js/tests/karma.conf.js b/public/assets/libs/bootstrap/js/tests/karma.conf.js new file mode 100644 index 0000000..6636ff1 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/karma.conf.js @@ -0,0 +1,171 @@ +/* eslint-env node */ + +'use strict' + +const path = require('node:path') +const ip = require('ip') +const { babel } = require('@rollup/plugin-babel') +const istanbul = require('rollup-plugin-istanbul') +const { nodeResolve } = require('@rollup/plugin-node-resolve') +const replace = require('@rollup/plugin-replace') +const { browsers } = require('./browsers') + +const ENV = process.env +const BROWSERSTACK = Boolean(ENV.BROWSERSTACK) +const DEBUG = Boolean(ENV.DEBUG) +const JQUERY_TEST = Boolean(ENV.JQUERY) + +const frameworks = [ + 'jasmine' +] + +const plugins = [ + 'karma-jasmine', + 'karma-rollup-preprocessor' +] + +const reporters = ['dots'] + +const detectBrowsers = { + usePhantomJS: false, + postDetection(availableBrowser) { + // On CI just use Chrome + if (ENV.CI === true) { + return ['ChromeHeadless'] + } + + if (availableBrowser.includes('Chrome')) { + return DEBUG ? ['Chrome'] : ['ChromeHeadless'] + } + + if (availableBrowser.includes('Chromium')) { + return DEBUG ? ['Chromium'] : ['ChromiumHeadless'] + } + + if (availableBrowser.includes('Firefox')) { + return DEBUG ? ['Firefox'] : ['FirefoxHeadless'] + } + + throw new Error('Please install Chrome, Chromium or Firefox') + } +} + +const config = { + basePath: '../..', + port: 9876, + colors: true, + autoWatch: false, + singleRun: true, + concurrency: Number.POSITIVE_INFINITY, + client: { + clearContext: false + }, + files: [ + 'node_modules/hammer-simulator/index.js', + { + pattern: 'js/tests/unit/**/!(jquery).spec.js', + watched: !BROWSERSTACK + } + ], + preprocessors: { + 'js/tests/unit/**/*.spec.js': ['rollup'] + }, + rollupPreprocessor: { + plugins: [ + replace({ + 'process.env.NODE_ENV': '"dev"', + preventAssignment: true + }), + istanbul({ + exclude: [ + 'node_modules/**', + 'js/tests/unit/**/*.spec.js', + 'js/tests/helpers/**/*.js' + ] + }), + babel({ + // Only transpile our source code + exclude: 'node_modules/**', + // Inline the required helpers in each file + babelHelpers: 'inline' + }), + nodeResolve() + ], + output: { + format: 'iife', + name: 'bootstrapTest', + sourcemap: 'inline', + generatedCode: 'es2015' + } + } +} + +if (BROWSERSTACK) { + config.hostname = ip.address() + config.browserStack = { + username: ENV.BROWSER_STACK_USERNAME, + accessKey: ENV.BROWSER_STACK_ACCESS_KEY, + build: `bootstrap-${ENV.GITHUB_SHA ? ENV.GITHUB_SHA.slice(0, 7) + '-' : ''}${new Date().toISOString()}`, + project: 'Bootstrap', + retryLimit: 2 + } + plugins.push('karma-browserstack-launcher', 'karma-jasmine-html-reporter') + config.customLaunchers = browsers + config.browsers = Object.keys(browsers) + reporters.push('BrowserStack', 'kjhtml') +} else if (JQUERY_TEST) { + frameworks.push('detectBrowsers') + plugins.push( + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-detect-browsers' + ) + config.detectBrowsers = detectBrowsers + config.files = [ + 'node_modules/jquery/dist/jquery.slim.min.js', + { + pattern: 'js/tests/unit/jquery.spec.js', + watched: false + } + ] +} else { + frameworks.push('detectBrowsers') + plugins.push( + 'karma-chrome-launcher', + 'karma-firefox-launcher', + 'karma-detect-browsers', + 'karma-coverage-istanbul-reporter' + ) + reporters.push('coverage-istanbul') + config.detectBrowsers = detectBrowsers + config.coverageIstanbulReporter = { + dir: path.resolve(__dirname, '../coverage/'), + reports: ['lcov', 'text-summary'], + thresholds: { + emitWarning: false, + global: { + statements: 90, + branches: 89, + functions: 90, + lines: 90 + } + } + } + + if (DEBUG) { + config.hostname = ip.address() + plugins.push('karma-jasmine-html-reporter') + reporters.push('kjhtml') + config.singleRun = false + config.autoWatch = true + } +} + +config.frameworks = frameworks +config.plugins = plugins +config.reporters = reporters + +module.exports = karmaConfig => { + config.logLevel = karmaConfig.LOG_ERROR + karmaConfig.set(config) +} diff --git a/public/assets/libs/bootstrap/js/tests/unit/.eslintrc.json b/public/assets/libs/bootstrap/js/tests/unit/.eslintrc.json new file mode 100644 index 0000000..6362a1a --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/.eslintrc.json @@ -0,0 +1,13 @@ +{ + "extends": [ + "../../../.eslintrc.json" + ], + "env": { + "jasmine": true + }, + "rules": { + "unicorn/consistent-function-scoping": "off", + "unicorn/no-useless-undefined": "off", + "unicorn/prefer-add-event-listener": "off" + } +} diff --git a/public/assets/libs/bootstrap/js/tests/unit/alert.spec.js b/public/assets/libs/bootstrap/js/tests/unit/alert.spec.js new file mode 100644 index 0000000..d3740c9 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/alert.spec.js @@ -0,0 +1,259 @@ +import Alert from '../../src/alert' +import { getTransitionDurationFromElement } from '../../src/util/index' +import { clearFixture, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Alert', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '
    ' + + const alertEl = fixtureEl.querySelector('.alert') + const alertBySelector = new Alert('.alert') + const alertByElement = new Alert(alertEl) + + expect(alertBySelector._element).toEqual(alertEl) + expect(alertByElement._element).toEqual(alertEl) + }) + + it('should return version', () => { + expect(Alert.VERSION).toEqual(jasmine.any(String)) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Alert.DATA_KEY).toEqual('bs.alert') + }) + }) + + describe('data-api', () => { + it('should close an alert without instantiating it manually', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const button = document.querySelector('button') + + button.click() + expect(document.querySelectorAll('.alert')).toHaveSize(0) + }) + + it('should close an alert without instantiating it manually with the parent selector', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const button = document.querySelector('button') + + button.click() + expect(document.querySelectorAll('.alert')).toHaveSize(0) + }) + }) + + describe('close', () => { + it('should close an alert', () => { + return new Promise(resolve => { + const spy = jasmine.createSpy('spy', getTransitionDurationFromElement) + fixtureEl.innerHTML = '
    ' + + const alertEl = document.querySelector('.alert') + const alert = new Alert(alertEl) + + alertEl.addEventListener('closed.bs.alert', () => { + expect(document.querySelectorAll('.alert')).toHaveSize(0) + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + alert.close() + }) + }) + + it('should close alert with fade class', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const alertEl = document.querySelector('.alert') + const alert = new Alert(alertEl) + + alertEl.addEventListener('transitionend', () => { + expect().nothing() + }) + + alertEl.addEventListener('closed.bs.alert', () => { + expect(document.querySelectorAll('.alert')).toHaveSize(0) + resolve() + }) + + alert.close() + }) + }) + + it('should not remove alert if close event is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const getAlert = () => document.querySelector('.alert') + const alertEl = getAlert() + const alert = new Alert(alertEl) + + alertEl.addEventListener('close.bs.alert', event => { + event.preventDefault() + setTimeout(() => { + expect(getAlert()).not.toBeNull() + resolve() + }, 10) + }) + + alertEl.addEventListener('closed.bs.alert', () => { + reject(new Error('should not fire closed event')) + }) + + alert.close() + }) + }) + }) + + describe('dispose', () => { + it('should dispose an alert', () => { + fixtureEl.innerHTML = '
    ' + + const alertEl = document.querySelector('.alert') + const alert = new Alert(alertEl) + + expect(Alert.getInstance(alertEl)).not.toBeNull() + + alert.dispose() + + expect(Alert.getInstance(alertEl)).toBeNull() + }) + }) + + describe('jQueryInterface', () => { + it('should handle config passed and toggle existing alert', () => { + fixtureEl.innerHTML = '
    ' + + const alertEl = fixtureEl.querySelector('.alert') + const alert = new Alert(alertEl) + + const spy = spyOn(alert, 'close') + + jQueryMock.fn.alert = Alert.jQueryInterface + jQueryMock.elements = [alertEl] + + jQueryMock.fn.alert.call(jQueryMock, 'close') + + expect(spy).toHaveBeenCalled() + }) + + it('should create new alert instance and call close', () => { + fixtureEl.innerHTML = '
    ' + + const alertEl = fixtureEl.querySelector('.alert') + + jQueryMock.fn.alert = Alert.jQueryInterface + jQueryMock.elements = [alertEl] + + expect(Alert.getInstance(alertEl)).toBeNull() + jQueryMock.fn.alert.call(jQueryMock, 'close') + + expect(fixtureEl.querySelector('.alert')).toBeNull() + }) + + it('should just create an alert instance without calling close', () => { + fixtureEl.innerHTML = '
    ' + + const alertEl = fixtureEl.querySelector('.alert') + + jQueryMock.fn.alert = Alert.jQueryInterface + jQueryMock.elements = [alertEl] + + jQueryMock.fn.alert.call(jQueryMock) + + expect(Alert.getInstance(alertEl)).not.toBeNull() + expect(fixtureEl.querySelector('.alert')).not.toBeNull() + }) + + it('should throw an error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.alert = Alert.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.alert.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw an error on protected method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = '_getConfig' + + jQueryMock.fn.alert = Alert.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.alert.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return alert instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const alert = new Alert(div) + + expect(Alert.getInstance(div)).toEqual(alert) + expect(Alert.getInstance(div)).toBeInstanceOf(Alert) + }) + + it('should return null when there is no alert instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Alert.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return alert instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const alert = new Alert(div) + + expect(Alert.getOrCreateInstance(div)).toEqual(alert) + expect(Alert.getInstance(div)).toEqual(Alert.getOrCreateInstance(div, {})) + expect(Alert.getOrCreateInstance(div)).toBeInstanceOf(Alert) + }) + + it('should return new instance when there is no alert instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Alert.getInstance(div)).toBeNull() + expect(Alert.getOrCreateInstance(div)).toBeInstanceOf(Alert) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/base-component.spec.js b/public/assets/libs/bootstrap/js/tests/unit/base-component.spec.js new file mode 100644 index 0000000..b2352d6 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/base-component.spec.js @@ -0,0 +1,168 @@ +import BaseComponent from '../../src/base-component' +import { clearFixture, getFixture } from '../helpers/fixture' +import EventHandler from '../../src/dom/event-handler' +import { noop } from '../../src/util' + +class DummyClass extends BaseComponent { + constructor(element) { + super(element) + + EventHandler.on(this._element, `click${DummyClass.EVENT_KEY}`, noop) + } + + static get NAME() { + return 'dummy' + } +} + +describe('Base Component', () => { + let fixtureEl + const name = 'dummy' + let element + let instance + const createInstance = () => { + fixtureEl.innerHTML = '
    ' + element = fixtureEl.querySelector('#foo') + instance = new DummyClass(element) + } + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('Static Methods', () => { + describe('VERSION', () => { + it('should return version', () => { + expect(DummyClass.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(DummyClass.DATA_KEY).toEqual(`bs.${name}`) + }) + }) + + describe('NAME', () => { + it('should throw an Error if it is not initialized', () => { + expect(() => { + // eslint-disable-next-line no-unused-expressions + BaseComponent.NAME + }).toThrowError(Error) + }) + + it('should return plugin NAME', () => { + expect(DummyClass.NAME).toEqual(name) + }) + }) + + describe('EVENT_KEY', () => { + it('should return plugin event key', () => { + expect(DummyClass.EVENT_KEY).toEqual(`.bs.${name}`) + }) + }) + }) + + describe('Public Methods', () => { + describe('constructor', () => { + it('should accept element, either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ' + ].join('') + + const el = fixtureEl.querySelector('#foo') + const elInstance = new DummyClass(el) + const selectorInstance = new DummyClass('#bar') + + expect(elInstance._element).toEqual(el) + expect(selectorInstance._element).toEqual(fixtureEl.querySelector('#bar')) + }) + + it('should not initialize and add element record to Data (caching), if argument `element` is not an HTML element', () => { + fixtureEl.innerHTML = '' + + const el = fixtureEl.querySelector('#foo') + const elInstance = new DummyClass(el) + const selectorInstance = new DummyClass('#bar') + + expect(elInstance._element).not.toBeDefined() + expect(selectorInstance._element).not.toBeDefined() + }) + }) + + describe('dispose', () => { + it('should dispose an component', () => { + createInstance() + expect(DummyClass.getInstance(element)).not.toBeNull() + + instance.dispose() + + expect(DummyClass.getInstance(element)).toBeNull() + expect(instance._element).toBeNull() + }) + + it('should de-register element event listeners', () => { + createInstance() + const spy = spyOn(EventHandler, 'off') + + instance.dispose() + + expect(spy).toHaveBeenCalledWith(element, DummyClass.EVENT_KEY) + }) + }) + + describe('getInstance', () => { + it('should return an instance', () => { + createInstance() + + expect(DummyClass.getInstance(element)).toEqual(instance) + expect(DummyClass.getInstance(element)).toBeInstanceOf(DummyClass) + }) + + it('should accept element, either passed as a CSS selector, jQuery element, or DOM element', () => { + createInstance() + + expect(DummyClass.getInstance('#foo')).toEqual(instance) + expect(DummyClass.getInstance(element)).toEqual(instance) + + const fakejQueryObject = { + 0: element, + jquery: 'foo' + } + + expect(DummyClass.getInstance(fakejQueryObject)).toEqual(instance) + }) + + it('should return null when there is no instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(DummyClass.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return an instance', () => { + createInstance() + + expect(DummyClass.getOrCreateInstance(element)).toEqual(instance) + expect(DummyClass.getInstance(element)).toEqual(DummyClass.getOrCreateInstance(element, {})) + expect(DummyClass.getOrCreateInstance(element)).toBeInstanceOf(DummyClass) + }) + + it('should return new instance when there is no alert instance', () => { + fixtureEl.innerHTML = '
    ' + element = fixtureEl.querySelector('#foo') + + expect(DummyClass.getInstance(element)).toBeNull() + expect(DummyClass.getOrCreateInstance(element)).toBeInstanceOf(DummyClass) + }) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/button.spec.js b/public/assets/libs/bootstrap/js/tests/unit/button.spec.js new file mode 100644 index 0000000..09ed17e --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/button.spec.js @@ -0,0 +1,183 @@ +import Button from '../../src/button' +import { getFixture, clearFixture, jQueryMock } from '../helpers/fixture' + +describe('Button', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '' + const buttonEl = fixtureEl.querySelector('[data-bs-toggle="button"]') + const buttonBySelector = new Button('[data-bs-toggle="button"]') + const buttonByElement = new Button(buttonEl) + + expect(buttonBySelector._element).toEqual(buttonEl) + expect(buttonByElement._element).toEqual(buttonEl) + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Button.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Button.DATA_KEY).toEqual('bs.button') + }) + }) + + describe('data-api', () => { + it('should toggle active class on click', () => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + const btnTestParent = fixtureEl.querySelector('.testParent') + + expect(btn).not.toHaveClass('active') + + btn.click() + + expect(btn).toHaveClass('active') + + btn.click() + + expect(btn).not.toHaveClass('active') + + divTest.click() + + expect(btnTestParent).toHaveClass('active') + }) + }) + + describe('toggle', () => { + it('should toggle aria-pressed', () => { + fixtureEl.innerHTML = '' + + const btnEl = fixtureEl.querySelector('.btn') + const button = new Button(btnEl) + + expect(btnEl.getAttribute('aria-pressed')).toEqual('false') + expect(btnEl).not.toHaveClass('active') + + button.toggle() + + expect(btnEl.getAttribute('aria-pressed')).toEqual('true') + expect(btnEl).toHaveClass('active') + }) + }) + + describe('dispose', () => { + it('should dispose a button', () => { + fixtureEl.innerHTML = '' + + const btnEl = fixtureEl.querySelector('.btn') + const button = new Button(btnEl) + + expect(Button.getInstance(btnEl)).not.toBeNull() + + button.dispose() + + expect(Button.getInstance(btnEl)).toBeNull() + }) + }) + + describe('jQueryInterface', () => { + it('should handle config passed and toggle existing button', () => { + fixtureEl.innerHTML = '' + + const btnEl = fixtureEl.querySelector('.btn') + const button = new Button(btnEl) + + const spy = spyOn(button, 'toggle') + + jQueryMock.fn.button = Button.jQueryInterface + jQueryMock.elements = [btnEl] + + jQueryMock.fn.button.call(jQueryMock, 'toggle') + + expect(spy).toHaveBeenCalled() + }) + + it('should create new button instance and call toggle', () => { + fixtureEl.innerHTML = '' + + const btnEl = fixtureEl.querySelector('.btn') + + jQueryMock.fn.button = Button.jQueryInterface + jQueryMock.elements = [btnEl] + + jQueryMock.fn.button.call(jQueryMock, 'toggle') + + expect(Button.getInstance(btnEl)).not.toBeNull() + expect(btnEl).toHaveClass('active') + }) + + it('should just create a button instance without calling toggle', () => { + fixtureEl.innerHTML = '' + + const btnEl = fixtureEl.querySelector('.btn') + + jQueryMock.fn.button = Button.jQueryInterface + jQueryMock.elements = [btnEl] + + jQueryMock.fn.button.call(jQueryMock) + + expect(Button.getInstance(btnEl)).not.toBeNull() + expect(btnEl).not.toHaveClass('active') + }) + }) + + describe('getInstance', () => { + it('should return button instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const button = new Button(div) + + expect(Button.getInstance(div)).toEqual(button) + expect(Button.getInstance(div)).toBeInstanceOf(Button) + }) + + it('should return null when there is no button instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Button.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return button instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const button = new Button(div) + + expect(Button.getOrCreateInstance(div)).toEqual(button) + expect(Button.getInstance(div)).toEqual(Button.getOrCreateInstance(div, {})) + expect(Button.getOrCreateInstance(div)).toBeInstanceOf(Button) + }) + + it('should return new instance when there is no button instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Button.getInstance(div)).toBeNull() + expect(Button.getOrCreateInstance(div)).toBeInstanceOf(Button) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/carousel.spec.js b/public/assets/libs/bootstrap/js/tests/unit/carousel.spec.js new file mode 100644 index 0000000..d951bd5 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/carousel.spec.js @@ -0,0 +1,1570 @@ +import Carousel from '../../src/carousel' +import EventHandler from '../../src/dom/event-handler' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' +import { isRTL, noop } from '../../src/util/index' +import Swipe from '../../src/util/swipe' + +describe('Carousel', () => { + const { Simulator, PointerEvent } = window + const originWinPointerEvent = PointerEvent + const supportPointerEvent = Boolean(PointerEvent) + + const cssStyleCarousel = '.carousel.pointer-event { touch-action: none; }' + + const stylesCarousel = document.createElement('style') + stylesCarousel.type = 'text/css' + stylesCarousel.append(document.createTextNode(cssStyleCarousel)) + + const clearPointerEvents = () => { + window.PointerEvent = null + } + + const restorePointerEvents = () => { + window.PointerEvent = originWinPointerEvent + } + + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Carousel.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Carousel.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Carousel.DATA_KEY).toEqual('bs.carousel') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '' + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carouselBySelector = new Carousel('#myCarousel') + const carouselByElement = new Carousel(carouselEl) + + expect(carouselBySelector._element).toEqual(carouselEl) + expect(carouselByElement._element).toEqual(carouselEl) + }) + + it('should start cycling if `ride`===`carousel`', () => { + fixtureEl.innerHTML = '' + + const carousel = new Carousel('#myCarousel') + expect(carousel._interval).not.toBeNull() + }) + + it('should not start cycling if `ride`!==`carousel`', () => { + fixtureEl.innerHTML = '' + + const carousel = new Carousel('#myCarousel') + expect(carousel._interval).toBeNull() + }) + + it('should go to next item if right arrow key is pressed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, { + keyboard: true + }) + + const spy = spyOn(carousel, '_keydown').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', () => { + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item2')) + expect(spy).toHaveBeenCalled() + resolve() + }) + + const keydown = createEvent('keydown') + keydown.key = 'ArrowRight' + + carouselEl.dispatchEvent(keydown) + }) + }) + + it('should ignore keyboard events if data-bs-keyboard=false', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const spy = spyOn(EventHandler, 'trigger').and.callThrough() + const carouselEl = fixtureEl.querySelector('#myCarousel') + // eslint-disable-next-line no-new + new Carousel('#myCarousel') + expect(spy).not.toHaveBeenCalledWith(carouselEl, 'keydown.bs.carousel', jasmine.any(Function)) + }) + + it('should ignore mouse events if data-bs-pause=false', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const spy = spyOn(EventHandler, 'trigger').and.callThrough() + const carouselEl = fixtureEl.querySelector('#myCarousel') + // eslint-disable-next-line no-new + new Carousel('#myCarousel') + expect(spy).not.toHaveBeenCalledWith(carouselEl, 'hover.bs.carousel', jasmine.any(Function)) + }) + + it('should go to previous item if left arrow key is pressed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, { + keyboard: true + }) + + const spy = spyOn(carousel, '_keydown').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', () => { + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item1')) + expect(spy).toHaveBeenCalled() + resolve() + }) + + const keydown = createEvent('keydown') + keydown.key = 'ArrowLeft' + + carouselEl.dispatchEvent(keydown) + }) + }) + + it('should not prevent keydown if key is not ARROW_LEFT or ARROW_RIGHT', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, { + keyboard: true + }) + + const spy = spyOn(carousel, '_keydown').and.callThrough() + + carouselEl.addEventListener('keydown', event => { + expect(spy).toHaveBeenCalled() + expect(event.defaultPrevented).toBeFalse() + resolve() + }) + + const keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + + carouselEl.dispatchEvent(keydown) + }) + }) + + it('should ignore keyboard events within s and ', + ' ', + ' ', + ' ', + ' ', + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const input = fixtureEl.querySelector('input') + const textarea = fixtureEl.querySelector('textarea') + const carousel = new Carousel(carouselEl, { + keyboard: true + }) + + const spyKeydown = spyOn(carousel, '_keydown').and.callThrough() + const spySlide = spyOn(carousel, '_slide') + + const keydown = createEvent('keydown', { bubbles: true, cancelable: true }) + keydown.key = 'ArrowRight' + Object.defineProperty(keydown, 'target', { + value: input, + writable: true, + configurable: true + }) + + input.dispatchEvent(keydown) + + expect(spyKeydown).toHaveBeenCalled() + expect(spySlide).not.toHaveBeenCalled() + + spyKeydown.calls.reset() + spySlide.calls.reset() + + Object.defineProperty(keydown, 'target', { + value: textarea + }) + textarea.dispatchEvent(keydown) + + expect(spyKeydown).toHaveBeenCalled() + expect(spySlide).not.toHaveBeenCalled() + }) + + it('should not slide if arrow key is pressed and carousel is sliding', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(EventHandler, 'trigger') + + carousel._isSliding = true + + for (const key of ['ArrowLeft', 'ArrowRight']) { + const keydown = createEvent('keydown') + keydown.key = key + + carouselEl.dispatchEvent(keydown) + } + + expect(spy).not.toHaveBeenCalled() + }) + + it('should wrap around from end to start when wrap option is true', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, { wrap: true }) + const getActiveId = () => carouselEl.querySelector('.carousel-item.active').getAttribute('id') + + carouselEl.addEventListener('slid.bs.carousel', event => { + const activeId = getActiveId() + + if (activeId === 'two') { + carousel.next() + return + } + + if (activeId === 'three') { + carousel.next() + return + } + + if (activeId === 'one') { + // carousel wrapped around and slid from 3rd to 1st slide + expect(activeId).toEqual('one') + expect(event.from + 1).toEqual(3) + resolve() + } + }) + + carousel.next() + }) + }) + + it('should stay at the start when the prev method is called and wrap is false', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const firstElement = fixtureEl.querySelector('#one') + const carousel = new Carousel(carouselEl, { wrap: false }) + + carouselEl.addEventListener('slid.bs.carousel', () => { + reject(new Error('carousel slid when it should not have slid')) + }) + + carousel.prev() + + setTimeout(() => { + expect(firstElement).toHaveClass('active') + resolve() + }, 10) + }) + }) + + it('should not add touch event listeners if touch = false', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + + const spy = spyOn(Carousel.prototype, '_addTouchEventListeners') + + const carousel = new Carousel(carouselEl, { + touch: false + }) + + expect(spy).not.toHaveBeenCalled() + expect(carousel._swipeHelper).toBeNull() + }) + + it('should not add touch event listeners if touch supported = false', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + spyOn(Swipe, 'isSupported').and.returnValue(false) + + const carousel = new Carousel(carouselEl) + EventHandler.off(carouselEl, Carousel.EVENT_KEY) + + const spy = spyOn(carousel, '_addTouchEventListeners') + + carousel._addEventListeners() + + expect(spy).not.toHaveBeenCalled() + expect(carousel._swipeHelper).toBeNull() + }) + + it('should add touch event listeners by default', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + + spyOn(Carousel.prototype, '_addTouchEventListeners') + + // Headless browser does not support touch events, so need to fake it + // to test that touch events are add properly. + document.documentElement.ontouchstart = noop + const carousel = new Carousel(carouselEl) + + expect(carousel._addTouchEventListeners).toHaveBeenCalled() + }) + + it('should allow swiperight and call _slide (prev) with pointer events', () => { + return new Promise(resolve => { + if (!supportPointerEvent) { + expect().nothing() + resolve() + return + } + + document.documentElement.ontouchstart = noop + document.head.append(stylesCarousel) + Simulator.setType('pointer') + + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const item = fixtureEl.querySelector('#item') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, '_slide').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', event => { + expect(item).toHaveClass('active') + expect(spy).toHaveBeenCalledWith('prev') + expect(event.direction).toEqual('right') + stylesCarousel.remove() + delete document.documentElement.ontouchstart + resolve() + }) + + Simulator.gestures.swipe(carouselEl, { + deltaX: 300, + deltaY: 0 + }) + }) + }) + + it('should allow swipeleft and call next with pointer events', () => { + return new Promise(resolve => { + if (!supportPointerEvent) { + expect().nothing() + resolve() + return + } + + document.documentElement.ontouchstart = noop + document.head.append(stylesCarousel) + Simulator.setType('pointer') + + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const item = fixtureEl.querySelector('#item') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, '_slide').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', event => { + expect(item).not.toHaveClass('active') + expect(spy).toHaveBeenCalledWith('next') + expect(event.direction).toEqual('left') + stylesCarousel.remove() + delete document.documentElement.ontouchstart + resolve() + }) + + Simulator.gestures.swipe(carouselEl, { + pos: [300, 10], + deltaX: -300, + deltaY: 0 + }) + }) + }) + + it('should allow swiperight and call _slide (prev) with touch events', () => { + return new Promise(resolve => { + Simulator.setType('touch') + clearPointerEvents() + document.documentElement.ontouchstart = noop + + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const item = fixtureEl.querySelector('#item') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, '_slide').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', event => { + expect(item).toHaveClass('active') + expect(spy).toHaveBeenCalledWith('prev') + expect(event.direction).toEqual('right') + delete document.documentElement.ontouchstart + restorePointerEvents() + resolve() + }) + + Simulator.gestures.swipe(carouselEl, { + deltaX: 300, + deltaY: 0 + }) + }) + }) + + it('should allow swipeleft and call _slide (next) with touch events', () => { + return new Promise(resolve => { + Simulator.setType('touch') + clearPointerEvents() + document.documentElement.ontouchstart = noop + + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const item = fixtureEl.querySelector('#item') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, '_slide').and.callThrough() + + carouselEl.addEventListener('slid.bs.carousel', event => { + expect(item).not.toHaveClass('active') + expect(spy).toHaveBeenCalledWith('next') + expect(event.direction).toEqual('left') + delete document.documentElement.ontouchstart + restorePointerEvents() + resolve() + }) + + Simulator.gestures.swipe(carouselEl, { + pos: [300, 10], + deltaX: -300, + deltaY: 0 + }) + }) + }) + + it('should not slide when swiping and carousel is sliding', () => { + return new Promise(resolve => { + Simulator.setType('touch') + clearPointerEvents() + document.documentElement.ontouchstart = noop + + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const carousel = new Carousel(carouselEl) + carousel._isSliding = true + + const spy = spyOn(EventHandler, 'trigger') + + Simulator.gestures.swipe(carouselEl, { + deltaX: 300, + deltaY: 0 + }) + + Simulator.gestures.swipe(carouselEl, { + pos: [300, 10], + deltaX: -300, + deltaY: 0 + }) + + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + delete document.documentElement.ontouchstart + restorePointerEvents() + resolve() + }, 300) + }) + }) + + it('should not allow pinch with touch events', () => { + return new Promise(resolve => { + Simulator.setType('touch') + clearPointerEvents() + document.documentElement.ontouchstart = noop + + fixtureEl.innerHTML = '' + + const carouselEl = fixtureEl.querySelector('.carousel') + const carousel = new Carousel(carouselEl) + + Simulator.gestures.swipe(carouselEl, { + pos: [300, 10], + deltaX: -300, + deltaY: 0, + touches: 2 + }, () => { + restorePointerEvents() + delete document.documentElement.ontouchstart + expect(carousel._swipeHelper._deltaX).toEqual(0) + resolve() + }) + }) + }) + + it('should call pause method on mouse over with pause equal to hover', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const carouselEl = fixtureEl.querySelector('.carousel') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, 'pause') + + const mouseOverEvent = createEvent('mouseover') + carouselEl.dispatchEvent(mouseOverEvent) + + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 10) + }) + }) + + it('should call `maybeEnableCycle` on mouse out with pause equal to hover', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const carouselEl = fixtureEl.querySelector('.carousel') + const carousel = new Carousel(carouselEl) + + const spyEnable = spyOn(carousel, '_maybeEnableCycle').and.callThrough() + const spyCycle = spyOn(carousel, 'cycle') + + const mouseOutEvent = createEvent('mouseout') + carouselEl.dispatchEvent(mouseOutEvent) + + setTimeout(() => { + expect(spyEnable).toHaveBeenCalled() + expect(spyCycle).toHaveBeenCalled() + resolve() + }, 10) + }) + }) + }) + + describe('next', () => { + it('should not slide if the carousel is sliding', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(EventHandler, 'trigger') + + carousel._isSliding = true + carousel.next() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should not fire slid when slide is prevented', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + let slidEvent = false + + const doneTest = () => { + setTimeout(() => { + expect(slidEvent).toBeFalse() + resolve() + }, 20) + } + + carouselEl.addEventListener('slide.bs.carousel', event => { + event.preventDefault() + doneTest() + }) + + carouselEl.addEventListener('slid.bs.carousel', () => { + slidEvent = true + }) + + carousel.next() + }) + }) + + it('should fire slide event with: direction, relatedTarget, from and to', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + const onSlide = event => { + expect(event.direction).toEqual('left') + expect(event.relatedTarget).toHaveClass('carousel-item') + expect(event.from).toEqual(0) + expect(event.to).toEqual(1) + + carouselEl.removeEventListener('slide.bs.carousel', onSlide) + carouselEl.addEventListener('slide.bs.carousel', onSlide2) + + carousel.prev() + } + + const onSlide2 = event => { + expect(event.direction).toEqual('right') + resolve() + } + + carouselEl.addEventListener('slide.bs.carousel', onSlide) + carousel.next() + }) + }) + + it('should fire slid event with: direction, relatedTarget, from and to', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + const onSlid = event => { + expect(event.direction).toEqual('left') + expect(event.relatedTarget).toHaveClass('carousel-item') + expect(event.from).toEqual(0) + expect(event.to).toEqual(1) + + carouselEl.removeEventListener('slid.bs.carousel', onSlid) + carouselEl.addEventListener('slid.bs.carousel', onSlid2) + + carousel.prev() + } + + const onSlid2 = event => { + expect(event.direction).toEqual('right') + resolve() + } + + carouselEl.addEventListener('slid.bs.carousel', onSlid) + carousel.next() + }) + }) + + it('should update the active element to the next item before sliding', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const secondItemEl = fixtureEl.querySelector('#secondItem') + const carousel = new Carousel(carouselEl) + + carousel.next() + + expect(carousel._activeElement).toEqual(secondItemEl) + }) + + it('should continue cycling if it was already', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl) + const spy = spyOn(carousel, 'cycle') + + carousel.next() + expect(spy).not.toHaveBeenCalled() + + carousel.cycle() + carousel.next() + expect(spy).toHaveBeenCalledTimes(1) + }) + + it('should update indicators if present', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const firstIndicator = fixtureEl.querySelector('#firstIndicator') + const secondIndicator = fixtureEl.querySelector('#secondIndicator') + const carousel = new Carousel(carouselEl) + + carouselEl.addEventListener('slid.bs.carousel', () => { + expect(firstIndicator).not.toHaveClass('active') + expect(firstIndicator.hasAttribute('aria-current')).toBeFalse() + expect(secondIndicator).toHaveClass('active') + expect(secondIndicator.getAttribute('aria-current')).toEqual('true') + resolve() + }) + + carousel.next() + }) + }) + + it('should call next()/prev() instance methods when clicking the respective direction buttons', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#carousel') + const prevBtnEl = fixtureEl.querySelector('.carousel-control-prev') + const nextBtnEl = fixtureEl.querySelector('.carousel-control-next') + + const carousel = new Carousel(carouselEl) + const nextSpy = spyOn(carousel, 'next') + const prevSpy = spyOn(carousel, 'prev') + const spyEnable = spyOn(carousel, '_maybeEnableCycle') + + nextBtnEl.click() + prevBtnEl.click() + + expect(nextSpy).toHaveBeenCalled() + expect(prevSpy).toHaveBeenCalled() + expect(spyEnable).toHaveBeenCalled() + }) + }) + + describe('nextWhenVisible', () => { + it('should not call next when the page is not visible', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const carouselEl = fixtureEl.querySelector('.carousel') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(carousel, 'next') + + carousel.nextWhenVisible() + + expect(spy).not.toHaveBeenCalled() + }) + }) + + describe('prev', () => { + it('should not slide if the carousel is sliding', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(EventHandler, 'trigger') + + carousel._isSliding = true + carousel.prev() + + expect(spy).not.toHaveBeenCalled() + }) + }) + + describe('pause', () => { + it('should trigger transitionend if the carousel have carousel-item-next or carousel-item-prev class, cause is sliding', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl) + const spy = spyOn(carousel, '_clearInterval') + + carouselEl.addEventListener('transitionend', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + carousel._slide('next') + carousel.pause() + }) + }) + }) + + describe('cycle', () => { + it('should set an interval', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl) + + const spy = spyOn(window, 'setInterval').and.callThrough() + + carousel.cycle() + + expect(spy).toHaveBeenCalled() + }) + + it('should clear interval if there is one', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl) + + carousel._interval = setInterval(noop, 10) + + const spySet = spyOn(window, 'setInterval').and.callThrough() + const spyClear = spyOn(window, 'clearInterval').and.callThrough() + + carousel.cycle() + + expect(spySet).toHaveBeenCalled() + expect(spyClear).toHaveBeenCalled() + }) + + it('should get interval from data attribute on the active item element', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const secondItemEl = fixtureEl.querySelector('#secondItem') + const carousel = new Carousel(carouselEl, { + interval: 1814 + }) + + expect(carousel._config.interval).toEqual(1814) + + carousel.cycle() + + expect(carousel._config.interval).toEqual(7) + + carousel._activeElement = secondItemEl + carousel.cycle() + + expect(carousel._config.interval).toEqual(9385) + }) + }) + + describe('to', () => { + it('should go directly to the provided index', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item1')) + + carousel.to(2) + + carouselEl.addEventListener('slid.bs.carousel', () => { + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item3')) + resolve() + }) + }) + }) + + it('should return to a previous slide if the provided index is lower than the current', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item3')) + + carousel.to(1) + + carouselEl.addEventListener('slid.bs.carousel', () => { + expect(fixtureEl.querySelector('.active')).toEqual(fixtureEl.querySelector('#item2')) + resolve() + }) + }) + }) + + it('should do nothing if a wrong index is provided', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(carousel, '_slide') + + carousel.to(25) + + expect(spy).not.toHaveBeenCalled() + + spy.calls.reset() + + carousel.to(-5) + + expect(spy).not.toHaveBeenCalled() + }) + + it('should not continue if the provided is the same compare to the current one', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(carousel, '_slide') + + carousel.to(0) + + expect(spy).not.toHaveBeenCalled() + }) + + it('should wait before performing to if a slide is sliding', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const carousel = new Carousel(carouselEl, {}) + + const spyOne = spyOn(EventHandler, 'one').and.callThrough() + const spySlide = spyOn(carousel, '_slide') + + carousel._isSliding = true + carousel.to(1) + + expect(spySlide).not.toHaveBeenCalled() + expect(spyOne).toHaveBeenCalled() + + const spyTo = spyOn(carousel, 'to') + + EventHandler.trigger(carouselEl, 'slid.bs.carousel') + + setTimeout(() => { + expect(spyTo).toHaveBeenCalledWith(1) + resolve() + }) + }) + }) + }) + + describe('rtl function', () => { + it('"_directionToOrder" and "_orderToDirection" must return the right results', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + expect(carousel._directionToOrder('left')).toEqual('next') + expect(carousel._directionToOrder('right')).toEqual('prev') + + expect(carousel._orderToDirection('next')).toEqual('left') + expect(carousel._orderToDirection('prev')).toEqual('right') + }) + + it('"_directionToOrder" and "_orderToDirection" must return the right results when rtl=true', () => { + document.documentElement.dir = 'rtl' + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + expect(isRTL()).toBeTrue() + + expect(carousel._directionToOrder('left')).toEqual('prev') + expect(carousel._directionToOrder('right')).toEqual('next') + + expect(carousel._orderToDirection('next')).toEqual('right') + expect(carousel._orderToDirection('prev')).toEqual('left') + document.documentElement.dir = 'ltl' + }) + + it('"_slide" has to call _directionToOrder and "_orderToDirection"', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + + const spy = spyOn(carousel, '_orderToDirection').and.callThrough() + + carousel._slide(carousel._directionToOrder('left')) + expect(spy).toHaveBeenCalledWith('next') + + carousel._slide(carousel._directionToOrder('right')) + expect(spy).toHaveBeenCalledWith('prev') + }) + + it('"_slide" has to call "_directionToOrder" and "_orderToDirection" when rtl=true', () => { + document.documentElement.dir = 'rtl' + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const carousel = new Carousel(carouselEl, {}) + const spy = spyOn(carousel, '_orderToDirection').and.callThrough() + + carousel._slide(carousel._directionToOrder('left')) + expect(spy).toHaveBeenCalledWith('prev') + + carousel._slide(carousel._directionToOrder('right')) + expect(spy).toHaveBeenCalledWith('next') + + document.documentElement.dir = 'ltl' + }) + }) + + describe('dispose', () => { + it('should destroy a carousel', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const carouselEl = fixtureEl.querySelector('#myCarousel') + const addEventSpy = spyOn(carouselEl, 'addEventListener').and.callThrough() + const removeEventSpy = spyOn(EventHandler, 'off').and.callThrough() + + // Headless browser does not support touch events, so need to fake it + // to test that touch events are add/removed properly. + document.documentElement.ontouchstart = noop + + const carousel = new Carousel(carouselEl) + const swipeHelperSpy = spyOn(carousel._swipeHelper, 'dispose').and.callThrough() + + const expectedArgs = [ + ['keydown', jasmine.any(Function), jasmine.any(Boolean)], + ['mouseover', jasmine.any(Function), jasmine.any(Boolean)], + ['mouseout', jasmine.any(Function), jasmine.any(Boolean)], + ...(carousel._swipeHelper._supportPointerEvents ? + [ + ['pointerdown', jasmine.any(Function), jasmine.any(Boolean)], + ['pointerup', jasmine.any(Function), jasmine.any(Boolean)] + ] : + [ + ['touchstart', jasmine.any(Function), jasmine.any(Boolean)], + ['touchmove', jasmine.any(Function), jasmine.any(Boolean)], + ['touchend', jasmine.any(Function), jasmine.any(Boolean)] + ]) + ] + + expect(addEventSpy.calls.allArgs()).toEqual(expectedArgs) + + carousel.dispose() + + expect(carousel._swipeHelper).toBeNull() + expect(removeEventSpy).toHaveBeenCalledWith(carouselEl, Carousel.EVENT_KEY) + expect(swipeHelperSpy).toHaveBeenCalled() + + delete document.documentElement.ontouchstart + }) + }) + + describe('getInstance', () => { + it('should return carousel instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const carousel = new Carousel(div) + + expect(Carousel.getInstance(div)).toEqual(carousel) + expect(Carousel.getInstance(div)).toBeInstanceOf(Carousel) + }) + + it('should return null when there is no carousel instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Carousel.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return carousel instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const carousel = new Carousel(div) + + expect(Carousel.getOrCreateInstance(div)).toEqual(carousel) + expect(Carousel.getInstance(div)).toEqual(Carousel.getOrCreateInstance(div, {})) + expect(Carousel.getOrCreateInstance(div)).toBeInstanceOf(Carousel) + }) + + it('should return new instance when there is no carousel instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Carousel.getInstance(div)).toBeNull() + expect(Carousel.getOrCreateInstance(div)).toBeInstanceOf(Carousel) + }) + + it('should return new instance when there is no carousel instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Carousel.getInstance(div)).toBeNull() + const carousel = Carousel.getOrCreateInstance(div, { + interval: 1 + }) + expect(carousel).toBeInstanceOf(Carousel) + + expect(carousel._config.interval).toEqual(1) + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const carousel = new Carousel(div, { + interval: 1 + }) + expect(Carousel.getInstance(div)).toEqual(carousel) + + const carousel2 = Carousel.getOrCreateInstance(div, { + interval: 2 + }) + expect(carousel).toBeInstanceOf(Carousel) + expect(carousel2).toEqual(carousel) + + expect(carousel2._config.interval).toEqual(1) + }) + }) + + describe('jQueryInterface', () => { + it('should create a carousel', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.carousel = Carousel.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.carousel.call(jQueryMock) + + expect(Carousel.getInstance(div)).not.toBeNull() + }) + + it('should not re create a carousel', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const carousel = new Carousel(div) + + jQueryMock.fn.carousel = Carousel.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.carousel.call(jQueryMock) + + expect(Carousel.getInstance(div)).toEqual(carousel) + }) + + it('should call to if the config is a number', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const carousel = new Carousel(div) + const slideTo = 2 + + const spy = spyOn(carousel, 'to') + + jQueryMock.fn.carousel = Carousel.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.carousel.call(jQueryMock, slideTo) + + expect(spy).toHaveBeenCalledWith(slideTo) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.carousel = Carousel.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.carousel.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('data-api', () => { + it('should init carousels with data-bs-ride="carousel" on load', () => { + fixtureEl.innerHTML = '
    ' + + const carouselEl = fixtureEl.querySelector('div') + const loadEvent = createEvent('load') + + window.dispatchEvent(loadEvent) + const carousel = Carousel.getInstance(carouselEl) + expect(carousel._interval).not.toBeNull() + }) + + it('should create carousel and go to the next slide on click (with real button controls)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const next = fixtureEl.querySelector('#next') + const item2 = fixtureEl.querySelector('#item2') + + next.click() + + setTimeout(() => { + expect(item2).toHaveClass('active') + resolve() + }, 10) + }) + }) + + it('should create carousel and go to the next slide on click (using links as controls)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const next = fixtureEl.querySelector('#next') + const item2 = fixtureEl.querySelector('#item2') + + next.click() + + setTimeout(() => { + expect(item2).toHaveClass('active') + resolve() + }, 10) + }) + }) + + it('should create carousel and go to the next slide on click with data-bs-slide-to', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const next = fixtureEl.querySelector('#next') + const item2 = fixtureEl.querySelector('#item2') + + next.click() + + setTimeout(() => { + expect(item2).toHaveClass('active') + expect(Carousel.getInstance('#myCarousel')._interval).not.toBeNull() + resolve() + }, 10) + }) + }) + + it('should do nothing if no selector on click on arrows', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const next = fixtureEl.querySelector('#next') + + next.click() + + expect().nothing() + }) + + it('should do nothing if no carousel class on click on arrows', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const next = fixtureEl.querySelector('#next') + + next.click() + + expect().nothing() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/collapse.spec.js b/public/assets/libs/bootstrap/js/tests/unit/collapse.spec.js new file mode 100644 index 0000000..9c86719 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/collapse.spec.js @@ -0,0 +1,1062 @@ +import Collapse from '../../src/collapse' +import EventHandler from '../../src/dom/event-handler' +import { clearFixture, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Collapse', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Collapse.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Collapse.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Collapse.DATA_KEY).toEqual('bs.collapse') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div.my-collapse') + const collapseBySelector = new Collapse('div.my-collapse') + const collapseByElement = new Collapse(collapseEl) + + expect(collapseBySelector._element).toEqual(collapseEl) + expect(collapseByElement._element).toEqual(collapseEl) + }) + + it('should allow jquery object in parent config', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' Toggle item', + '
    Lorem ipsum
    ', + '
    ', + '
    ' + ].join('') + + const collapseEl = fixtureEl.querySelector('div.collapse') + const myCollapseEl = fixtureEl.querySelector('.my-collapse') + const fakejQueryObject = { + 0: myCollapseEl, + jquery: 'foo' + } + const collapse = new Collapse(collapseEl, { + parent: fakejQueryObject + }) + + expect(collapse._config.parent).toEqual(myCollapseEl) + }) + + it('should allow non jquery object in parent config', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' Toggle item', + '
    Lorem ipsum
    ', + '
    ', + '
    ' + ].join('') + + const collapseEl = fixtureEl.querySelector('div.collapse') + const myCollapseEl = fixtureEl.querySelector('.my-collapse') + const collapse = new Collapse(collapseEl, { + parent: myCollapseEl + }) + + expect(collapse._config.parent).toEqual(myCollapseEl) + }) + + it('should allow string selector in parent config', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' Toggle item', + '
    Lorem ipsum
    ', + '
    ', + '
    ' + ].join('') + + const collapseEl = fixtureEl.querySelector('div.collapse') + const myCollapseEl = fixtureEl.querySelector('.my-collapse') + const collapse = new Collapse(collapseEl, { + parent: 'div.my-collapse' + }) + + expect(collapse._config.parent).toEqual(myCollapseEl) + }) + }) + + describe('toggle', () => { + it('should call show method if show class is not present', () => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl) + + const spy = spyOn(collapse, 'show') + + collapse.toggle() + + expect(spy).toHaveBeenCalled() + }) + + it('should call hide method if show class is present', () => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('.show') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + const spy = spyOn(collapse, 'hide') + + collapse.toggle() + + expect(spy).toHaveBeenCalled() + }) + + it('should find collapse children if they have collapse class too not only data-bs-parent', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' Toggle item 1', + '
    Lorem ipsum 1
    ', + '
    ', + '
    ', + ' Toggle item 2', + '
    Lorem ipsum 2
    ', + '
    ', + '
    ' + ].join('') + + const parent = fixtureEl.querySelector('.my-collapse') + const collapseEl1 = fixtureEl.querySelector('#collapse1') + const collapseEl2 = fixtureEl.querySelector('#collapse2') + + const collapseList = [].concat(...fixtureEl.querySelectorAll('.collapse')) + .map(el => new Collapse(el, { + parent, + toggle: false + })) + + collapseEl2.addEventListener('shown.bs.collapse', () => { + expect(collapseEl2).toHaveClass('show') + expect(collapseEl1).not.toHaveClass('show') + resolve() + }) + + collapseList[1].toggle() + }) + }) + }) + + describe('show', () => { + it('should do nothing if is transitioning', () => { + fixtureEl.innerHTML = '
    ' + + const spy = spyOn(EventHandler, 'trigger') + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapse._isTransitioning = true + collapse.show() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should do nothing if already shown', () => { + fixtureEl.innerHTML = '
    ' + + const spy = spyOn(EventHandler, 'trigger') + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapse.show() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should show a collapsed element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapseEl.addEventListener('show.bs.collapse', () => { + expect(collapseEl.style.height).toEqual('0px') + }) + collapseEl.addEventListener('shown.bs.collapse', () => { + expect(collapseEl).toHaveClass('show') + expect(collapseEl.style.height).toEqual('') + resolve() + }) + + collapse.show() + }) + }) + + it('should show a collapsed element on width', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapseEl.addEventListener('show.bs.collapse', () => { + expect(collapseEl.style.width).toEqual('0px') + }) + collapseEl.addEventListener('shown.bs.collapse', () => { + expect(collapseEl).toHaveClass('show') + expect(collapseEl.style.width).toEqual('') + resolve() + }) + + collapse.show() + }) + }) + + it('should collapse only the first collapse', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const el1 = fixtureEl.querySelector('#collapse1') + const el2 = fixtureEl.querySelector('#collapse2') + const collapse = new Collapse(el1, { + toggle: false + }) + + el1.addEventListener('shown.bs.collapse', () => { + expect(el1).toHaveClass('show') + expect(el2).toHaveClass('show') + resolve() + }) + + collapse.show() + }) + }) + + it('should be able to handle toggling of other children siblings', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    content
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    content
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const el = selector => fixtureEl.querySelector(selector) + + const parentBtn = el('[data-bs-target="#parentContent"]') + const childBtn1 = el('[data-bs-target="#childContent1"]') + const childBtn2 = el('[data-bs-target="#childContent2"]') + + const parentCollapseEl = el('#parentContent') + const childCollapseEl1 = el('#childContent1') + const childCollapseEl2 = el('#childContent2') + + parentCollapseEl.addEventListener('shown.bs.collapse', () => { + expect(parentCollapseEl).toHaveClass('show') + childBtn1.click() + }) + childCollapseEl1.addEventListener('shown.bs.collapse', () => { + expect(childCollapseEl1).toHaveClass('show') + childBtn2.click() + }) + childCollapseEl2.addEventListener('shown.bs.collapse', () => { + expect(childCollapseEl2).toHaveClass('show') + expect(childCollapseEl1).not.toHaveClass('show') + resolve() + }) + + parentBtn.click() + }) + }) + + it('should not change tab tabpanels descendants on accordion', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '

    ', + ' ', + '

    ', + '
    ', + '
    ', + ' ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const el = fixtureEl.querySelector('#collapseOne') + const activeTabPane = fixtureEl.querySelector('#nav-home') + const collapse = new Collapse(el) + let times = 1 + + el.addEventListener('hidden.bs.collapse', () => { + collapse.show() + }) + + el.addEventListener('shown.bs.collapse', () => { + expect(activeTabPane).toHaveClass('show') + times++ + if (times === 2) { + resolve() + } + + collapse.hide() + }) + + collapse.show() + }) + }) + + it('should not fire shown when show is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + const expectEnd = () => { + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + } + + collapseEl.addEventListener('show.bs.collapse', event => { + event.preventDefault() + expectEnd() + }) + + collapseEl.addEventListener('shown.bs.collapse', () => { + reject(new Error('should not fire shown event')) + }) + + collapse.show() + }) + }) + }) + + describe('hide', () => { + it('should do nothing if is transitioning', () => { + fixtureEl.innerHTML = '
    ' + + const spy = spyOn(EventHandler, 'trigger') + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapse._isTransitioning = true + collapse.hide() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should do nothing if already shown', () => { + fixtureEl.innerHTML = '
    ' + + const spy = spyOn(EventHandler, 'trigger') + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapse.hide() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should hide a collapsed element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + collapseEl.addEventListener('hidden.bs.collapse', () => { + expect(collapseEl).not.toHaveClass('show') + expect(collapseEl.style.height).toEqual('') + resolve() + }) + + collapse.hide() + }) + }) + + it('should not fire hidden when hide is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + const expectEnd = () => { + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + } + + collapseEl.addEventListener('hide.bs.collapse', event => { + event.preventDefault() + expectEnd() + }) + + collapseEl.addEventListener('hidden.bs.collapse', () => { + reject(new Error('should not fire hidden event')) + }) + + collapse.hide() + }) + }) + }) + + describe('dispose', () => { + it('should destroy a collapse', () => { + fixtureEl.innerHTML = '
    ' + + const collapseEl = fixtureEl.querySelector('div') + const collapse = new Collapse(collapseEl, { + toggle: false + }) + + expect(Collapse.getInstance(collapseEl)).toEqual(collapse) + + collapse.dispose() + + expect(Collapse.getInstance(collapseEl)).toBeNull() + }) + }) + + describe('data-api', () => { + it('should prevent url change if click on nested elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const triggerEl = fixtureEl.querySelector('a') + const nestedTriggerEl = fixtureEl.querySelector('#nested') + + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + triggerEl.addEventListener('click', event => { + expect(event.target.isEqualNode(nestedTriggerEl)).toBeTrue() + expect(event.delegateTarget.isEqualNode(triggerEl)).toBeTrue() + expect(spy).toHaveBeenCalled() + resolve() + }) + + nestedTriggerEl.click() + }) + }) + + it('should show multiple collapsed elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('a') + const collapse1 = fixtureEl.querySelector('#collapse1') + const collapse2 = fixtureEl.querySelector('#collapse2') + + collapse2.addEventListener('shown.bs.collapse', () => { + expect(trigger.getAttribute('aria-expanded')).toEqual('true') + expect(trigger).not.toHaveClass('collapsed') + expect(collapse1).toHaveClass('show') + expect(collapse1).toHaveClass('show') + resolve() + }) + + trigger.click() + }) + }) + + it('should hide multiple collapsed elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('a') + const collapse1 = fixtureEl.querySelector('#collapse1') + const collapse2 = fixtureEl.querySelector('#collapse2') + + collapse2.addEventListener('hidden.bs.collapse', () => { + expect(trigger.getAttribute('aria-expanded')).toEqual('false') + expect(trigger).toHaveClass('collapsed') + expect(collapse1).not.toHaveClass('show') + expect(collapse1).not.toHaveClass('show') + resolve() + }) + + trigger.click() + }) + }) + + it('should remove "collapsed" class from target when collapse is shown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '
    ' + ].join('') + + const link1 = fixtureEl.querySelector('#link1') + const link2 = fixtureEl.querySelector('#link2') + const collapseTest1 = fixtureEl.querySelector('#test1') + + collapseTest1.addEventListener('shown.bs.collapse', () => { + expect(link1.getAttribute('aria-expanded')).toEqual('true') + expect(link2.getAttribute('aria-expanded')).toEqual('true') + expect(link1).not.toHaveClass('collapsed') + expect(link2).not.toHaveClass('collapsed') + resolve() + }) + + link1.click() + }) + }) + + it('should add "collapsed" class to target when collapse is hidden', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '
    ' + ].join('') + + const link1 = fixtureEl.querySelector('#link1') + const link2 = fixtureEl.querySelector('#link2') + const collapseTest1 = fixtureEl.querySelector('#test1') + + collapseTest1.addEventListener('hidden.bs.collapse', () => { + expect(link1.getAttribute('aria-expanded')).toEqual('false') + expect(link2.getAttribute('aria-expanded')).toEqual('false') + expect(link1).toHaveClass('collapsed') + expect(link2).toHaveClass('collapsed') + resolve() + }) + + link1.click() + }) + }) + + it('should allow accordion to use children other than card', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('#linkTrigger') + const triggerTwo = fixtureEl.querySelector('#linkTriggerTwo') + const collapseOne = fixtureEl.querySelector('#collapseOne') + const collapseTwo = fixtureEl.querySelector('#collapseTwo') + + collapseOne.addEventListener('shown.bs.collapse', () => { + expect(collapseOne).toHaveClass('show') + expect(collapseTwo).not.toHaveClass('show') + + collapseTwo.addEventListener('shown.bs.collapse', () => { + expect(collapseOne).not.toHaveClass('show') + expect(collapseTwo).toHaveClass('show') + resolve() + }) + + triggerTwo.click() + }) + + trigger.click() + }) + }) + + it('should not prevent event for input', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const target = fixtureEl.querySelector('input') + const collapseEl = fixtureEl.querySelector('#collapsediv1') + + collapseEl.addEventListener('shown.bs.collapse', () => { + expect(collapseEl).toHaveClass('show') + expect(target.checked).toBeTrue() + resolve() + }) + + target.click() + }) + }) + + it('should allow accordion to contain nested elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const triggerEl = fixtureEl.querySelector('#linkTrigger') + const triggerTwoEl = fixtureEl.querySelector('#linkTriggerTwo') + const collapseOneEl = fixtureEl.querySelector('#collapseOne') + const collapseTwoEl = fixtureEl.querySelector('#collapseTwo') + + collapseOneEl.addEventListener('shown.bs.collapse', () => { + expect(collapseOneEl).toHaveClass('show') + expect(triggerEl).not.toHaveClass('collapsed') + expect(triggerEl.getAttribute('aria-expanded')).toEqual('true') + + expect(collapseTwoEl).not.toHaveClass('show') + expect(triggerTwoEl).toHaveClass('collapsed') + expect(triggerTwoEl.getAttribute('aria-expanded')).toEqual('false') + + collapseTwoEl.addEventListener('shown.bs.collapse', () => { + expect(collapseOneEl).not.toHaveClass('show') + expect(triggerEl).toHaveClass('collapsed') + expect(triggerEl.getAttribute('aria-expanded')).toEqual('false') + + expect(collapseTwoEl).toHaveClass('show') + expect(triggerTwoEl).not.toHaveClass('collapsed') + expect(triggerTwoEl.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + triggerTwoEl.click() + }) + + triggerEl.click() + }) + }) + + it('should allow accordion to target multiple elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('#linkTriggerOne') + const triggerTwo = fixtureEl.querySelector('#linkTriggerTwo') + const collapseOneOne = fixtureEl.querySelector('#collapseOneOne') + const collapseOneTwo = fixtureEl.querySelector('#collapseOneTwo') + const collapseTwoOne = fixtureEl.querySelector('#collapseTwoOne') + const collapseTwoTwo = fixtureEl.querySelector('#collapseTwoTwo') + const collapsedElements = { + one: false, + two: false + } + + function firstTest() { + expect(collapseOneOne).toHaveClass('show') + expect(collapseOneTwo).toHaveClass('show') + + expect(collapseTwoOne).not.toHaveClass('show') + expect(collapseTwoTwo).not.toHaveClass('show') + + triggerTwo.click() + } + + function secondTest() { + expect(collapseOneOne).not.toHaveClass('show') + expect(collapseOneTwo).not.toHaveClass('show') + + expect(collapseTwoOne).toHaveClass('show') + expect(collapseTwoTwo).toHaveClass('show') + resolve() + } + + collapseOneOne.addEventListener('shown.bs.collapse', () => { + if (collapsedElements.one) { + firstTest() + } else { + collapsedElements.one = true + } + }) + + collapseOneTwo.addEventListener('shown.bs.collapse', () => { + if (collapsedElements.one) { + firstTest() + } else { + collapsedElements.one = true + } + }) + + collapseTwoOne.addEventListener('shown.bs.collapse', () => { + if (collapsedElements.two) { + secondTest() + } else { + collapsedElements.two = true + } + }) + + collapseTwoTwo.addEventListener('shown.bs.collapse', () => { + if (collapsedElements.two) { + secondTest() + } else { + collapsedElements.two = true + } + }) + + trigger.click() + }) + }) + + it('should collapse accordion children but not nested accordion children', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('#linkTrigger') + const triggerTwo = fixtureEl.querySelector('#linkTriggerTwo') + const nestedTrigger = fixtureEl.querySelector('#nestedLinkTrigger') + const collapseOne = fixtureEl.querySelector('#collapseOne') + const collapseTwo = fixtureEl.querySelector('#collapseTwo') + const nestedCollapseOne = fixtureEl.querySelector('#nestedCollapseOne') + + function handlerCollapseOne() { + expect(collapseOne).toHaveClass('show') + expect(collapseTwo).not.toHaveClass('show') + expect(nestedCollapseOne).not.toHaveClass('show') + + nestedCollapseOne.addEventListener('shown.bs.collapse', handlerNestedCollapseOne) + nestedTrigger.click() + collapseOne.removeEventListener('shown.bs.collapse', handlerCollapseOne) + } + + function handlerNestedCollapseOne() { + expect(collapseOne).toHaveClass('show') + expect(collapseTwo).not.toHaveClass('show') + expect(nestedCollapseOne).toHaveClass('show') + + collapseTwo.addEventListener('shown.bs.collapse', () => { + expect(collapseOne).not.toHaveClass('show') + expect(collapseTwo).toHaveClass('show') + expect(nestedCollapseOne).toHaveClass('show') + resolve() + }) + + triggerTwo.click() + nestedCollapseOne.removeEventListener('shown.bs.collapse', handlerNestedCollapseOne) + } + + collapseOne.addEventListener('shown.bs.collapse', handlerCollapseOne) + trigger.click() + }) + }) + + it('should add "collapsed" class and set aria-expanded to triggers only when all the targeted collapse are hidden', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '', + '
    ', + '
    ' + ].join('') + + const trigger1 = fixtureEl.querySelector('#trigger1') + const trigger2 = fixtureEl.querySelector('#trigger2') + const trigger3 = fixtureEl.querySelector('#trigger3') + const target1 = fixtureEl.querySelector('#test1') + const target2 = fixtureEl.querySelector('#test2') + + const target2Shown = () => { + expect(trigger1).not.toHaveClass('collapsed') + expect(trigger1.getAttribute('aria-expanded')).toEqual('true') + + expect(trigger2).not.toHaveClass('collapsed') + expect(trigger2.getAttribute('aria-expanded')).toEqual('true') + + expect(trigger3).not.toHaveClass('collapsed') + expect(trigger3.getAttribute('aria-expanded')).toEqual('true') + + target2.addEventListener('hidden.bs.collapse', () => { + expect(trigger1).not.toHaveClass('collapsed') + expect(trigger1.getAttribute('aria-expanded')).toEqual('true') + + expect(trigger2).toHaveClass('collapsed') + expect(trigger2.getAttribute('aria-expanded')).toEqual('false') + + expect(trigger3).not.toHaveClass('collapsed') + expect(trigger3.getAttribute('aria-expanded')).toEqual('true') + + target1.addEventListener('hidden.bs.collapse', () => { + expect(trigger1).toHaveClass('collapsed') + expect(trigger1.getAttribute('aria-expanded')).toEqual('false') + + expect(trigger2).toHaveClass('collapsed') + expect(trigger2.getAttribute('aria-expanded')).toEqual('false') + + expect(trigger3).toHaveClass('collapsed') + expect(trigger3.getAttribute('aria-expanded')).toEqual('false') + resolve() + }) + + trigger1.click() + }) + + trigger2.click() + } + + target2.addEventListener('shown.bs.collapse', target2Shown) + trigger3.click() + }) + }) + }) + + describe('jQueryInterface', () => { + it('should create a collapse', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.collapse = Collapse.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.collapse.call(jQueryMock) + + expect(Collapse.getInstance(div)).not.toBeNull() + }) + + it('should not re create a collapse', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const collapse = new Collapse(div) + + jQueryMock.fn.collapse = Collapse.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.collapse.call(jQueryMock) + + expect(Collapse.getInstance(div)).toEqual(collapse) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.collapse = Collapse.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.collapse.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return collapse instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const collapse = new Collapse(div) + + expect(Collapse.getInstance(div)).toEqual(collapse) + expect(Collapse.getInstance(div)).toBeInstanceOf(Collapse) + }) + + it('should return null when there is no collapse instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Collapse.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return collapse instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const collapse = new Collapse(div) + + expect(Collapse.getOrCreateInstance(div)).toEqual(collapse) + expect(Collapse.getInstance(div)).toEqual(Collapse.getOrCreateInstance(div, {})) + expect(Collapse.getOrCreateInstance(div)).toBeInstanceOf(Collapse) + }) + + it('should return new instance when there is no collapse instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Collapse.getInstance(div)).toBeNull() + expect(Collapse.getOrCreateInstance(div)).toBeInstanceOf(Collapse) + }) + + it('should return new instance when there is no collapse instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Collapse.getInstance(div)).toBeNull() + const collapse = Collapse.getOrCreateInstance(div, { + toggle: false + }) + expect(collapse).toBeInstanceOf(Collapse) + + expect(collapse._config.toggle).toBeFalse() + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const collapse = new Collapse(div, { + toggle: false + }) + expect(Collapse.getInstance(div)).toEqual(collapse) + + const collapse2 = Collapse.getOrCreateInstance(div, { + toggle: true + }) + expect(collapse).toBeInstanceOf(Collapse) + expect(collapse2).toEqual(collapse) + + expect(collapse2._config.toggle).toBeFalse() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/dom/data.spec.js b/public/assets/libs/bootstrap/js/tests/unit/dom/data.spec.js new file mode 100644 index 0000000..e898cbb --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/dom/data.spec.js @@ -0,0 +1,106 @@ +import Data from '../../../src/dom/data' +import { getFixture, clearFixture } from '../../helpers/fixture' + +describe('Data', () => { + const TEST_KEY = 'bs.test' + const UNKNOWN_KEY = 'bs.unknown' + const TEST_DATA = { + test: 'bsData' + } + + let fixtureEl + let div + + beforeAll(() => { + fixtureEl = getFixture() + }) + + beforeEach(() => { + fixtureEl.innerHTML = '
    ' + div = fixtureEl.querySelector('div') + }) + + afterEach(() => { + Data.remove(div, TEST_KEY) + clearFixture() + }) + + it('should return null for unknown elements', () => { + const data = { ...TEST_DATA } + + Data.set(div, TEST_KEY, data) + + expect(Data.get(null)).toBeNull() + expect(Data.get(undefined)).toBeNull() + expect(Data.get(document.createElement('div'), TEST_KEY)).toBeNull() + }) + + it('should return null for unknown keys', () => { + const data = { ...TEST_DATA } + + Data.set(div, TEST_KEY, data) + + expect(Data.get(div, null)).toBeNull() + expect(Data.get(div, undefined)).toBeNull() + expect(Data.get(div, UNKNOWN_KEY)).toBeNull() + }) + + it('should store data for an element with a given key and return it', () => { + const data = { ...TEST_DATA } + + Data.set(div, TEST_KEY, data) + + expect(Data.get(div, TEST_KEY)).toEqual(data) + }) + + it('should overwrite data if something is already stored', () => { + const data = { ...TEST_DATA } + const copy = { ...data } + + Data.set(div, TEST_KEY, data) + Data.set(div, TEST_KEY, copy) + + // Using `toBe` since spread creates a shallow copy + expect(Data.get(div, TEST_KEY)).not.toBe(data) + expect(Data.get(div, TEST_KEY)).toBe(copy) + }) + + it('should do nothing when an element has nothing stored', () => { + Data.remove(div, TEST_KEY) + + expect().nothing() + }) + + it('should remove nothing for an unknown key', () => { + const data = { ...TEST_DATA } + + Data.set(div, TEST_KEY, data) + Data.remove(div, UNKNOWN_KEY) + + expect(Data.get(div, TEST_KEY)).toEqual(data) + }) + + it('should remove data for a given key', () => { + const data = { ...TEST_DATA } + + Data.set(div, TEST_KEY, data) + Data.remove(div, TEST_KEY) + + expect(Data.get(div, TEST_KEY)).toBeNull() + }) + + /* eslint-disable no-console */ + it('should console.error a message if called with multiple keys', () => { + console.error = jasmine.createSpy('console.error') + + const data = { ...TEST_DATA } + const copy = { ...data } + + Data.set(div, TEST_KEY, data) + Data.set(div, UNKNOWN_KEY, copy) + + expect(console.error).toHaveBeenCalled() + expect(Data.get(div, UNKNOWN_KEY)).toBeNull() + }) + /* eslint-enable no-console */ +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/dom/event-handler.spec.js b/public/assets/libs/bootstrap/js/tests/unit/dom/event-handler.spec.js new file mode 100644 index 0000000..623b9c1 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/dom/event-handler.spec.js @@ -0,0 +1,480 @@ +import EventHandler from '../../../src/dom/event-handler' +import { clearFixture, getFixture } from '../../helpers/fixture' +import { noop } from '../../../src/util' + +describe('EventHandler', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('on', () => { + it('should not add event listener if the event is not a string', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + EventHandler.on(div, null, noop) + EventHandler.on(null, 'click', noop) + + expect().nothing() + }) + + it('should add event listener', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + EventHandler.on(div, 'click', () => { + expect().nothing() + resolve() + }) + + div.click() + }) + }) + + it('should add namespaced event listener', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + EventHandler.on(div, 'bs.namespace', () => { + expect().nothing() + resolve() + }) + + EventHandler.trigger(div, 'bs.namespace') + }) + }) + + it('should add native namespaced event listener', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + EventHandler.on(div, 'click.namespace', () => { + expect().nothing() + resolve() + }) + + EventHandler.trigger(div, 'click') + }) + }) + + it('should handle event delegation', () => { + return new Promise(resolve => { + EventHandler.on(document, 'click', '.test', () => { + expect().nothing() + resolve() + }) + + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + div.click() + }) + }) + + it('should handle mouseenter/mouseleave like the native counterpart', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const outer = fixtureEl.querySelector('.outer') + const inner = fixtureEl.querySelector('.inner') + const nested = fixtureEl.querySelector('.nested') + const deep = fixtureEl.querySelector('.deep') + const sibling = fixtureEl.querySelector('.sibling') + + const enterSpy = jasmine.createSpy('mouseenter') + const leaveSpy = jasmine.createSpy('mouseleave') + const delegateEnterSpy = jasmine.createSpy('mouseenter') + const delegateLeaveSpy = jasmine.createSpy('mouseleave') + + EventHandler.on(inner, 'mouseenter', enterSpy) + EventHandler.on(inner, 'mouseleave', leaveSpy) + EventHandler.on(outer, 'mouseenter', '.inner', delegateEnterSpy) + EventHandler.on(outer, 'mouseleave', '.inner', delegateLeaveSpy) + + EventHandler.on(sibling, 'mouseenter', () => { + expect(enterSpy.calls.count()).toEqual(2) + expect(leaveSpy.calls.count()).toEqual(2) + expect(delegateEnterSpy.calls.count()).toEqual(2) + expect(delegateLeaveSpy.calls.count()).toEqual(2) + resolve() + }) + + const moveMouse = (from, to) => { + from.dispatchEvent(new MouseEvent('mouseout', { + bubbles: true, + relatedTarget: to + })) + + to.dispatchEvent(new MouseEvent('mouseover', { + bubbles: true, + relatedTarget: from + })) + } + + // from outer to deep and back to outer (nested) + moveMouse(outer, inner) + moveMouse(inner, nested) + moveMouse(nested, deep) + moveMouse(deep, nested) + moveMouse(nested, inner) + moveMouse(inner, outer) + + setTimeout(() => { + expect(enterSpy.calls.count()).toEqual(1) + expect(leaveSpy.calls.count()).toEqual(1) + expect(delegateEnterSpy.calls.count()).toEqual(1) + expect(delegateLeaveSpy.calls.count()).toEqual(1) + + // from outer to inner to sibling (adjacent) + moveMouse(outer, inner) + moveMouse(inner, sibling) + }, 20) + }) + }) + }) + + describe('one', () => { + it('should call listener just once', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + let called = 0 + const div = fixtureEl.querySelector('div') + const obj = { + oneListener() { + called++ + } + } + + EventHandler.one(div, 'bootstrap', obj.oneListener) + + EventHandler.trigger(div, 'bootstrap') + EventHandler.trigger(div, 'bootstrap') + + setTimeout(() => { + expect(called).toEqual(1) + resolve() + }, 20) + }) + }) + + it('should call delegated listener just once', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + let called = 0 + const div = fixtureEl.querySelector('div') + const obj = { + oneListener() { + called++ + } + } + + EventHandler.one(fixtureEl, 'bootstrap', 'div', obj.oneListener) + + EventHandler.trigger(div, 'bootstrap') + EventHandler.trigger(div, 'bootstrap') + + setTimeout(() => { + expect(called).toEqual(1) + resolve() + }, 20) + }) + }) + }) + + describe('off', () => { + it('should not remove a listener', () => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + EventHandler.off(div, null, noop) + EventHandler.off(null, 'click', noop) + expect().nothing() + }) + + it('should remove a listener', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let called = 0 + const handler = () => { + called++ + } + + EventHandler.on(div, 'foobar', handler) + EventHandler.trigger(div, 'foobar') + + EventHandler.off(div, 'foobar', handler) + EventHandler.trigger(div, 'foobar') + + setTimeout(() => { + expect(called).toEqual(1) + resolve() + }, 20) + }) + }) + + it('should remove all the events', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let called = 0 + + EventHandler.on(div, 'foobar', () => { + called++ + }) + EventHandler.on(div, 'foobar', () => { + called++ + }) + EventHandler.trigger(div, 'foobar') + + EventHandler.off(div, 'foobar') + EventHandler.trigger(div, 'foobar') + + setTimeout(() => { + expect(called).toEqual(2) + resolve() + }, 20) + }) + }) + + it('should remove all the namespaced listeners if namespace is passed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let called = 0 + + EventHandler.on(div, 'foobar.namespace', () => { + called++ + }) + EventHandler.on(div, 'foofoo.namespace', () => { + called++ + }) + EventHandler.trigger(div, 'foobar.namespace') + EventHandler.trigger(div, 'foofoo.namespace') + + EventHandler.off(div, '.namespace') + EventHandler.trigger(div, 'foobar.namespace') + EventHandler.trigger(div, 'foofoo.namespace') + + setTimeout(() => { + expect(called).toEqual(2) + resolve() + }, 20) + }) + }) + + it('should remove the namespaced listeners', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let calledCallback1 = 0 + let calledCallback2 = 0 + + EventHandler.on(div, 'foobar.namespace', () => { + calledCallback1++ + }) + EventHandler.on(div, 'foofoo.namespace', () => { + calledCallback2++ + }) + + EventHandler.trigger(div, 'foobar.namespace') + EventHandler.off(div, 'foobar.namespace') + EventHandler.trigger(div, 'foobar.namespace') + + EventHandler.trigger(div, 'foofoo.namespace') + + setTimeout(() => { + expect(calledCallback1).toEqual(1) + expect(calledCallback2).toEqual(1) + resolve() + }, 20) + }) + }) + + it('should remove the all the namespaced listeners for native events', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let called = 0 + + EventHandler.on(div, 'click.namespace', () => { + called++ + }) + EventHandler.on(div, 'click.namespace2', () => { + called++ + }) + + EventHandler.trigger(div, 'click') + EventHandler.off(div, 'click') + EventHandler.trigger(div, 'click') + + setTimeout(() => { + expect(called).toEqual(2) + resolve() + }, 20) + }) + }) + + it('should remove the specified namespaced listeners for native events', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const div = fixtureEl.querySelector('div') + + let called1 = 0 + let called2 = 0 + + EventHandler.on(div, 'click.namespace', () => { + called1++ + }) + EventHandler.on(div, 'click.namespace2', () => { + called2++ + }) + EventHandler.trigger(div, 'click') + + EventHandler.off(div, 'click.namespace') + EventHandler.trigger(div, 'click') + + setTimeout(() => { + expect(called1).toEqual(1) + expect(called2).toEqual(2) + resolve() + }, 20) + }) + }) + + it('should remove a listener registered by .one', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const handler = () => { + reject(new Error('called')) + } + + EventHandler.one(div, 'foobar', handler) + EventHandler.off(div, 'foobar', handler) + + EventHandler.trigger(div, 'foobar') + setTimeout(() => { + expect().nothing() + resolve() + }, 20) + }) + }) + + it('should remove the correct delegated event listener', () => { + const element = document.createElement('div') + const subelement = document.createElement('span') + element.append(subelement) + + const anchor = document.createElement('a') + element.append(anchor) + + let i = 0 + const handler = () => { + i++ + } + + EventHandler.on(element, 'click', 'a', handler) + EventHandler.on(element, 'click', 'span', handler) + + fixtureEl.append(element) + + EventHandler.trigger(anchor, 'click') + EventHandler.trigger(subelement, 'click') + + // first listeners called + expect(i).toEqual(2) + + EventHandler.off(element, 'click', 'span', handler) + EventHandler.trigger(subelement, 'click') + + // removed listener not called + expect(i).toEqual(2) + + EventHandler.trigger(anchor, 'click') + + // not removed listener called + expect(i).toEqual(3) + + EventHandler.on(element, 'click', 'span', handler) + EventHandler.trigger(anchor, 'click') + EventHandler.trigger(subelement, 'click') + + // listener re-registered + expect(i).toEqual(5) + + EventHandler.off(element, 'click', 'span') + EventHandler.trigger(subelement, 'click') + + // listener removed again + expect(i).toEqual(5) + }) + }) + + describe('general functionality', () => { + it('should hydrate properties, and make them configurable', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div1 = fixtureEl.querySelector('#div1') + const div2 = fixtureEl.querySelector('#div2') + + EventHandler.on(div1, 'click', event => { + expect(event.currentTarget).toBe(div2) + expect(event.delegateTarget).toBe(div1) + expect(event.originalTarget).toBeNull() + + Object.defineProperty(event, 'currentTarget', { + configurable: true, + get() { + return div1 + } + }) + + expect(event.currentTarget).toBe(div1) + resolve() + }) + + expect(() => { + EventHandler.trigger(div1, 'click', { originalTarget: null, currentTarget: div2 }) + }).not.toThrowError(TypeError) + }) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/dom/manipulator.spec.js b/public/assets/libs/bootstrap/js/tests/unit/dom/manipulator.spec.js new file mode 100644 index 0000000..4561e2e --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/dom/manipulator.spec.js @@ -0,0 +1,135 @@ +import Manipulator from '../../../src/dom/manipulator' +import { clearFixture, getFixture } from '../../helpers/fixture' + +describe('Manipulator', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('setDataAttribute', () => { + it('should set data attribute prefixed with bs', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + Manipulator.setDataAttribute(div, 'key', 'value') + expect(div.getAttribute('data-bs-key')).toEqual('value') + }) + + it('should set data attribute in kebab case', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + Manipulator.setDataAttribute(div, 'testKey', 'value') + expect(div.getAttribute('data-bs-test-key')).toEqual('value') + }) + }) + + describe('removeDataAttribute', () => { + it('should only remove bs-prefixed data attribute', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + Manipulator.removeDataAttribute(div, 'key') + expect(div.getAttribute('data-bs-key')).toBeNull() + expect(div.getAttribute('data-key-bs')).toEqual('postfixed') + expect(div.getAttribute('data-key')).toEqual('value') + }) + + it('should remove data attribute in kebab case', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + Manipulator.removeDataAttribute(div, 'testKey') + expect(div.getAttribute('data-bs-test-key')).toBeNull() + }) + }) + + describe('getDataAttributes', () => { + it('should return an empty object for null', () => { + expect(Manipulator.getDataAttributes(null)).toEqual({}) + expect().nothing() + }) + + it('should get only bs-prefixed data attributes without bs namespace', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttributes(div)).toEqual({ + toggle: 'tabs', + target: '#element' + }) + }) + + it('should omit `bs-config` data attribute', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttributes(div)).toEqual({ + toggle: 'tabs', + target: '#element' + }) + }) + }) + + describe('getDataAttribute', () => { + it('should only get bs-prefixed data attribute', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttribute(div, 'key')).toEqual('value') + expect(Manipulator.getDataAttribute(div, 'test')).toBeNull() + expect(Manipulator.getDataAttribute(div, 'toggle')).toBeNull() + }) + + it('should get data attribute in kebab case', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttribute(div, 'testKey')).toEqual('value') + }) + + it('should normalize data', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttribute(div, 'test')).toBeFalse() + + div.setAttribute('data-bs-test', 'true') + expect(Manipulator.getDataAttribute(div, 'test')).toBeTrue() + + div.setAttribute('data-bs-test', '1') + expect(Manipulator.getDataAttribute(div, 'test')).toEqual(1) + }) + + it('should normalize json data', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Manipulator.getDataAttribute(div, 'test')).toEqual({ delay: { show: 100, hide: 10 } }) + + const objectData = { 'Super Hero': ['Iron Man', 'Super Man'], testNum: 90, url: 'http://localhost:8080/test?foo=bar' } + const dataStr = JSON.stringify(objectData) + div.setAttribute('data-bs-test', encodeURIComponent(dataStr)) + expect(Manipulator.getDataAttribute(div, 'test')).toEqual(objectData) + + div.setAttribute('data-bs-test', dataStr) + expect(Manipulator.getDataAttribute(div, 'test')).toEqual(objectData) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/dom/selector-engine.spec.js b/public/assets/libs/bootstrap/js/tests/unit/dom/selector-engine.spec.js new file mode 100644 index 0000000..0245896 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/dom/selector-engine.spec.js @@ -0,0 +1,236 @@ +import SelectorEngine from '../../../src/dom/selector-engine' +import { getFixture, clearFixture } from '../../helpers/fixture' + +describe('SelectorEngine', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('find', () => { + it('should find elements', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(SelectorEngine.find('div', fixtureEl)).toEqual([div]) + }) + + it('should find elements globally', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('#test') + + expect(SelectorEngine.find('#test')).toEqual([div]) + }) + + it('should handle :scope selectors', () => { + fixtureEl.innerHTML = [ + '
      ', + '
    • ', + '
    • ', + ' link', + '
    • ', + '
    • ', + '
    ' + ].join('') + + const listEl = fixtureEl.querySelector('ul') + const aActive = fixtureEl.querySelector('.active') + + expect(SelectorEngine.find(':scope > li > .active', listEl)).toEqual([aActive]) + }) + }) + + describe('findOne', () => { + it('should return one element', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('#test') + + expect(SelectorEngine.findOne('#test')).toEqual(div) + }) + }) + + describe('children', () => { + it('should find children', () => { + fixtureEl.innerHTML = [ + '
      ', + '
    • ', + '
    • ', + '
    • ', + '
    ' + ].join('') + + const list = fixtureEl.querySelector('ul') + const liList = [].concat(...fixtureEl.querySelectorAll('li')) + const result = SelectorEngine.children(list, 'li') + + expect(result).toEqual(liList) + }) + }) + + describe('parents', () => { + it('should return parents', () => { + expect(SelectorEngine.parents(fixtureEl, 'body')).toHaveSize(1) + }) + }) + + describe('prev', () => { + it('should return previous element', () => { + fixtureEl.innerHTML = '
    ' + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + + expect(SelectorEngine.prev(btn, '.test')).toEqual([divTest]) + }) + + it('should return previous element with an extra element between', () => { + fixtureEl.innerHTML = [ + '
    ', + '', + '' + ].join('') + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + + expect(SelectorEngine.prev(btn, '.test')).toEqual([divTest]) + }) + + it('should return previous element with comments or text nodes between', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '', + 'Text', + '' + ].join('') + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelectorAll('.test')[1] + + expect(SelectorEngine.prev(btn, '.test')).toEqual([divTest]) + }) + }) + + describe('next', () => { + it('should return next element', () => { + fixtureEl.innerHTML = '
    ' + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + + expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn]) + }) + + it('should return next element with an extra element between', () => { + fixtureEl.innerHTML = [ + '
    ', + '', + '' + ].join('') + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + + expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn]) + }) + + it('should return next element with comments or text nodes between', () => { + fixtureEl.innerHTML = [ + '
    ', + '', + 'Text', + '', + '' + ].join('') + + const btn = fixtureEl.querySelector('.btn') + const divTest = fixtureEl.querySelector('.test') + + expect(SelectorEngine.next(divTest, '.btn')).toEqual([btn]) + }) + }) + + describe('focusableChildren', () => { + it('should return only elements with specific tag names', () => { + fixtureEl.innerHTML = [ + '
    lorem
    ', + 'lorem', + 'lorem', + '', + '', + '', + '', + '
    lorem
    ' + ].join('') + + const expectedElements = [ + fixtureEl.querySelector('a'), + fixtureEl.querySelector('button'), + fixtureEl.querySelector('input'), + fixtureEl.querySelector('textarea'), + fixtureEl.querySelector('select'), + fixtureEl.querySelector('details') + ] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + + it('should return any element with non negative tab index', () => { + fixtureEl.innerHTML = [ + '
    lorem
    ', + '
    lorem
    ', + '
    lorem
    ' + ].join('') + + const expectedElements = [ + fixtureEl.querySelector('[tabindex]'), + fixtureEl.querySelector('[tabindex="0"]'), + fixtureEl.querySelector('[tabindex="10"]') + ] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + + it('should return not return elements with negative tab index', () => { + fixtureEl.innerHTML = '' + + const expectedElements = [] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + + it('should return contenteditable elements', () => { + fixtureEl.innerHTML = '
    lorem
    ' + + const expectedElements = [fixtureEl.querySelector('[contenteditable="true"]')] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + + it('should not return disabled elements', () => { + fixtureEl.innerHTML = '' + + const expectedElements = [] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + + it('should not return invisible elements', () => { + fixtureEl.innerHTML = '' + + const expectedElements = [] + + expect(SelectorEngine.focusableChildren(fixtureEl)).toEqual(expectedElements) + }) + }) +}) + diff --git a/public/assets/libs/bootstrap/js/tests/unit/dropdown.spec.js b/public/assets/libs/bootstrap/js/tests/unit/dropdown.spec.js new file mode 100644 index 0000000..2bbd7c0 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/dropdown.spec.js @@ -0,0 +1,2430 @@ +import Dropdown from '../../src/dropdown' +import EventHandler from '../../src/dom/event-handler' +import { noop } from '../../src/util/index' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Dropdown', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Dropdown.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Dropdown.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DefaultType', () => { + it('should return plugin default type config', () => { + expect(Dropdown.DefaultType).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Dropdown.DATA_KEY).toEqual('bs.dropdown') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownBySelector = new Dropdown('[data-bs-toggle="dropdown"]') + const dropdownByElement = new Dropdown(btnDropdown) + + expect(dropdownBySelector._element).toEqual(btnDropdown) + expect(dropdownByElement._element).toEqual(btnDropdown) + }) + + it('should work on invalid markup', () => { + return new Promise(resolve => { + // TODO: REMOVE in v6 + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownElem = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(dropdownElem) + + dropdownElem.addEventListener('shown.bs.dropdown', () => { + resolve() + }) + + dropdown.show() + }) + }) + + it('should create offset modifier correctly when offset option is a function', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const getOffset = jasmine.createSpy('getOffset').and.returnValue([10, 20]) + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + offset: getOffset, + popperConfig: { + onFirstUpdate(state) { + expect(getOffset).toHaveBeenCalledWith({ + popper: state.rects.popper, + reference: state.rects.reference, + placement: state.placement + }, btnDropdown) + resolve() + } + } + }) + const offset = dropdown._getOffset() + + expect(typeof offset).toEqual('function') + + dropdown.show() + }) + }) + + it('should create offset modifier correctly when offset option is a string into data attribute', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + expect(dropdown._getOffset()).toEqual([10, 20]) + }) + + it('should allow to pass config to Popper with `popperConfig`', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + popperConfig: { + placement: 'left' + } + }) + + const popperConfig = dropdown._getPopperConfig() + + expect(popperConfig.placement).toEqual('left') + }) + + it('should allow to pass config to Popper with `popperConfig` as a function', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const getPopperConfig = jasmine.createSpy('getPopperConfig').and.returnValue({ placement: 'left' }) + const dropdown = new Dropdown(btnDropdown, { + popperConfig: getPopperConfig + }) + + const popperConfig = dropdown._getPopperConfig() + + expect(getPopperConfig).toHaveBeenCalled() + expect(popperConfig.placement).toEqual('left') + }) + }) + + describe('toggle', () => { + it('should toggle a dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should destroy old popper references on toggle', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const btnDropdown1 = fixtureEl.querySelector('.firstBtn') + const btnDropdown2 = fixtureEl.querySelector('.secondBtn') + const firstDropdownEl = fixtureEl.querySelector('.first') + const secondDropdownEl = fixtureEl.querySelector('.second') + const dropdown1 = new Dropdown(btnDropdown1) + + firstDropdownEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown1).toHaveClass('show') + spyOn(dropdown1._popper, 'destroy') + btnDropdown2.click() + }) + + secondDropdownEl.addEventListener('shown.bs.dropdown', () => setTimeout(() => { + expect(dropdown1._popper.destroy).toHaveBeenCalled() + resolve() + })) + + dropdown1.toggle() + }) + }) + + it('should toggle a dropdown and add/remove event listener on mobile', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const defaultValueOnTouchStart = document.documentElement.ontouchstart + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + document.documentElement.ontouchstart = noop + const spy = spyOn(EventHandler, 'on') + const spyOff = spyOn(EventHandler, 'off') + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + expect(spy).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop) + + dropdown.toggle() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(btnDropdown).not.toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false') + expect(spyOff).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop) + + document.documentElement.ontouchstart = defaultValueOnTouchStart + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropdown at the right', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a centered dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropup', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropupEl = fixtureEl.querySelector('.dropup') + const dropdown = new Dropdown(btnDropdown) + + dropupEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropup centered', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropupEl = fixtureEl.querySelector('.dropup-center') + const dropdown = new Dropdown(btnDropdown) + + dropupEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropup at the right', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropupEl = fixtureEl.querySelector('.dropup') + const dropdown = new Dropdown(btnDropdown) + + dropupEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropend', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropendEl = fixtureEl.querySelector('.dropend') + const dropdown = new Dropdown(btnDropdown) + + dropendEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropstart', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropstartEl = fixtureEl.querySelector('.dropstart') + const dropdown = new Dropdown(btnDropdown) + + dropstartEl.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropdown with parent reference', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + reference: 'parent' + }) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropdown with a dom node reference', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + reference: fixtureEl + }) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropdown with a jquery object reference', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown, { + reference: { 0: fixtureEl, jquery: 'jQuery' } + }) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + }) + + dropdown.toggle() + }) + }) + + it('should toggle a dropdown with a valid virtual element reference', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const virtualElement = { + nodeType: 1, + getBoundingClientRect() { + return { + width: 0, + height: 0, + top: 0, + right: 0, + bottom: 0, + left: 0 + } + } + } + + expect(() => new Dropdown(btnDropdown, { + reference: {} + })).toThrowError(TypeError, 'DROPDOWN: Option "reference" provided type "object" without a required "getBoundingClientRect" method.') + + expect(() => new Dropdown(btnDropdown, { + reference: { + getBoundingClientRect: 'not-a-function' + } + })).toThrowError(TypeError, 'DROPDOWN: Option "reference" provided type "object" without a required "getBoundingClientRect" method.') + + // use onFirstUpdate as Poppers internal update is executed async + const dropdown = new Dropdown(btnDropdown, { + reference: virtualElement, + popperConfig: { + onFirstUpdate() { + expect(spy).toHaveBeenCalled() + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + } + } + }) + + const spy = spyOn(virtualElement, 'getBoundingClientRect').and.callThrough() + + dropdown.toggle() + }) + }) + + it('should not toggle a dropdown if the element is disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.toggle() + + setTimeout(() => { + expect().nothing() + resolve() + }) + }) + }) + + it('should not toggle a dropdown if the element contains .disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.toggle() + + setTimeout(() => { + expect().nothing() + resolve() + }) + }) + }) + + it('should not toggle a dropdown if the menu is shown', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.toggle() + + setTimeout(() => { + expect().nothing() + resolve() + }) + }) + }) + + it('should not toggle a dropdown if show event is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('show.bs.dropdown', event => { + event.preventDefault() + }) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.toggle() + + setTimeout(() => { + expect().nothing() + resolve() + }) + }) + }) + }) + + describe('show', () => { + it('should show a dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + resolve() + }) + + dropdown.show() + }) + }) + + it('should not show a dropdown if the element is disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.show() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + + it('should not show a dropdown if the element contains .disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.show() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + + it('should not show a dropdown if the menu is shown', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.show() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + + it('should not show a dropdown if show event is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('show.bs.dropdown', event => { + event.preventDefault() + }) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + reject(new Error('should not throw shown.bs.dropdown event')) + }) + + dropdown.show() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + }) + + describe('hide', () => { + it('should hide a dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(dropdownMenu).not.toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false') + resolve() + }) + + dropdown.hide() + }) + }) + + it('should hide a dropdown and destroy popper', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + spyOn(dropdown._popper, 'destroy') + dropdown.hide() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(dropdown._popper.destroy).toHaveBeenCalled() + resolve() + }) + + dropdown.show() + }) + }) + + it('should not hide a dropdown if the element is disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + reject(new Error('should not throw hidden.bs.dropdown event')) + }) + + dropdown.hide() + + setTimeout(() => { + expect(dropdownMenu).toHaveClass('show') + resolve() + }, 10) + }) + }) + + it('should not hide a dropdown if the element contains .disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + reject(new Error('should not throw hidden.bs.dropdown event')) + }) + + dropdown.hide() + + setTimeout(() => { + expect(dropdownMenu).toHaveClass('show') + resolve() + }, 10) + }) + }) + + it('should not hide a dropdown if the menu is not shown', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + reject(new Error('should not throw hidden.bs.dropdown event')) + }) + + dropdown.hide() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + + it('should not hide a dropdown if hide event is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('hide.bs.dropdown', event => { + event.preventDefault() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + reject(new Error('should not throw hidden.bs.dropdown event')) + }) + + dropdown.hide() + + setTimeout(() => { + expect(dropdownMenu).toHaveClass('show') + resolve() + }) + }) + }) + + it('should remove event listener on touch-enabled device that was added in show method', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const defaultValueOnTouchStart = document.documentElement.ontouchstart + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + document.documentElement.ontouchstart = noop + const spy = spyOn(EventHandler, 'off') + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + dropdown.hide() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(btnDropdown).not.toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false') + expect(spy).toHaveBeenCalled() + + document.documentElement.ontouchstart = defaultValueOnTouchStart + resolve() + }) + + dropdown.show() + }) + }) + }) + + describe('dispose', () => { + it('should dispose dropdown', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + const dropdown = new Dropdown(btnDropdown) + + expect(dropdown._popper).toBeNull() + expect(dropdown._menu).not.toBeNull() + expect(dropdown._element).not.toBeNull() + const spy = spyOn(EventHandler, 'off') + + dropdown.dispose() + + expect(dropdown._menu).toBeNull() + expect(dropdown._element).toBeNull() + expect(spy).toHaveBeenCalledWith(btnDropdown, Dropdown.EVENT_KEY) + }) + + it('should dispose dropdown with Popper', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + dropdown.toggle() + + expect(dropdown._popper).not.toBeNull() + expect(dropdown._menu).not.toBeNull() + expect(dropdown._element).not.toBeNull() + + dropdown.dispose() + + expect(dropdown._popper).toBeNull() + expect(dropdown._menu).toBeNull() + expect(dropdown._element).toBeNull() + }) + }) + + describe('update', () => { + it('should call Popper and detect navbar on update', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + dropdown.toggle() + + expect(dropdown._popper).not.toBeNull() + + const spyUpdate = spyOn(dropdown._popper, 'update') + const spyDetect = spyOn(dropdown, '_detectNavbar') + + dropdown.update() + + expect(spyUpdate).toHaveBeenCalled() + expect(spyDetect).toHaveBeenCalled() + }) + + it('should just detect navbar on update', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(btnDropdown) + + const spy = spyOn(dropdown, '_detectNavbar') + + dropdown.update() + + expect(dropdown._popper).toBeNull() + expect(spy).toHaveBeenCalled() + }) + }) + + describe('data-api', () => { + it('should show and hide a dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + let showEventTriggered = false + let hideEventTriggered = false + + btnDropdown.addEventListener('show.bs.dropdown', () => { + showEventTriggered = true + }) + + btnDropdown.addEventListener('shown.bs.dropdown', event => setTimeout(() => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + expect(showEventTriggered).toBeTrue() + expect(event.relatedTarget).toEqual(btnDropdown) + document.body.click() + })) + + btnDropdown.addEventListener('hide.bs.dropdown', () => { + hideEventTriggered = true + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', event => { + expect(btnDropdown).not.toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('false') + expect(hideEventTriggered).toBeTrue() + expect(event.relatedTarget).toEqual(btnDropdown) + resolve() + }) + + btnDropdown.click() + }) + }) + + it('should not use "static" Popper in navbar', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(dropdown._popper).not.toBeNull() + expect(dropdownMenu.getAttribute('data-bs-popper')).toEqual('static') + resolve() + }) + + dropdown.show() + }) + }) + + it('should not collapse the dropdown when clicking a select option nested in the dropdown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + const hideSpy = spyOn(dropdown, '_completeHide') + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + const clickEvent = new MouseEvent('click', { + bubbles: true + }) + + dropdownMenu.querySelector('option').dispatchEvent(clickEvent) + }) + + dropdownMenu.addEventListener('click', event => { + expect(event.target.tagName).toMatch(/select|option/i) + + Dropdown.clearMenus(event) + + setTimeout(() => { + expect(hideSpy).not.toHaveBeenCalled() + resolve() + }, 10) + }) + + dropdown.show() + }) + }) + + it('should manage bs attribute `data-bs-popper`="static" when dropdown is in navbar', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(dropdownMenu.getAttribute('data-bs-popper')).toEqual('static') + dropdown.hide() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(dropdownMenu.getAttribute('data-bs-popper')).toBeNull() + resolve() + }) + + dropdown.show() + }) + }) + + it('should not use Popper if display set to static', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + // Popper adds this attribute when we use it + expect(dropdownMenu.getAttribute('data-popper-placement')).toBeNull() + resolve() + }) + + btnDropdown.click() + }) + }) + + it('should manage bs attribute `data-bs-popper`="static" when display set to static', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const dropdown = new Dropdown(btnDropdown) + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(dropdownMenu.getAttribute('data-bs-popper')).toEqual('static') + dropdown.hide() + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(dropdownMenu.getAttribute('data-bs-popper')).toBeNull() + resolve() + }) + + dropdown.show() + }) + }) + + it('should remove "show" class if tabbing outside of menu', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + btnDropdown.addEventListener('shown.bs.dropdown', () => { + expect(btnDropdown).toHaveClass('show') + + const keyup = createEvent('keyup') + + keyup.key = 'Tab' + document.dispatchEvent(keyup) + }) + + btnDropdown.addEventListener('hidden.bs.dropdown', () => { + expect(btnDropdown).not.toHaveClass('show') + resolve() + }) + + btnDropdown.click() + }) + }) + + it('should remove "show" class if body is clicked, with multiple dropdowns', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const triggerDropdownList = fixtureEl.querySelectorAll('[data-bs-toggle="dropdown"]') + + expect(triggerDropdownList).toHaveSize(2) + + const [triggerDropdownFirst, triggerDropdownLast] = triggerDropdownList + + triggerDropdownFirst.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdownFirst).toHaveClass('show') + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1) + document.body.click() + }) + + triggerDropdownFirst.addEventListener('hidden.bs.dropdown', () => { + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0) + triggerDropdownLast.click() + }) + + triggerDropdownLast.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdownLast).toHaveClass('show') + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1) + document.body.click() + }) + + triggerDropdownLast.addEventListener('hidden.bs.dropdown', () => { + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0) + resolve() + }) + + triggerDropdownFirst.click() + }) + }) + + it('should remove "show" class if body if tabbing outside of menu, with multiple dropdowns', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const triggerDropdownList = fixtureEl.querySelectorAll('[data-bs-toggle="dropdown"]') + + expect(triggerDropdownList).toHaveSize(2) + + const [triggerDropdownFirst, triggerDropdownLast] = triggerDropdownList + + triggerDropdownFirst.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdownFirst).toHaveClass('show') + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1) + + const keyup = createEvent('keyup') + keyup.key = 'Tab' + + document.dispatchEvent(keyup) + }) + + triggerDropdownFirst.addEventListener('hidden.bs.dropdown', () => { + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0) + triggerDropdownLast.click() + }) + + triggerDropdownLast.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdownLast).toHaveClass('show') + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(1) + + const keyup = createEvent('keyup') + keyup.key = 'Tab' + + document.dispatchEvent(keyup) + }) + + triggerDropdownLast.addEventListener('hidden.bs.dropdown', () => { + expect(fixtureEl.querySelectorAll('.dropdown-menu.show')).toHaveSize(0) + resolve() + }) + + triggerDropdownFirst.click() + }) + }) + + it('should be able to identify clicked dropdown, even with multiple dropdowns in the same tag', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle1 = fixtureEl.querySelector('#dropdown1') + const dropdownToggle2 = fixtureEl.querySelector('#dropdown2') + const dropdownMenu1 = fixtureEl.querySelector('#menu1') + const dropdownMenu2 = fixtureEl.querySelector('#menu2') + const spy = spyOn(Dropdown, 'getOrCreateInstance').and.callThrough() + + dropdownToggle1.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle1) + + dropdownToggle2.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle2) + + dropdownMenu1.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle1) + + dropdownMenu2.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle2) + }) + + it('should be able to show the proper menu, even with multiple dropdowns in the same tag', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle1 = fixtureEl.querySelector('#dropdown1') + const dropdownToggle2 = fixtureEl.querySelector('#dropdown2') + const dropdownMenu1 = fixtureEl.querySelector('#menu1') + const dropdownMenu2 = fixtureEl.querySelector('#menu2') + + dropdownToggle1.click() + expect(dropdownMenu1).toHaveClass('show') + expect(dropdownMenu2).not.toHaveClass('show') + + dropdownToggle2.click() + expect(dropdownMenu1).not.toHaveClass('show') + expect(dropdownMenu2).toHaveClass('show') + }) + + it('should fire hide and hidden event without a clickEvent if event type is not click', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + triggerDropdown.addEventListener('hide.bs.dropdown', event => { + expect(event.clickEvent).toBeUndefined() + }) + + triggerDropdown.addEventListener('hidden.bs.dropdown', event => { + expect(event.clickEvent).toBeUndefined() + resolve() + }) + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + const keydown = createEvent('keydown') + + keydown.key = 'Escape' + triggerDropdown.dispatchEvent(keydown) + }) + + triggerDropdown.click() + }) + }) + + it('should bubble up the events to the parent elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownParent = fixtureEl.querySelector('.dropdown') + const dropdown = new Dropdown(triggerDropdown) + + const showFunction = jasmine.createSpy('showFunction') + dropdownParent.addEventListener('show.bs.dropdown', showFunction) + + const shownFunction = jasmine.createSpy('shownFunction') + dropdownParent.addEventListener('shown.bs.dropdown', () => { + shownFunction() + dropdown.hide() + }) + + const hideFunction = jasmine.createSpy('hideFunction') + dropdownParent.addEventListener('hide.bs.dropdown', hideFunction) + + dropdownParent.addEventListener('hidden.bs.dropdown', () => { + expect(showFunction).toHaveBeenCalled() + expect(shownFunction).toHaveBeenCalled() + expect(hideFunction).toHaveBeenCalled() + resolve() + }) + + dropdown.show() + }) + }) + + it('should ignore keyboard events within s and ', + ' ', + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const input = fixtureEl.querySelector('input') + const textarea = fixtureEl.querySelector('textarea') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + input.focus() + const keydown = createEvent('keydown') + + keydown.key = 'ArrowUp' + input.dispatchEvent(keydown) + + expect(document.activeElement).toEqual(input, 'input still focused') + + textarea.focus() + textarea.dispatchEvent(keydown) + + expect(document.activeElement).toEqual(textarea, 'textarea still focused') + resolve() + }) + + triggerDropdown.click() + }) + }) + + it('should skip disabled element when using keyboard navigation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + const keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + + triggerDropdown.dispatchEvent(keydown) + triggerDropdown.dispatchEvent(keydown) + + expect(document.activeElement).not.toHaveClass('disabled') + expect(document.activeElement.hasAttribute('disabled')).toBeFalse() + resolve() + }) + + triggerDropdown.click() + }) + }) + + it('should skip hidden element when using keyboard navigation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + const keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + + triggerDropdown.dispatchEvent(keydown) + + expect(document.activeElement).not.toHaveClass('d-none') + expect(document.activeElement.style.display).not.toEqual('none') + expect(document.activeElement.style.visibility).not.toEqual('hidden') + + resolve() + }) + + triggerDropdown.click() + }) + }) + + it('should focus next/previous element when using keyboard navigation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const item1 = fixtureEl.querySelector('#item1') + const item2 = fixtureEl.querySelector('#item2') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + const keydownArrowDown = createEvent('keydown') + keydownArrowDown.key = 'ArrowDown' + + triggerDropdown.dispatchEvent(keydownArrowDown) + expect(document.activeElement).toEqual(item1, 'item1 is focused') + + document.activeElement.dispatchEvent(keydownArrowDown) + expect(document.activeElement).toEqual(item2, 'item2 is focused') + + const keydownArrowUp = createEvent('keydown') + keydownArrowUp.key = 'ArrowUp' + + document.activeElement.dispatchEvent(keydownArrowUp) + expect(document.activeElement).toEqual(item1, 'item1 is focused') + + resolve() + }) + + triggerDropdown.click() + }) + }) + + it('should open the dropdown and focus on the last item when using ArrowUp for the first time', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const lastItem = fixtureEl.querySelector('#item2') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + setTimeout(() => { + expect(document.activeElement).toEqual(lastItem, 'item2 is focused') + resolve() + }) + }) + + const keydown = createEvent('keydown') + keydown.key = 'ArrowUp' + triggerDropdown.dispatchEvent(keydown) + }) + }) + + it('should open the dropdown and focus on the first item when using ArrowDown for the first time', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const firstItem = fixtureEl.querySelector('#item1') + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + setTimeout(() => { + expect(document.activeElement).toEqual(firstItem, 'item1 is focused') + resolve() + }) + }) + + const keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + triggerDropdown.dispatchEvent(keydown) + }) + }) + + it('should not close the dropdown if the user clicks on a text field within dropdown-menu', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const input = fixtureEl.querySelector('input') + + input.addEventListener('click', () => { + expect(triggerDropdown).toHaveClass('show') + resolve() + }) + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdown).toHaveClass('show') + input.dispatchEvent(createEvent('click')) + }) + + triggerDropdown.click() + }) + }) + + it('should not close the dropdown if the user clicks on a textarea within dropdown-menu', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const textarea = fixtureEl.querySelector('textarea') + + textarea.addEventListener('click', () => { + expect(triggerDropdown).toHaveClass('show') + resolve() + }) + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + expect(triggerDropdown).toHaveClass('show') + textarea.dispatchEvent(createEvent('click')) + }) + + triggerDropdown.click() + }) + }) + + it('should close the dropdown if the user clicks on a text field that is not contained within dropdown-menu', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const input = fixtureEl.querySelector('input') + + triggerDropdown.addEventListener('hidden.bs.dropdown', () => { + expect().nothing() + resolve() + }) + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + input.dispatchEvent(createEvent('click', { + bubbles: true + })) + }) + + triggerDropdown.click() + }) + }) + + it('should ignore keyboard events for s and ', + ' ', + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const input = fixtureEl.querySelector('input') + const textarea = fixtureEl.querySelector('textarea') + + const test = (eventKey, elementToDispatch) => { + const event = createEvent('keydown') + event.key = eventKey + elementToDispatch.focus() + elementToDispatch.dispatchEvent(event) + expect(document.activeElement).toEqual(elementToDispatch, `${elementToDispatch.tagName} still focused`) + } + + const keydownEscape = createEvent('keydown') + keydownEscape.key = 'Escape' + + triggerDropdown.addEventListener('shown.bs.dropdown', () => { + // Key Space + test('Space', input) + + test('Space', textarea) + + // Key ArrowUp + test('ArrowUp', input) + + test('ArrowUp', textarea) + + // Key ArrowDown + test('ArrowDown', input) + + test('ArrowDown', textarea) + + // Key Escape + input.focus() + input.dispatchEvent(keydownEscape) + + expect(triggerDropdown).not.toHaveClass('show') + resolve() + }) + + triggerDropdown.click() + }) + }) + + it('should not open dropdown if escape key was pressed on the toggle', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = new Dropdown(triggerDropdown) + const button = fixtureEl.querySelector('button[data-bs-toggle="dropdown"]') + + const spy = spyOn(dropdown, 'toggle') + + // Key escape + button.focus() + // Key escape + const keydownEscape = createEvent('keydown') + keydownEscape.key = 'Escape' + button.dispatchEvent(keydownEscape) + + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + expect(triggerDropdown).not.toHaveClass('show') + resolve() + }, 20) + }) + }) + + it('should propagate escape key events if dropdown is closed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const parent = fixtureEl.querySelector('.parent') + const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + const parentKeyHandler = jasmine.createSpy('parentKeyHandler') + + parent.addEventListener('keydown', parentKeyHandler) + parent.addEventListener('keyup', () => { + expect(parentKeyHandler).toHaveBeenCalled() + resolve() + }) + + const keydownEscape = createEvent('keydown', { bubbles: true }) + keydownEscape.key = 'Escape' + const keyupEscape = createEvent('keyup', { bubbles: true }) + keyupEscape.key = 'Escape' + + toggle.focus() + toggle.dispatchEvent(keydownEscape) + toggle.dispatchEvent(keyupEscape) + }) + }) + + it('should not propagate escape key events if dropdown is open', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const parent = fixtureEl.querySelector('.parent') + const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + const parentKeyHandler = jasmine.createSpy('parentKeyHandler') + + parent.addEventListener('keydown', parentKeyHandler) + parent.addEventListener('keyup', () => { + expect(parentKeyHandler).not.toHaveBeenCalled() + resolve() + }) + + const keydownEscape = createEvent('keydown', { bubbles: true }) + keydownEscape.key = 'Escape' + const keyupEscape = createEvent('keyup', { bubbles: true }) + keyupEscape.key = 'Escape' + + toggle.click() + toggle.dispatchEvent(keydownEscape) + toggle.dispatchEvent(keyupEscape) + }) + }) + + it('should close dropdown using `escape` button, and return focus to its trigger', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const toggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + + toggle.addEventListener('shown.bs.dropdown', () => { + const keydownEvent = createEvent('keydown', { bubbles: true }) + keydownEvent.key = 'ArrowDown' + toggle.dispatchEvent(keydownEvent) + keydownEvent.key = 'Escape' + toggle.dispatchEvent(keydownEvent) + }) + + toggle.addEventListener('hidden.bs.dropdown', () => setTimeout(() => { + expect(document.activeElement).toEqual(toggle) + resolve() + })) + + toggle.click() + }) + }) + + it('should close dropdown (only) by clicking inside the dropdown menu when it has data-attribute `data-bs-auto-close="inside"`', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + + const expectDropdownToBeOpened = () => setTimeout(() => { + expect(dropdownToggle).toHaveClass('show') + dropdownMenu.click() + }, 150) + + dropdownToggle.addEventListener('shown.bs.dropdown', () => { + document.documentElement.click() + expectDropdownToBeOpened() + }) + + dropdownToggle.addEventListener('hidden.bs.dropdown', () => setTimeout(() => { + expect(dropdownToggle).not.toHaveClass('show') + resolve() + })) + + dropdownToggle.click() + }) + }) + + it('should close dropdown (only) by clicking outside the dropdown menu when it has data-attribute `data-bs-auto-close="outside"`', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + + const expectDropdownToBeOpened = () => setTimeout(() => { + expect(dropdownToggle).toHaveClass('show') + document.documentElement.click() + }, 150) + + dropdownToggle.addEventListener('shown.bs.dropdown', () => { + dropdownMenu.click() + expectDropdownToBeOpened() + }) + + dropdownToggle.addEventListener('hidden.bs.dropdown', () => { + expect(dropdownToggle).not.toHaveClass('show') + resolve() + }) + + dropdownToggle.click() + }) + }) + + it('should not close dropdown by clicking inside or outside the dropdown menu when it has data-attribute `data-bs-auto-close="false"`', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + + const expectDropdownToBeOpened = (shouldTriggerClick = true) => setTimeout(() => { + expect(dropdownToggle).toHaveClass('show') + if (shouldTriggerClick) { + document.documentElement.click() + } else { + resolve() + } + + expectDropdownToBeOpened(false) + }, 150) + + dropdownToggle.addEventListener('shown.bs.dropdown', () => { + dropdownMenu.click() + expectDropdownToBeOpened() + }) + + dropdownToggle.click() + }) + }) + + it('should be able to identify clicked dropdown, no matter the markup order', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropdownToggle = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdownMenu = fixtureEl.querySelector('.dropdown-menu') + const spy = spyOn(Dropdown, 'getOrCreateInstance').and.callThrough() + + dropdownToggle.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle) + dropdownMenu.click() + expect(spy).toHaveBeenCalledWith(dropdownToggle) + }) + }) + + describe('jQueryInterface', () => { + it('should create a dropdown', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.dropdown = Dropdown.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.dropdown.call(jQueryMock) + + expect(Dropdown.getInstance(div)).not.toBeNull() + }) + + it('should not re create a dropdown', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const dropdown = new Dropdown(div) + + jQueryMock.fn.dropdown = Dropdown.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.dropdown.call(jQueryMock) + + expect(Dropdown.getInstance(div)).toEqual(dropdown) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.dropdown = Dropdown.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.dropdown.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return dropdown instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const dropdown = new Dropdown(div) + + expect(Dropdown.getInstance(div)).toEqual(dropdown) + expect(Dropdown.getInstance(div)).toBeInstanceOf(Dropdown) + }) + + it('should return null when there is no dropdown instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Dropdown.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return dropdown instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const dropdown = new Dropdown(div) + + expect(Dropdown.getOrCreateInstance(div)).toEqual(dropdown) + expect(Dropdown.getInstance(div)).toEqual(Dropdown.getOrCreateInstance(div, {})) + expect(Dropdown.getOrCreateInstance(div)).toBeInstanceOf(Dropdown) + }) + + it('should return new instance when there is no dropdown instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Dropdown.getInstance(div)).toBeNull() + expect(Dropdown.getOrCreateInstance(div)).toBeInstanceOf(Dropdown) + }) + + it('should return new instance when there is no dropdown instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Dropdown.getInstance(div)).toBeNull() + const dropdown = Dropdown.getOrCreateInstance(div, { + display: 'dynamic' + }) + expect(dropdown).toBeInstanceOf(Dropdown) + + expect(dropdown._config.display).toEqual('dynamic') + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const dropdown = new Dropdown(div, { + display: 'dynamic' + }) + expect(Dropdown.getInstance(div)).toEqual(dropdown) + + const dropdown2 = Dropdown.getOrCreateInstance(div, { + display: 'static' + }) + expect(dropdown).toBeInstanceOf(Dropdown) + expect(dropdown2).toEqual(dropdown) + + expect(dropdown2._config.display).toEqual('dynamic') + }) + }) + + it('should open dropdown when pressing keydown or keyup', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const dropdown = fixtureEl.querySelector('.dropdown') + + const keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + + const keyup = createEvent('keyup') + keyup.key = 'ArrowUp' + + const handleArrowDown = () => { + expect(triggerDropdown).toHaveClass('show') + expect(triggerDropdown.getAttribute('aria-expanded')).toEqual('true') + setTimeout(() => { + dropdown.hide() + keydown.key = 'ArrowUp' + triggerDropdown.dispatchEvent(keyup) + }, 20) + } + + const handleArrowUp = () => { + expect(triggerDropdown).toHaveClass('show') + expect(triggerDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + } + + dropdown.addEventListener('shown.bs.dropdown', event => { + if (event.target.key === 'ArrowDown') { + handleArrowDown() + } else { + handleArrowUp() + } + }) + + triggerDropdown.dispatchEvent(keydown) + }) + }) + + it('should allow `data-bs-toggle="dropdown"` click events to bubble up', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const clickListener = jasmine.createSpy('clickListener') + const delegatedClickListener = jasmine.createSpy('delegatedClickListener') + + btnDropdown.addEventListener('click', clickListener) + document.addEventListener('click', delegatedClickListener) + + btnDropdown.click() + + expect(clickListener).toHaveBeenCalled() + expect(delegatedClickListener).toHaveBeenCalled() + }) + + it('should open the dropdown when clicking the child element inside `data-bs-toggle="dropdown"`', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const btnDropdown = fixtureEl.querySelector('[data-bs-toggle="dropdown"]') + const childElement = fixtureEl.querySelector('#childElement') + + btnDropdown.addEventListener('shown.bs.dropdown', () => setTimeout(() => { + expect(btnDropdown).toHaveClass('show') + expect(btnDropdown.getAttribute('aria-expanded')).toEqual('true') + resolve() + })) + + childElement.click() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/jquery.spec.js b/public/assets/libs/bootstrap/js/tests/unit/jquery.spec.js new file mode 100644 index 0000000..7da39d6 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/jquery.spec.js @@ -0,0 +1,60 @@ +/* eslint-env jquery */ + +import Alert from '../../src/alert' +import Button from '../../src/button' +import Carousel from '../../src/carousel' +import Collapse from '../../src/collapse' +import Dropdown from '../../src/dropdown' +import Modal from '../../src/modal' +import Offcanvas from '../../src/offcanvas' +import Popover from '../../src/popover' +import ScrollSpy from '../../src/scrollspy' +import Tab from '../../src/tab' +import Toast from '../../src/toast' +import Tooltip from '../../src/tooltip' +import { clearFixture, getFixture } from '../helpers/fixture' + +describe('jQuery', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + it('should add all plugins in jQuery', () => { + expect(Alert.jQueryInterface).toEqual(jQuery.fn.alert) + expect(Button.jQueryInterface).toEqual(jQuery.fn.button) + expect(Carousel.jQueryInterface).toEqual(jQuery.fn.carousel) + expect(Collapse.jQueryInterface).toEqual(jQuery.fn.collapse) + expect(Dropdown.jQueryInterface).toEqual(jQuery.fn.dropdown) + expect(Modal.jQueryInterface).toEqual(jQuery.fn.modal) + expect(Offcanvas.jQueryInterface).toEqual(jQuery.fn.offcanvas) + expect(Popover.jQueryInterface).toEqual(jQuery.fn.popover) + expect(ScrollSpy.jQueryInterface).toEqual(jQuery.fn.scrollspy) + expect(Tab.jQueryInterface).toEqual(jQuery.fn.tab) + expect(Toast.jQueryInterface).toEqual(jQuery.fn.toast) + expect(Tooltip.jQueryInterface).toEqual(jQuery.fn.tooltip) + }) + + it('should use jQuery event system', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + $(fixtureEl).find('.alert') + .one('closed.bs.alert', () => { + expect($(fixtureEl).find('.alert')).toHaveSize(0) + resolve() + }) + + $(fixtureEl).find('button').trigger('click') + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/modal.spec.js b/public/assets/libs/bootstrap/js/tests/unit/modal.spec.js new file mode 100644 index 0000000..fdee29e --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/modal.spec.js @@ -0,0 +1,1298 @@ +import Modal from '../../src/modal' +import EventHandler from '../../src/dom/event-handler' +import ScrollBarHelper from '../../src/util/scrollbar' +import { clearBodyAndDocument, clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Modal', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + clearBodyAndDocument() + document.body.classList.remove('modal-open') + + for (const backdrop of document.querySelectorAll('.modal-backdrop')) { + backdrop.remove() + } + }) + + beforeEach(() => { + clearBodyAndDocument() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Modal.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Modal.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Modal.DATA_KEY).toEqual('bs.modal') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modalBySelector = new Modal('.modal') + const modalByElement = new Modal(modalEl) + + expect(modalBySelector._element).toEqual(modalEl) + expect(modalByElement._element).toEqual(modalEl) + }) + }) + + describe('toggle', () => { + it('should call ScrollBarHelper to handle scrollBar on body', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const spyHide = spyOn(ScrollBarHelper.prototype, 'hide').and.callThrough() + const spyReset = spyOn(ScrollBarHelper.prototype, 'reset').and.callThrough() + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(spyHide).toHaveBeenCalled() + modal.toggle() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spyReset).toHaveBeenCalled() + resolve() + }) + + modal.toggle() + }) + }) + }) + + describe('show', () => { + it('should show a modal', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('show.bs.modal', event => { + expect(event).toBeDefined() + }) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toEqual('true') + expect(modalEl.getAttribute('role')).toEqual('dialog') + expect(modalEl.getAttribute('aria-hidden')).toBeNull() + expect(modalEl.style.display).toEqual('block') + expect(document.querySelector('.modal-backdrop')).not.toBeNull() + resolve() + }) + + modal.show() + }) + }) + + it('should show a modal without backdrop', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: false + }) + + modalEl.addEventListener('show.bs.modal', event => { + expect(event).toBeDefined() + }) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toEqual('true') + expect(modalEl.getAttribute('role')).toEqual('dialog') + expect(modalEl.getAttribute('aria-hidden')).toBeNull() + expect(modalEl.style.display).toEqual('block') + expect(document.querySelector('.modal-backdrop')).toBeNull() + resolve() + }) + + modal.show() + }) + }) + + it('should show a modal and append the element', () => { + return new Promise(resolve => { + const modalEl = document.createElement('div') + const id = 'dynamicModal' + + modalEl.setAttribute('id', id) + modalEl.classList.add('modal') + modalEl.innerHTML = '' + + const modal = new Modal(modalEl) + + modalEl.addEventListener('shown.bs.modal', () => { + const dynamicModal = document.getElementById(id) + expect(dynamicModal).not.toBeNull() + dynamicModal.remove() + resolve() + }) + + modal.show() + }) + }) + + it('should do nothing if a modal is shown', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(EventHandler, 'trigger') + modal._isShown = true + + modal.show() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should do nothing if a modal is transitioning', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(EventHandler, 'trigger') + modal._isTransitioning = true + + modal.show() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should not fire shown event when show is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('show.bs.modal', event => { + event.preventDefault() + + const expectedDone = () => { + expect().nothing() + resolve() + } + + setTimeout(expectedDone, 10) + }) + + modalEl.addEventListener('shown.bs.modal', () => { + reject(new Error('shown event triggered')) + }) + + modal.show() + }) + }) + + it('should be shown after the first call to show() has been prevented while fading is enabled ', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + let prevented = false + modalEl.addEventListener('show.bs.modal', event => { + if (!prevented) { + event.preventDefault() + prevented = true + + setTimeout(() => { + modal.show() + }) + } + }) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(prevented).toBeTrue() + expect(modal._isAnimated()).toBeTrue() + resolve() + }) + + modal.show() + }) + }) + it('should set is transitioning if fade class is present', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('show.bs.modal', () => { + setTimeout(() => { + expect(modal._isTransitioning).toBeTrue() + }) + }) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modal._isTransitioning).toBeFalse() + resolve() + }) + + modal.show() + }) + }) + + it('should close modal when a click occurred on data-bs-dismiss="modal" inside modal', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="modal"]') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + btnClose.click() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should close modal when a click occurred on a data-bs-dismiss="modal" with "bs-target" outside of modal element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="modal"]') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + btnClose.click() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should set .modal\'s scroll top to 0', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalEl.scrollTop).toEqual(0) + resolve() + }) + + modal.show() + }) + }) + + it('should set modal body scroll top to 0 if modal body do not exists', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const modalBody = modalEl.querySelector('.modal-body') + const modal = new Modal(modalEl) + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalBody.scrollTop).toEqual(0) + resolve() + }) + + modal.show() + }) + }) + + it('should not trap focus if focus equal to false', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + focus: false + }) + + const spy = spyOn(modal._focustrap, 'activate').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should add listener when escape touch is pressed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + const keydownEscape = createEvent('keydown') + keydownEscape.key = 'Escape' + + modalEl.dispatchEvent(keydownEscape) + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should do nothing when the pressed key is not escape', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide') + + const expectDone = () => { + expect(spy).not.toHaveBeenCalled() + + resolve() + } + + modalEl.addEventListener('shown.bs.modal', () => { + const keydownTab = createEvent('keydown') + keydownTab.key = 'Tab' + + modalEl.dispatchEvent(keydownTab) + setTimeout(expectDone, 30) + }) + + modal.show() + }) + }) + + it('should adjust dialog on resize', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, '_adjustDialog').and.callThrough() + + const expectDone = () => { + expect(spy).toHaveBeenCalled() + + resolve() + } + + modalEl.addEventListener('shown.bs.modal', () => { + const resizeEvent = createEvent('resize') + + window.dispatchEvent(resizeEvent) + setTimeout(expectDone, 10) + }) + + modal.show() + }) + }) + + it('should not close modal when clicking on modal-content', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const shownCallback = () => { + setTimeout(() => { + expect(modal._isShown).toEqual(true) + resolve() + }, 10) + } + + modalEl.addEventListener('shown.bs.modal', () => { + fixtureEl.querySelector('.modal-dialog').click() + fixtureEl.querySelector('.modal-content').click() + shownCallback() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + reject(new Error('Should not hide a modal')) + }) + + modal.show() + }) + }) + + it('should not close modal when clicking outside of modal-content if backdrop = false', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: false + }) + + const shownCallback = () => { + setTimeout(() => { + expect(modal._isShown).toBeTrue() + resolve() + }, 10) + } + + modalEl.addEventListener('shown.bs.modal', () => { + modalEl.click() + shownCallback() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + reject(new Error('Should not hide a modal')) + }) + + modal.show() + }) + }) + + it('should not close modal when clicking outside of modal-content if backdrop = static', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: 'static' + }) + + const shownCallback = () => { + setTimeout(() => { + expect(modal._isShown).toBeTrue() + resolve() + }, 10) + } + + modalEl.addEventListener('shown.bs.modal', () => { + modalEl.click() + shownCallback() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + reject(new Error('Should not hide a modal')) + }) + + modal.show() + }) + }) + it('should close modal when escape key is pressed with keyboard = true and backdrop is static', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: 'static', + keyboard: true + }) + + const shownCallback = () => { + setTimeout(() => { + expect(modal._isShown).toBeFalse() + resolve() + }, 10) + } + + modalEl.addEventListener('shown.bs.modal', () => { + const keydownEscape = createEvent('keydown') + keydownEscape.key = 'Escape' + + modalEl.dispatchEvent(keydownEscape) + shownCallback() + }) + + modal.show() + }) + }) + + it('should not close modal when escape key is pressed with keyboard = false', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + keyboard: false + }) + + const shownCallback = () => { + setTimeout(() => { + expect(modal._isShown).toBeTrue() + resolve() + }, 10) + } + + modalEl.addEventListener('shown.bs.modal', () => { + const keydownEscape = createEvent('keydown') + keydownEscape.key = 'Escape' + + modalEl.dispatchEvent(keydownEscape) + shownCallback() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + reject(new Error('Should not hide a modal')) + }) + + modal.show() + }) + }) + + it('should not overflow when clicking outside of modal-content if backdrop = static', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: 'static' + }) + + modalEl.addEventListener('shown.bs.modal', () => { + modalEl.click() + setTimeout(() => { + expect(modalEl.clientHeight).toEqual(modalEl.scrollHeight) + resolve() + }, 20) + }) + + modal.show() + }) + }) + + it('should not queue multiple callbacks when clicking outside of modal-content and backdrop = static', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl, { + backdrop: 'static' + }) + + modalEl.addEventListener('shown.bs.modal', () => { + const spy = spyOn(modal, '_queueCallback').and.callThrough() + const mouseDown = createEvent('mousedown') + + modalEl.dispatchEvent(mouseDown) + modalEl.click() + modalEl.dispatchEvent(mouseDown) + modalEl.click() + + setTimeout(() => { + expect(spy).toHaveBeenCalledTimes(1) + resolve() + }, 20) + }) + + modal.show() + }) + }) + + it('should trap focus', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(modal._focustrap, 'activate').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + }) + + describe('hide', () => { + it('should hide a modal', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + const backdropSpy = spyOn(modal._backdrop, 'hide').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + modal.hide() + }) + + modalEl.addEventListener('hide.bs.modal', event => { + expect(event).toBeDefined() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toBeNull() + expect(modalEl.getAttribute('role')).toBeNull() + expect(modalEl.getAttribute('aria-hidden')).toEqual('true') + expect(modalEl.style.display).toEqual('none') + expect(backdropSpy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should close modal when clicking outside of modal-content', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const dialogEl = modalEl.querySelector('.modal-dialog') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide') + + modalEl.addEventListener('shown.bs.modal', () => { + const mouseDown = createEvent('mousedown') + + dialogEl.dispatchEvent(mouseDown) + modalEl.click() + expect(spy).not.toHaveBeenCalled() + + modalEl.dispatchEvent(mouseDown) + modalEl.click() + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should not close modal when clicking on an element removed from modal content', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const buttonEl = modalEl.querySelector('.btn') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, 'hide') + buttonEl.addEventListener('click', () => { + buttonEl.remove() + }) + + modalEl.addEventListener('shown.bs.modal', () => { + modalEl.dispatchEvent(createEvent('mousedown')) + buttonEl.click() + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should do nothing is the modal is not shown', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modal.hide() + + expect().nothing() + }) + + it('should do nothing is the modal is transitioning', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modal._isTransitioning = true + modal.hide() + + expect().nothing() + }) + + it('should not hide a modal if hide is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + modalEl.addEventListener('shown.bs.modal', () => { + modal.hide() + }) + + const hideCallback = () => { + setTimeout(() => { + expect(modal._isShown).toBeTrue() + resolve() + }, 10) + } + + modalEl.addEventListener('hide.bs.modal', event => { + event.preventDefault() + hideCallback() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + reject(new Error('should not trigger hidden')) + }) + + modal.show() + }) + }) + + it('should release focus trap', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + const spy = spyOn(modal._focustrap, 'deactivate').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + modal.hide() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + }) + + describe('dispose', () => { + it('should dispose a modal', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + const focustrap = modal._focustrap + const spyDeactivate = spyOn(focustrap, 'deactivate').and.callThrough() + + expect(Modal.getInstance(modalEl)).toEqual(modal) + + const spyOff = spyOn(EventHandler, 'off') + + modal.dispose() + + expect(Modal.getInstance(modalEl)).toBeNull() + expect(spyOff).toHaveBeenCalledTimes(3) + expect(spyDeactivate).toHaveBeenCalled() + }) + }) + + describe('handleUpdate', () => { + it('should call adjust dialog', () => { + fixtureEl.innerHTML = '' + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + + const spy = spyOn(modal, '_adjustDialog') + + modal.handleUpdate() + + expect(spy).toHaveBeenCalled() + }) + }) + + describe('data-api', () => { + it('should toggle modal', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toEqual('true') + expect(modalEl.getAttribute('role')).toEqual('dialog') + expect(modalEl.getAttribute('aria-hidden')).toBeNull() + expect(modalEl.style.display).toEqual('block') + expect(document.querySelector('.modal-backdrop')).not.toBeNull() + setTimeout(() => trigger.click(), 10) + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toBeNull() + expect(modalEl.getAttribute('role')).toBeNull() + expect(modalEl.getAttribute('aria-hidden')).toEqual('true') + expect(modalEl.style.display).toEqual('none') + expect(document.querySelector('.modal-backdrop')).toBeNull() + resolve() + }) + + trigger.click() + }) + }) + + it('should not recreate a new modal', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const modal = new Modal(modalEl) + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + const spy = spyOn(modal, 'show').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + trigger.click() + }) + }) + + it('should prevent default when the trigger is or ', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + expect(modalEl.getAttribute('aria-modal')).toEqual('true') + expect(modalEl.getAttribute('role')).toEqual('dialog') + expect(modalEl.getAttribute('aria-hidden')).toBeNull() + expect(modalEl.style.display).toEqual('block') + expect(document.querySelector('.modal-backdrop')).not.toBeNull() + expect(spy).toHaveBeenCalled() + resolve() + }) + + trigger.click() + }) + }) + + it('should focus the trigger on hide', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + const spy = spyOn(trigger, 'focus') + + modalEl.addEventListener('shown.bs.modal', () => { + const modal = Modal.getInstance(modalEl) + + modal.hide() + }) + + const hideListener = () => { + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 20) + } + + modalEl.addEventListener('hidden.bs.modal', () => { + hideListener() + }) + + trigger.click() + }) + }) + it('should not prevent default when a click occurred on data-bs-dismiss="modal" where tagName is DIFFERENT than or ', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const btnClose = fixtureEl.querySelector('button[data-bs-dismiss="modal"]') + const modal = new Modal(modalEl) + + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + btnClose.click() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + + it('should prevent default when a click occurred on data-bs-dismiss="modal" where tagName is or ', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const btnClose = fixtureEl.querySelector('a[data-bs-dismiss="modal"]') + const modal = new Modal(modalEl) + + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + modalEl.addEventListener('shown.bs.modal', () => { + btnClose.click() + }) + + modalEl.addEventListener('hidden.bs.modal', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + modal.show() + }) + }) + it('should not focus the trigger if the modal is not visible', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + const spy = spyOn(trigger, 'focus') + + modalEl.addEventListener('shown.bs.modal', () => { + const modal = Modal.getInstance(modalEl) + + modal.hide() + }) + + const hideListener = () => { + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + resolve() + }, 20) + } + + modalEl.addEventListener('hidden.bs.modal', () => { + hideListener() + }) + + trigger.click() + }) + }) + it('should not focus the trigger if the modal is not shown', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const modalEl = fixtureEl.querySelector('.modal') + const trigger = fixtureEl.querySelector('[data-bs-toggle="modal"]') + + const spy = spyOn(trigger, 'focus') + + const showListener = () => { + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + resolve() + }, 10) + } + + modalEl.addEventListener('show.bs.modal', event => { + event.preventDefault() + showListener() + }) + + trigger.click() + }) + }) + + it('should call hide first, if another modal is open', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '' + ].join('') + + const trigger2 = fixtureEl.querySelector('button') + const modalEl1 = document.querySelector('#modal1') + const modalEl2 = document.querySelector('#modal2') + const modal1 = new Modal(modalEl1) + + modalEl1.addEventListener('shown.bs.modal', () => { + trigger2.click() + }) + modalEl1.addEventListener('hidden.bs.modal', () => { + expect(Modal.getInstance(modalEl2)).not.toBeNull() + expect(modalEl2).toHaveClass('show') + resolve() + }) + modal1.show() + }) + }) + }) + describe('jQueryInterface', () => { + it('should create a modal', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.modal.call(jQueryMock) + + expect(Modal.getInstance(div)).not.toBeNull() + }) + + it('should create a modal with given config', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.modal.call(jQueryMock, { keyboard: false }) + const spy = spyOn(Modal.prototype, 'constructor') + expect(spy).not.toHaveBeenCalledWith(div, { keyboard: false }) + + const modal = Modal.getInstance(div) + expect(modal).not.toBeNull() + expect(modal._config.keyboard).toBeFalse() + }) + + it('should not re create a modal', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + const modal = new Modal(div) + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.modal.call(jQueryMock) + + expect(Modal.getInstance(div)).toEqual(modal) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.modal.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should call show method', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + const modal = new Modal(div) + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + const spy = spyOn(modal, 'show') + + jQueryMock.fn.modal.call(jQueryMock, 'show') + + expect(spy).toHaveBeenCalled() + }) + + it('should not call show method', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.modal = Modal.jQueryInterface + jQueryMock.elements = [div] + + const spy = spyOn(Modal.prototype, 'show') + + jQueryMock.fn.modal.call(jQueryMock) + + expect(spy).not.toHaveBeenCalled() + }) + }) + + describe('getInstance', () => { + it('should return modal instance', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + const modal = new Modal(div) + + expect(Modal.getInstance(div)).toEqual(modal) + expect(Modal.getInstance(div)).toBeInstanceOf(Modal) + }) + + it('should return null when there is no modal instance', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + + expect(Modal.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return modal instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const modal = new Modal(div) + + expect(Modal.getOrCreateInstance(div)).toEqual(modal) + expect(Modal.getInstance(div)).toEqual(Modal.getOrCreateInstance(div, {})) + expect(Modal.getOrCreateInstance(div)).toBeInstanceOf(Modal) + }) + + it('should return new instance when there is no modal instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Modal.getInstance(div)).toBeNull() + expect(Modal.getOrCreateInstance(div)).toBeInstanceOf(Modal) + }) + + it('should return new instance when there is no modal instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Modal.getInstance(div)).toBeNull() + const modal = Modal.getOrCreateInstance(div, { + backdrop: true + }) + expect(modal).toBeInstanceOf(Modal) + + expect(modal._config.backdrop).toBeTrue() + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const modal = new Modal(div, { + backdrop: true + }) + expect(Modal.getInstance(div)).toEqual(modal) + + const modal2 = Modal.getOrCreateInstance(div, { + backdrop: false + }) + expect(modal).toBeInstanceOf(Modal) + expect(modal2).toEqual(modal) + + expect(modal2._config.backdrop).toBeTrue() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/offcanvas.spec.js b/public/assets/libs/bootstrap/js/tests/unit/offcanvas.spec.js new file mode 100644 index 0000000..da2fb97 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/offcanvas.spec.js @@ -0,0 +1,912 @@ +import Offcanvas from '../../src/offcanvas' +import EventHandler from '../../src/dom/event-handler' +import { clearBodyAndDocument, clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' +import { isVisible } from '../../src/util/index' +import ScrollBarHelper from '../../src/util/scrollbar' + +describe('Offcanvas', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + document.body.classList.remove('offcanvas-open') + clearBodyAndDocument() + }) + + beforeEach(() => { + clearBodyAndDocument() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Offcanvas.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Offcanvas.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Offcanvas.DATA_KEY).toEqual('bs.offcanvas') + }) + }) + + describe('constructor', () => { + it('should call hide when a element with data-bs-dismiss="offcanvas" is clicked', () => { + fixtureEl.innerHTML = [ + '
    ', + ' Close', + '
    ' + ].join('') + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const closeEl = fixtureEl.querySelector('a') + const offCanvas = new Offcanvas(offCanvasEl) + + const spy = spyOn(offCanvas, 'hide') + + closeEl.click() + + expect(offCanvas._config.keyboard).toBeTrue() + expect(spy).toHaveBeenCalled() + }) + + it('should hide if esc is pressed', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' + + const spy = spyOn(offCanvas, 'hide') + + offCanvasEl.dispatchEvent(keyDownEsc) + + expect(spy).toHaveBeenCalled() + }) + + it('should hide if esc is pressed and backdrop is static', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { backdrop: 'static' }) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' + + const spy = spyOn(offCanvas, 'hide') + + offCanvasEl.dispatchEvent(keyDownEsc) + + expect(spy).toHaveBeenCalled() + }) + + it('should not hide if esc is not pressed', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + const keydownTab = createEvent('keydown') + keydownTab.key = 'Tab' + + const spy = spyOn(offCanvas, 'hide') + + offCanvasEl.dispatchEvent(keydownTab) + + expect(spy).not.toHaveBeenCalled() + }) + + it('should not hide if esc is pressed but with keyboard = false', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { keyboard: false }) + const keyDownEsc = createEvent('keydown') + keyDownEsc.key = 'Escape' + + const spy = spyOn(offCanvas, 'hide') + const hidePreventedSpy = jasmine.createSpy('hidePrevented') + offCanvasEl.addEventListener('hidePrevented.bs.offcanvas', hidePreventedSpy) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvas._config.keyboard).toBeFalse() + offCanvasEl.dispatchEvent(keyDownEsc) + + expect(hidePreventedSpy).toHaveBeenCalled() + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should not hide if user clicks on static backdrop', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl, { backdrop: 'static' }) + + const clickEvent = new Event('mousedown', { bubbles: true, cancelable: true }) + const spyClick = spyOn(offCanvas._backdrop._config, 'clickCallback').and.callThrough() + const spyHide = spyOn(offCanvas._backdrop, 'hide').and.callThrough() + const hidePreventedSpy = jasmine.createSpy('hidePrevented') + offCanvasEl.addEventListener('hidePrevented.bs.offcanvas', hidePreventedSpy) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spyClick).toEqual(jasmine.any(Function)) + + offCanvas._backdrop._getElement().dispatchEvent(clickEvent) + expect(hidePreventedSpy).toHaveBeenCalled() + expect(spyHide).not.toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should call `hide` on resize, if element\'s position is not fixed any more', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + + const spy = spyOn(offCanvas, 'hide').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + const resizeEvent = createEvent('resize') + offCanvasEl.style.removeProperty('position') + + window.dispatchEvent(resizeEvent) + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + }) + + describe('config', () => { + it('should have default values', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + expect(offCanvas._config.backdrop).toBeTrue() + expect(offCanvas._backdrop._config.isVisible).toBeTrue() + expect(offCanvas._config.keyboard).toBeTrue() + expect(offCanvas._config.scroll).toBeFalse() + }) + + it('should read data attributes and override default config', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + expect(offCanvas._config.backdrop).toBeFalse() + expect(offCanvas._backdrop._config.isVisible).toBeFalse() + expect(offCanvas._config.keyboard).toBeFalse() + expect(offCanvas._config.scroll).toBeTrue() + }) + + it('given a config object must override data attributes', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { + backdrop: true, + keyboard: true, + scroll: false + }) + expect(offCanvas._config.backdrop).toBeTrue() + expect(offCanvas._config.keyboard).toBeTrue() + expect(offCanvas._config.scroll).toBeFalse() + }) + }) + + describe('options', () => { + it('if scroll is enabled, should allow body to scroll while offcanvas is open', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const spyHide = spyOn(ScrollBarHelper.prototype, 'hide').and.callThrough() + const spyReset = spyOn(ScrollBarHelper.prototype, 'reset').and.callThrough() + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { scroll: true }) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spyHide).not.toHaveBeenCalled() + offCanvas.hide() + }) + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(spyReset).not.toHaveBeenCalled() + resolve() + }) + offCanvas.show() + }) + }) + + it('if scroll is disabled, should call ScrollBarHelper to handle scrollBar on body', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const spyHide = spyOn(ScrollBarHelper.prototype, 'hide').and.callThrough() + const spyReset = spyOn(ScrollBarHelper.prototype, 'reset').and.callThrough() + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { scroll: false }) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spyHide).toHaveBeenCalled() + offCanvas.hide() + }) + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(spyReset).toHaveBeenCalled() + resolve() + }) + offCanvas.show() + }) + }) + + it('should hide a shown element if user click on backdrop', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl, { backdrop: true }) + + const clickEvent = new Event('mousedown', { bubbles: true, cancelable: true }) + const spy = spyOn(offCanvas._backdrop._config, 'clickCallback').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvas._backdrop._config.clickCallback).toEqual(jasmine.any(Function)) + + offCanvas._backdrop._getElement().dispatchEvent(clickEvent) + }) + + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should not trap focus if scroll is allowed', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { + scroll: true, + backdrop: false + }) + + const spy = spyOn(offCanvas._focustrap, 'activate').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should trap focus if scroll is allowed OR backdrop is enabled', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl, { + scroll: true, + backdrop: true + }) + + const spy = spyOn(offCanvas._focustrap, 'activate').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + }) + + describe('toggle', () => { + it('should call show method if show class is not present', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + const spy = spyOn(offCanvas, 'show') + + offCanvas.toggle() + + expect(spy).toHaveBeenCalled() + }) + + it('should call hide method if show class is present', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvasEl).toHaveClass('show') + const spy = spyOn(offCanvas, 'hide') + + offCanvas.toggle() + + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + }) + + describe('show', () => { + it('should add `showing` class during opening and `show` class on end', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + offCanvasEl.addEventListener('show.bs.offcanvas', () => { + expect(offCanvasEl).not.toHaveClass('show') + }) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvasEl).not.toHaveClass('showing') + expect(offCanvasEl).toHaveClass('show') + resolve() + }) + + offCanvas.show() + expect(offCanvasEl).toHaveClass('showing') + }) + }) + + it('should do nothing if already shown', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + offCanvas.show() + + expect(offCanvasEl).toHaveClass('show') + + const spyShow = spyOn(offCanvas._backdrop, 'show').and.callThrough() + const spyTrigger = spyOn(EventHandler, 'trigger').and.callThrough() + offCanvas.show() + + expect(spyTrigger).not.toHaveBeenCalled() + expect(spyShow).not.toHaveBeenCalled() + }) + + it('should show a hidden element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spy = spyOn(offCanvas._backdrop, 'show').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvasEl).toHaveClass('show') + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + + it('should not fire shown when show is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spy = spyOn(offCanvas._backdrop, 'show').and.callThrough() + + const expectEnd = () => { + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + resolve() + }, 10) + } + + offCanvasEl.addEventListener('show.bs.offcanvas', event => { + event.preventDefault() + expectEnd() + }) + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + reject(new Error('should not fire shown event')) + }) + + offCanvas.show() + }) + }) + + it('on window load, should make visible an offcanvas element, if its markup contains class "show"', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const spy = spyOn(Offcanvas.prototype, 'show').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + resolve() + }) + + window.dispatchEvent(createEvent('load')) + + const instance = Offcanvas.getInstance(offCanvasEl) + expect(instance).not.toBeNull() + expect(spy).toHaveBeenCalled() + }) + }) + + it('should trap focus', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + const spy = spyOn(offCanvas._focustrap, 'activate').and.callThrough() + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.show() + }) + }) + }) + + describe('hide', () => { + it('should add `hiding` class during closing and remover `show` & `hiding` classes on end', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + const offCanvasEl = fixtureEl.querySelector('.offcanvas') + const offCanvas = new Offcanvas(offCanvasEl) + + offCanvasEl.addEventListener('hide.bs.offcanvas', () => { + expect(offCanvasEl).not.toHaveClass('showing') + expect(offCanvasEl).toHaveClass('show') + }) + + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(offCanvasEl).not.toHaveClass('hiding') + expect(offCanvasEl).not.toHaveClass('show') + resolve() + }) + + offCanvas.show() + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + offCanvas.hide() + expect(offCanvasEl).not.toHaveClass('showing') + expect(offCanvasEl).toHaveClass('hiding') + }) + }) + }) + + it('should do nothing if already shown', () => { + fixtureEl.innerHTML = '
    ' + + const spyTrigger = spyOn(EventHandler, 'trigger').and.callThrough() + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spyHide = spyOn(offCanvas._backdrop, 'hide').and.callThrough() + + offCanvas.hide() + expect(spyHide).not.toHaveBeenCalled() + expect(spyTrigger).not.toHaveBeenCalled() + }) + + it('should hide a shown element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spy = spyOn(offCanvas._backdrop, 'hide').and.callThrough() + offCanvas.show() + + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(offCanvasEl).not.toHaveClass('show') + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.hide() + }) + }) + + it('should not fire hidden when hide is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spy = spyOn(offCanvas._backdrop, 'hide').and.callThrough() + + offCanvas.show() + + const expectEnd = () => { + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + resolve() + }, 10) + } + + offCanvasEl.addEventListener('hide.bs.offcanvas', event => { + event.preventDefault() + expectEnd() + }) + + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + reject(new Error('should not fire hidden event')) + }) + + offCanvas.hide() + }) + }) + + it('should release focus trap', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const spy = spyOn(offCanvas._focustrap, 'deactivate').and.callThrough() + offCanvas.show() + + offCanvasEl.addEventListener('hidden.bs.offcanvas', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + offCanvas.hide() + }) + }) + }) + + describe('dispose', () => { + it('should dispose an offcanvas', () => { + fixtureEl.innerHTML = '
    ' + + const offCanvasEl = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(offCanvasEl) + const backdrop = offCanvas._backdrop + const spyDispose = spyOn(backdrop, 'dispose').and.callThrough() + const focustrap = offCanvas._focustrap + const spyDeactivate = spyOn(focustrap, 'deactivate').and.callThrough() + + expect(Offcanvas.getInstance(offCanvasEl)).toEqual(offCanvas) + + offCanvas.dispose() + + expect(spyDispose).toHaveBeenCalled() + expect(offCanvas._backdrop).toBeNull() + expect(spyDeactivate).toHaveBeenCalled() + expect(offCanvas._focustrap).toBeNull() + expect(Offcanvas.getInstance(offCanvasEl)).toBeNull() + }) + }) + + describe('data-api', () => { + it('should not prevent event for input', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const target = fixtureEl.querySelector('input') + const offCanvasEl = fixtureEl.querySelector('#offcanvasdiv1') + + offCanvasEl.addEventListener('shown.bs.offcanvas', () => { + expect(offCanvasEl).toHaveClass('show') + expect(target.checked).toBeTrue() + resolve() + }) + + target.click() + }) + }) + + it('should not call toggle on disabled elements', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const target = fixtureEl.querySelector('a') + + const spy = spyOn(Offcanvas.prototype, 'toggle') + + target.click() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should call hide first, if another offcanvas is open', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const trigger2 = fixtureEl.querySelector('#btn2') + const offcanvasEl1 = document.querySelector('#offcanvas1') + const offcanvasEl2 = document.querySelector('#offcanvas2') + const offcanvas1 = new Offcanvas(offcanvasEl1) + + offcanvasEl1.addEventListener('shown.bs.offcanvas', () => { + trigger2.click() + }) + offcanvasEl1.addEventListener('hidden.bs.offcanvas', () => { + expect(Offcanvas.getInstance(offcanvasEl2)).not.toBeNull() + resolve() + }) + offcanvas1.show() + }) + }) + + it('should focus on trigger element after closing offcanvas', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('#btn') + const offcanvasEl = fixtureEl.querySelector('#offcanvas') + const offcanvas = new Offcanvas(offcanvasEl) + const spy = spyOn(trigger, 'focus') + + offcanvasEl.addEventListener('shown.bs.offcanvas', () => { + offcanvas.hide() + }) + offcanvasEl.addEventListener('hidden.bs.offcanvas', () => { + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 5) + }) + + trigger.click() + }) + }) + + it('should not focus on trigger element after closing offcanvas, if it is not visible', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const trigger = fixtureEl.querySelector('#btn') + const offcanvasEl = fixtureEl.querySelector('#offcanvas') + const offcanvas = new Offcanvas(offcanvasEl) + const spy = spyOn(trigger, 'focus') + + offcanvasEl.addEventListener('shown.bs.offcanvas', () => { + trigger.style.display = 'none' + offcanvas.hide() + }) + offcanvasEl.addEventListener('hidden.bs.offcanvas', () => { + setTimeout(() => { + expect(isVisible(trigger)).toBeFalse() + expect(spy).not.toHaveBeenCalled() + resolve() + }, 5) + }) + + trigger.click() + }) + }) + }) + + describe('jQueryInterface', () => { + it('should create an offcanvas', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.offcanvas.call(jQueryMock) + + expect(Offcanvas.getInstance(div)).not.toBeNull() + }) + + it('should not re create an offcanvas', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(div) + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.offcanvas.call(jQueryMock) + + expect(Offcanvas.getInstance(div)).toEqual(offCanvas) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error on protected method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = '_getConfig' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error if method "constructor" is being called', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'constructor' + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.offcanvas.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should call offcanvas method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + const spy = spyOn(Offcanvas.prototype, 'show') + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.offcanvas.call(jQueryMock, 'show') + expect(spy).toHaveBeenCalled() + }) + + it('should create a offcanvas with given config', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.offcanvas = Offcanvas.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.offcanvas.call(jQueryMock, { scroll: true }) + + const offcanvas = Offcanvas.getInstance(div) + expect(offcanvas).not.toBeNull() + expect(offcanvas._config.scroll).toBeTrue() + }) + }) + + describe('getInstance', () => { + it('should return offcanvas instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const offCanvas = new Offcanvas(div) + + expect(Offcanvas.getInstance(div)).toEqual(offCanvas) + expect(Offcanvas.getInstance(div)).toBeInstanceOf(Offcanvas) + }) + + it('should return null when there is no offcanvas instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Offcanvas.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return offcanvas instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const offcanvas = new Offcanvas(div) + + expect(Offcanvas.getOrCreateInstance(div)).toEqual(offcanvas) + expect(Offcanvas.getInstance(div)).toEqual(Offcanvas.getOrCreateInstance(div, {})) + expect(Offcanvas.getOrCreateInstance(div)).toBeInstanceOf(Offcanvas) + }) + + it('should return new instance when there is no Offcanvas instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Offcanvas.getInstance(div)).toBeNull() + expect(Offcanvas.getOrCreateInstance(div)).toBeInstanceOf(Offcanvas) + }) + + it('should return new instance when there is no offcanvas instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Offcanvas.getInstance(div)).toBeNull() + const offcanvas = Offcanvas.getOrCreateInstance(div, { + scroll: true + }) + expect(offcanvas).toBeInstanceOf(Offcanvas) + + expect(offcanvas._config.scroll).toBeTrue() + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const offcanvas = new Offcanvas(div, { + scroll: true + }) + expect(Offcanvas.getInstance(div)).toEqual(offcanvas) + + const offcanvas2 = Offcanvas.getOrCreateInstance(div, { + scroll: false + }) + expect(offcanvas).toBeInstanceOf(Offcanvas) + expect(offcanvas2).toEqual(offcanvas) + + expect(offcanvas2._config.scroll).toBeTrue() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/popover.spec.js b/public/assets/libs/bootstrap/js/tests/unit/popover.spec.js new file mode 100644 index 0000000..baf691c --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/popover.spec.js @@ -0,0 +1,413 @@ +import Popover from '../../src/popover' +import EventHandler from '../../src/dom/event-handler' +import { clearFixture, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Popover', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + + const popoverList = document.querySelectorAll('.popover') + + for (const popoverEl of popoverList) { + popoverEl.remove() + } + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Popover.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Popover.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('NAME', () => { + it('should return plugin name', () => { + expect(Popover.NAME).toEqual(jasmine.any(String)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Popover.DATA_KEY).toEqual('bs.popover') + }) + }) + + describe('EVENT_KEY', () => { + it('should return plugin event key', () => { + expect(Popover.EVENT_KEY).toEqual('.bs.popover') + }) + }) + + describe('DefaultType', () => { + it('should return plugin default type', () => { + expect(Popover.DefaultType).toEqual(jasmine.any(Object)) + }) + }) + + describe('show', () => { + it('should show a popover', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + popoverEl.addEventListener('shown.bs.popover', () => { + expect(document.querySelector('.popover')).not.toBeNull() + resolve() + }) + + popover.show() + }) + }) + + it('should set title and content from functions', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl, { + title: () => 'Bootstrap', + content: () => 'loves writing tests (╯°□°)╯︵ ┻━┻' + }) + + popoverEl.addEventListener('shown.bs.popover', () => { + const popoverDisplayed = document.querySelector('.popover') + + expect(popoverDisplayed).not.toBeNull() + expect(popoverDisplayed.querySelector('.popover-header').textContent).toEqual('Bootstrap') + expect(popoverDisplayed.querySelector('.popover-body').textContent).toEqual('loves writing tests (╯°□°)╯︵ ┻━┻') + resolve() + }) + + popover.show() + }) + }) + + it('should show a popover with just content without having header', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'Nice link' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl, { + content: 'Some beautiful content :)' + }) + + popoverEl.addEventListener('shown.bs.popover', () => { + const popoverDisplayed = document.querySelector('.popover') + + expect(popoverDisplayed).not.toBeNull() + expect(popoverDisplayed.querySelector('.popover-header')).toBeNull() + expect(popoverDisplayed.querySelector('.popover-body').textContent).toEqual('Some beautiful content :)') + resolve() + }) + + popover.show() + }) + }) + + it('should show a popover with just title without having body', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'Nice link' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl, { + title: 'Title which does not require content' + }) + + popoverEl.addEventListener('shown.bs.popover', () => { + const popoverDisplayed = document.querySelector('.popover') + + expect(popoverDisplayed).not.toBeNull() + expect(popoverDisplayed.querySelector('.popover-body')).toBeNull() + expect(popoverDisplayed.querySelector('.popover-header').textContent).toEqual('Title which does not require content') + resolve() + }) + + popover.show() + }) + }) + + it('should show a popover with just title without having body using data-attribute to get config', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'Nice link' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + popoverEl.addEventListener('shown.bs.popover', () => { + const popoverDisplayed = document.querySelector('.popover') + + expect(popoverDisplayed).not.toBeNull() + expect(popoverDisplayed.querySelector('.popover-body')).toBeNull() + expect(popoverDisplayed.querySelector('.popover-header').textContent).toEqual('Title which does not require content') + resolve() + }) + + popover.show() + }) + }) + + it('should NOT show a popover without `title` and `content`', () => { + fixtureEl.innerHTML = 'Nice link' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl, { animation: false }) + const spy = spyOn(EventHandler, 'trigger').and.callThrough() + + popover.show() + + expect(spy).not.toHaveBeenCalledWith(popoverEl, Popover.eventName('show')) + expect(document.querySelector('.popover')).toBeNull() + }) + + it('"setContent" should keep the initial template', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + popover.setContent({ '.tooltip-inner': 'foo' }) + const tip = popover._getTipElement() + + expect(tip).toHaveClass('popover') + expect(tip).toHaveClass('bs-popover-auto') + expect(tip.querySelector('.popover-arrow')).not.toBeNull() + expect(tip.querySelector('.popover-header')).not.toBeNull() + expect(tip.querySelector('.popover-body')).not.toBeNull() + }) + + it('should call setContent once', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl, { + content: 'Popover content' + }) + expect(popover._templateFactory).toBeNull() + let spy = null + let times = 1 + + popoverEl.addEventListener('hidden.bs.popover', () => { + popover.show() + }) + + popoverEl.addEventListener('shown.bs.popover', () => { + spy = spy || spyOn(popover._templateFactory, 'constructor').and.callThrough() + const popoverDisplayed = document.querySelector('.popover') + + expect(popoverDisplayed).not.toBeNull() + expect(popoverDisplayed.querySelector('.popover-body').textContent).toEqual('Popover content') + expect(spy).toHaveBeenCalledTimes(0) + if (times > 1) { + resolve() + } + + times++ + popover.hide() + }) + popover.show() + }) + }) + + it('should show a popover with provided custom class', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + popoverEl.addEventListener('shown.bs.popover', () => { + const tip = document.querySelector('.popover') + expect(tip).not.toBeNull() + expect(tip).toHaveClass('custom-class') + resolve() + }) + + popover.show() + }) + }) + }) + + describe('hide', () => { + it('should hide a popover', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + popoverEl.addEventListener('shown.bs.popover', () => { + popover.hide() + }) + + popoverEl.addEventListener('hidden.bs.popover', () => { + expect(document.querySelector('.popover')).toBeNull() + resolve() + }) + + popover.show() + }) + }) + }) + + describe('jQueryInterface', () => { + it('should create a popover', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + + jQueryMock.fn.popover = Popover.jQueryInterface + jQueryMock.elements = [popoverEl] + + jQueryMock.fn.popover.call(jQueryMock) + + expect(Popover.getInstance(popoverEl)).not.toBeNull() + }) + + it('should create a popover with a config object', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + + jQueryMock.fn.popover = Popover.jQueryInterface + jQueryMock.elements = [popoverEl] + + jQueryMock.fn.popover.call(jQueryMock, { + content: 'Popover content' + }) + + expect(Popover.getInstance(popoverEl)).not.toBeNull() + }) + + it('should not re create a popover', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + jQueryMock.fn.popover = Popover.jQueryInterface + jQueryMock.elements = [popoverEl] + + jQueryMock.fn.popover.call(jQueryMock) + + expect(Popover.getInstance(popoverEl)).toEqual(popover) + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const action = 'undefinedMethod' + + jQueryMock.fn.popover = Popover.jQueryInterface + jQueryMock.elements = [popoverEl] + + expect(() => { + jQueryMock.fn.popover.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should should call show method', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + jQueryMock.fn.popover = Popover.jQueryInterface + jQueryMock.elements = [popoverEl] + + const spy = spyOn(popover, 'show') + + jQueryMock.fn.popover.call(jQueryMock, 'show') + + expect(spy).toHaveBeenCalled() + }) + }) + + describe('getInstance', () => { + it('should return popover instance', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + const popover = new Popover(popoverEl) + + expect(Popover.getInstance(popoverEl)).toEqual(popover) + expect(Popover.getInstance(popoverEl)).toBeInstanceOf(Popover) + }) + + it('should return null when there is no popover instance', () => { + fixtureEl.innerHTML = 'BS twitter' + + const popoverEl = fixtureEl.querySelector('a') + + expect(Popover.getInstance(popoverEl)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return popover instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const popover = new Popover(div) + + expect(Popover.getOrCreateInstance(div)).toEqual(popover) + expect(Popover.getInstance(div)).toEqual(Popover.getOrCreateInstance(div, {})) + expect(Popover.getOrCreateInstance(div)).toBeInstanceOf(Popover) + }) + + it('should return new instance when there is no popover instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Popover.getInstance(div)).toBeNull() + expect(Popover.getOrCreateInstance(div)).toBeInstanceOf(Popover) + }) + + it('should return new instance when there is no popover instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Popover.getInstance(div)).toBeNull() + const popover = Popover.getOrCreateInstance(div, { + placement: 'top' + }) + expect(popover).toBeInstanceOf(Popover) + + expect(popover._config.placement).toEqual('top') + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const popover = new Popover(div, { + placement: 'top' + }) + expect(Popover.getInstance(div)).toEqual(popover) + + const popover2 = Popover.getOrCreateInstance(div, { + placement: 'bottom' + }) + expect(popover).toBeInstanceOf(Popover) + expect(popover2).toEqual(popover) + + expect(popover2._config.placement).toEqual('top') + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/scrollspy.spec.js b/public/assets/libs/bootstrap/js/tests/unit/scrollspy.spec.js new file mode 100644 index 0000000..c7951e6 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/scrollspy.spec.js @@ -0,0 +1,946 @@ +import ScrollSpy from '../../src/scrollspy' + +/** Test helpers */ +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' +import EventHandler from '../../src/dom/event-handler' + +describe('ScrollSpy', () => { + let fixtureEl + + const getElementScrollSpy = element => element.scrollTo ? + spyOn(element, 'scrollTo').and.callThrough() : + spyOnProperty(element, 'scrollTop', 'set').and.callThrough() + + const scrollTo = (el, height) => { + el.scrollTop = height + } + + const onScrollStop = (callback, element, timeout = 30) => { + let handle = null + const onScroll = function () { + if (handle) { + window.clearTimeout(handle) + } + + handle = setTimeout(() => { + element.removeEventListener('scroll', onScroll) + callback() + }, timeout + 1) + } + + element.addEventListener('scroll', onScroll) + } + + const getDummyFixture = () => { + return [ + '', + '
    ', + '
    div 1
    ', + '
    ' + ].join('') + } + + const testElementIsActiveAfterScroll = ({ elementSelector, targetSelector, contentEl, scrollSpy, cb }) => { + const element = fixtureEl.querySelector(elementSelector) + const target = fixtureEl.querySelector(targetSelector) + // add top padding to fix Chrome on Android failures + const paddingTop = 0 + const parentOffset = getComputedStyle(contentEl).getPropertyValue('position') === 'relative' ? 0 : contentEl.offsetTop + const scrollHeight = (target.offsetTop - parentOffset) + paddingTop + + contentEl.addEventListener('activate.bs.scrollspy', event => { + if (scrollSpy._activeTarget !== element) { + return + } + + expect(element).toHaveClass('active') + expect(scrollSpy._activeTarget).toEqual(element) + expect(event.relatedTarget).toEqual(element) + cb() + }) + + setTimeout(() => { // in case we scroll something before the test + scrollTo(contentEl, scrollHeight) + }, 100) + } + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(ScrollSpy.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(ScrollSpy.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(ScrollSpy.DATA_KEY).toEqual('bs.scrollspy') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = getDummyFixture() + + const sSpyEl = fixtureEl.querySelector('.content') + const sSpyBySelector = new ScrollSpy('.content') + const sSpyByElement = new ScrollSpy(sSpyEl) + + expect(sSpyBySelector._element).toEqual(sSpyEl) + expect(sSpyByElement._element).toEqual(sSpyEl) + }) + + it('should null, if element is not scrollable', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test
    ', + '
    ' + ].join('') + + const scrollSpy = new ScrollSpy(fixtureEl.querySelector('#content'), { + target: '#navigation' + }) + + expect(scrollSpy._observer.root).toBeNull() + expect(scrollSpy._rootElement).toBeNull() + }) + + it('should respect threshold option', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + ' ', + '
    ' + ].join('') + + const scrollSpy = new ScrollSpy('#content', { + target: '#navigation', + threshold: [1] + }) + + expect(scrollSpy._observer.thresholds).toEqual([1]) + }) + + it('should respect threshold option markup', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + ' ', + '
    ' + ].join('') + + const scrollSpy = new ScrollSpy('#content', { + target: '#navigation' + }) + + // See https://stackoverflow.com/a/45592926 + const expectToBeCloseToArray = (actual, expected) => { + expect(actual.length).toBe(expected.length) + for (const x of actual) { + const i = actual.indexOf(x) + expect(x).withContext(`[${i}]`).toBeCloseTo(expected[i]) + } + } + + expectToBeCloseToArray(scrollSpy._observer.thresholds, [0, 0.2, 1]) + }) + + it('should not take count to not visible sections', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test
    ', + ' ', + ' ', + '
    ' + ].join('') + + const scrollSpy = new ScrollSpy(fixtureEl.querySelector('#content'), { + target: '#navigation' + }) + + expect(scrollSpy._observableSections.size).toBe(1) + expect(scrollSpy._targetLinks.size).toBe(1) + }) + + it('should not process element without target', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test
    ', + '
    test2
    ', + '
    ' + ].join('') + + const scrollSpy = new ScrollSpy(fixtureEl.querySelector('#content'), { + target: '#navigation' + }) + + expect(scrollSpy._targetLinks).toHaveSize(2) + }) + + it('should only switch "active" class on current target', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    Overview
    ', + '
    Detail
    ', + '
    ', + '
    ' + ].join('') + + const scrollSpyEl = fixtureEl.querySelector('#scrollspy-example') + const rootEl = fixtureEl.querySelector('#root') + const scrollSpy = new ScrollSpy(scrollSpyEl, { + target: 'ss-target' + }) + + const spy = spyOn(scrollSpy, '_process').and.callThrough() + + onScrollStop(() => { + expect(rootEl).toHaveClass('active') + expect(spy).toHaveBeenCalled() + resolve() + }, scrollSpyEl) + + scrollTo(scrollSpyEl, 350) + }) + }) + + it('should not process data if `activeTarget` is same as given target', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    div 2
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(contentEl, { + offset: 0, + target: '.navbar' + }) + + const triggerSpy = spyOn(EventHandler, 'trigger').and.callThrough() + + scrollSpy._activeTarget = fixtureEl.querySelector('#a-1') + testElementIsActiveAfterScroll({ + elementSelector: '#a-1', + targetSelector: '#div-1', + contentEl, + scrollSpy, + cb: reject + }) + + setTimeout(() => { + expect(triggerSpy).not.toHaveBeenCalled() + resolve() + }, 100) + }) + }) + + it('should only switch "active" class on current target specified w element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    Overview
    ', + '
    Detail
    ', + '
    ', + '
    ' + ].join('') + + const scrollSpyEl = fixtureEl.querySelector('#scrollspy-example') + const rootEl = fixtureEl.querySelector('#root') + const scrollSpy = new ScrollSpy(scrollSpyEl, { + target: fixtureEl.querySelector('#ss-target') + }) + + const spy = spyOn(scrollSpy, '_process').and.callThrough() + + onScrollStop(() => { + expect(rootEl).toHaveClass('active') + expect(scrollSpy._activeTarget).toEqual(fixtureEl.querySelector('[href="#detail"]')) + expect(spy).toHaveBeenCalled() + resolve() + }, scrollSpyEl) + + scrollTo(scrollSpyEl, 350) + }) + }) + + it('should add the active class to the correct element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    div 2
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(contentEl, { + offset: 0, + target: '.navbar' + }) + + testElementIsActiveAfterScroll({ + elementSelector: '#a-1', + targetSelector: '#div-1', + contentEl, + scrollSpy, + cb() { + testElementIsActiveAfterScroll({ + elementSelector: '#a-2', + targetSelector: '#div-2', + contentEl, + scrollSpy, + cb: resolve + }) + } + }) + }) + }) + + it('should add to nav the active class to the correct element (nav markup)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    div 2
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(contentEl, { + offset: 0, + target: '.navbar' + }) + + testElementIsActiveAfterScroll({ + elementSelector: '#a-1', + targetSelector: '#div-1', + contentEl, + scrollSpy, + cb() { + testElementIsActiveAfterScroll({ + elementSelector: '#a-2', + targetSelector: '#div-2', + contentEl, + scrollSpy, + cb: resolve + }) + } + }) + }) + }) + + it('should add to list-group, the active class to the correct element (list-group markup)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    div 2
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(contentEl, { + offset: 0, + target: '.navbar' + }) + + testElementIsActiveAfterScroll({ + elementSelector: '#a-1', + targetSelector: '#div-1', + contentEl, + scrollSpy, + cb() { + testElementIsActiveAfterScroll({ + elementSelector: '#a-2', + targetSelector: '#div-2', + contentEl, + scrollSpy, + cb: resolve + }) + } + }) + }) + }) + + it('should clear selection if above the first section', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '
    ', + '
    ', + '
    text
    ', + '
    text
    ', + '
    text
    ', + '
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('#content') + const scrollSpy = new ScrollSpy(contentEl, { + target: '#navigation', + offset: contentEl.offsetTop + }) + const spy = spyOn(scrollSpy, '_process').and.callThrough() + + onScrollStop(() => { + const active = () => fixtureEl.querySelector('.active') + expect(spy).toHaveBeenCalled() + + expect(fixtureEl.querySelectorAll('.active')).toHaveSize(1) + expect(active().getAttribute('id')).toEqual('two-link') + onScrollStop(() => { + expect(active()).toBeNull() + resolve() + }, contentEl) + scrollTo(contentEl, 0) + }, contentEl) + + scrollTo(contentEl, 200) + }) + }) + + it('should not clear selection if above the first section and first section is at the top', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '', + '
    ', + '
    test
    ', + '
    test
    ', + '
    test
    ', + '
    test
    ', + '
    ' + ].join('') + + const negativeHeight = 0 + const startOfSectionTwo = 101 + const contentEl = fixtureEl.querySelector('#content') + // eslint-disable-next-line no-unused-vars + const scrollSpy = new ScrollSpy(contentEl, { + target: '#navigation', + rootMargin: '0px 0px -50%' + }) + + onScrollStop(() => { + const activeId = () => fixtureEl.querySelector('.active').getAttribute('id') + + expect(fixtureEl.querySelectorAll('.active')).toHaveSize(1) + expect(activeId()).toEqual('two-link') + scrollTo(contentEl, negativeHeight) + + onScrollStop(() => { + expect(fixtureEl.querySelectorAll('.active')).toHaveSize(1) + expect(activeId()).toEqual('one-link') + resolve() + }, contentEl) + + scrollTo(contentEl, 0) + }, contentEl) + + scrollTo(contentEl, startOfSectionTwo) + }) + }) + + it('should correctly select navigation element on backward scrolling when each target section height is 100%', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    div 2
    ', + '
    div 3
    ', + '
    div 4
    ', + '
    div 5
    ', + '
    ' + ].join('') + + const contentEl = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(contentEl, { + offset: 0, + target: '.navbar' + }) + + scrollTo(contentEl, 0) + testElementIsActiveAfterScroll({ + elementSelector: '#li-100-5', + targetSelector: '#div-100-5', + contentEl, + scrollSpy, + cb() { + scrollTo(contentEl, 0) + testElementIsActiveAfterScroll({ + elementSelector: '#li-100-2', + targetSelector: '#div-100-2', + contentEl, + scrollSpy, + cb() { + scrollTo(contentEl, 0) + testElementIsActiveAfterScroll({ + elementSelector: '#li-100-3', + targetSelector: '#div-100-3', + contentEl, + scrollSpy, + cb() { + scrollTo(contentEl, 0) + testElementIsActiveAfterScroll({ + elementSelector: '#li-100-2', + targetSelector: '#div-100-2', + contentEl, + scrollSpy, + cb() { + scrollTo(contentEl, 0) + testElementIsActiveAfterScroll({ + elementSelector: '#li-100-1', + targetSelector: '#div-100-1', + contentEl, + scrollSpy, + cb: resolve + }) + } + }) + } + }) + } + }) + } + }) + }) + }) + }) + + describe('refresh', () => { + it('should disconnect existing observer', () => { + fixtureEl.innerHTML = getDummyFixture() + + const el = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(el) + + const spy = spyOn(scrollSpy._observer, 'disconnect') + + scrollSpy.refresh() + + expect(spy).toHaveBeenCalled() + }) + }) + + describe('dispose', () => { + it('should dispose a scrollspy', () => { + fixtureEl.innerHTML = getDummyFixture() + + const el = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(el) + + expect(ScrollSpy.getInstance(el)).not.toBeNull() + + scrollSpy.dispose() + + expect(ScrollSpy.getInstance(el)).toBeNull() + }) + }) + + describe('jQueryInterface', () => { + it('should create a scrollspy', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.scrollspy.call(jQueryMock, { target: '#navBar' }) + + expect(ScrollSpy.getInstance(div)).not.toBeNull() + }) + + it('should create a scrollspy with given config', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.scrollspy.call(jQueryMock, { rootMargin: '100px' }) + const spy = spyOn(ScrollSpy.prototype, 'constructor') + expect(spy).not.toHaveBeenCalledWith(div, { rootMargin: '100px' }) + + const scrollspy = ScrollSpy.getInstance(div) + expect(scrollspy).not.toBeNull() + expect(scrollspy._config.rootMargin).toEqual('100px') + }) + + it('should not re create a scrollspy', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(div) + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.scrollspy.call(jQueryMock) + + expect(ScrollSpy.getInstance(div)).toEqual(scrollSpy) + }) + + it('should call a scrollspy method', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(div) + + const spy = spyOn(scrollSpy, 'refresh') + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.scrollspy.call(jQueryMock, 'refresh') + + expect(ScrollSpy.getInstance(div)).toEqual(scrollSpy) + expect(spy).toHaveBeenCalled() + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const action = 'undefinedMethod' + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.scrollspy.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error on protected method', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const action = '_getConfig' + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.scrollspy.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + + it('should throw error if method "constructor" is being called', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const action = 'constructor' + + jQueryMock.fn.scrollspy = ScrollSpy.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.scrollspy.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return scrollspy instance', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const scrollSpy = new ScrollSpy(div, { target: fixtureEl.querySelector('#navBar') }) + + expect(ScrollSpy.getInstance(div)).toEqual(scrollSpy) + expect(ScrollSpy.getInstance(div)).toBeInstanceOf(ScrollSpy) + }) + + it('should return null if there is no instance', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + expect(ScrollSpy.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return scrollspy instance', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const scrollspy = new ScrollSpy(div) + + expect(ScrollSpy.getOrCreateInstance(div)).toEqual(scrollspy) + expect(ScrollSpy.getInstance(div)).toEqual(ScrollSpy.getOrCreateInstance(div, {})) + expect(ScrollSpy.getOrCreateInstance(div)).toBeInstanceOf(ScrollSpy) + }) + + it('should return new instance when there is no scrollspy instance', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + + expect(ScrollSpy.getInstance(div)).toBeNull() + expect(ScrollSpy.getOrCreateInstance(div)).toBeInstanceOf(ScrollSpy) + }) + + it('should return new instance when there is no scrollspy instance with given configuration', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + + expect(ScrollSpy.getInstance(div)).toBeNull() + const scrollspy = ScrollSpy.getOrCreateInstance(div, { + offset: 1 + }) + expect(scrollspy).toBeInstanceOf(ScrollSpy) + + expect(scrollspy._config.offset).toEqual(1) + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const scrollspy = new ScrollSpy(div, { + offset: 1 + }) + expect(ScrollSpy.getInstance(div)).toEqual(scrollspy) + + const scrollspy2 = ScrollSpy.getOrCreateInstance(div, { + offset: 2 + }) + expect(scrollspy).toBeInstanceOf(ScrollSpy) + expect(scrollspy2).toEqual(scrollspy) + + expect(scrollspy2._config.offset).toEqual(1) + }) + }) + + describe('event handler', () => { + it('should create scrollspy on window load event', () => { + fixtureEl.innerHTML = [ + '' + + '
    ' + ].join('') + + const scrollSpyEl = fixtureEl.querySelector('#wrapper') + + window.dispatchEvent(createEvent('load')) + + expect(ScrollSpy.getInstance(scrollSpyEl)).not.toBeNull() + }) + }) + + describe('SmoothScroll', () => { + it('should not enable smoothScroll', () => { + fixtureEl.innerHTML = getDummyFixture() + const offSpy = spyOn(EventHandler, 'off').and.callThrough() + const onSpy = spyOn(EventHandler, 'on').and.callThrough() + + const div = fixtureEl.querySelector('.content') + const target = fixtureEl.querySelector('#navBar') + // eslint-disable-next-line no-new + new ScrollSpy(div, { + offset: 1 + }) + + expect(offSpy).not.toHaveBeenCalledWith(target, 'click.bs.scrollspy') + expect(onSpy).not.toHaveBeenCalledWith(target, 'click.bs.scrollspy') + }) + + it('should enable smoothScroll', () => { + fixtureEl.innerHTML = getDummyFixture() + const offSpy = spyOn(EventHandler, 'off').and.callThrough() + const onSpy = spyOn(EventHandler, 'on').and.callThrough() + + const div = fixtureEl.querySelector('.content') + const target = fixtureEl.querySelector('#navBar') + // eslint-disable-next-line no-new + new ScrollSpy(div, { + offset: 1, + smoothScroll: true + }) + + expect(offSpy).toHaveBeenCalledWith(target, 'click.bs.scrollspy') + expect(onSpy).toHaveBeenCalledWith(target, 'click.bs.scrollspy', '[href]', jasmine.any(Function)) + }) + + it('should not smoothScroll to element if it not handles a scrollspy section', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    div 1
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('.content') + // eslint-disable-next-line no-new + new ScrollSpy(div, { + offset: 1, + smoothScroll: true + }) + + const clickSpy = getElementScrollSpy(div) + + fixtureEl.querySelector('#anchor-2').click() + expect(clickSpy).not.toHaveBeenCalled() + }) + + it('should call `scrollTop` if element doesn\'t not support `scrollTo`', () => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const link = fixtureEl.querySelector('[href="#div-jsm-1"]') + delete div.scrollTo + const clickSpy = getElementScrollSpy(div) + // eslint-disable-next-line no-new + new ScrollSpy(div, { + offset: 1, + smoothScroll: true + }) + + link.click() + expect(clickSpy).toHaveBeenCalled() + }) + + it('should smoothScroll to the proper observable element on anchor click', done => { + fixtureEl.innerHTML = getDummyFixture() + + const div = fixtureEl.querySelector('.content') + const link = fixtureEl.querySelector('[href="#div-jsm-1"]') + const observable = fixtureEl.querySelector('#div-jsm-1') + const clickSpy = getElementScrollSpy(div) + // eslint-disable-next-line no-new + new ScrollSpy(div, { + offset: 1, + smoothScroll: true + }) + + setTimeout(() => { + if (div.scrollTo) { + expect(clickSpy).toHaveBeenCalledWith({ top: observable.offsetTop - div.offsetTop, behavior: 'smooth' }) + } else { + expect(clickSpy).toHaveBeenCalledWith(observable.offsetTop - div.offsetTop) + } + + done() + }, 100) + link.click() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/tab.spec.js b/public/assets/libs/bootstrap/js/tests/unit/tab.spec.js new file mode 100644 index 0000000..e0c7d86 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/tab.spec.js @@ -0,0 +1,1101 @@ +import Tab from '../../src/tab' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Tab', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Tab.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = [ + '', + '
      ', + '
    • ', + '
    ' + ].join('') + + const tabEl = fixtureEl.querySelector('[href="#home"]') + const tabBySelector = new Tab('[href="#home"]') + const tabByElement = new Tab(tabEl) + + expect(tabBySelector._element).toEqual(tabEl) + expect(tabByElement._element).toEqual(tabEl) + }) + + it('Do not Throw exception if not parent', () => { + fixtureEl.innerHTML = [ + fixtureEl.innerHTML = '
    ' + ].join('') + const navEl = fixtureEl.querySelector('.nav-link') + + expect(() => { + new Tab(navEl) // eslint-disable-line no-new + }).not.toThrowError(TypeError) + }) + }) + + describe('show', () => { + it('should activate element by tab id (using buttons, the preferred semantic way)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
      ', + '
    • ', + '
    • ', + '
    ' + ].join('') + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + expect(profileTriggerEl.getAttribute('aria-selected')).toEqual('true') + resolve() + }) + + tab.show() + }) + }) + + it('should activate element by tab id (using links for tabs - not ideal, but still supported)', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
      ', + '
    • ', + '
    • ', + '
    ' + ].join('') + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + expect(profileTriggerEl.getAttribute('aria-selected')).toEqual('true') + resolve() + }) + + tab.show() + }) + }) + + it('should activate element by tab id in ordered list', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
      ', + '
    1. ', + '
    2. ', + '
    ' + ].join('') + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + resolve() + }) + + tab.show() + }) + }) + + it('should activate element by tab id in nav list', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + resolve() + }) + + tab.show() + }) + }) + + it('should activate element by tab id in list group', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + resolve() + }) + + tab.show() + }) + }) + + it('should not fire shown when show is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const navEl = fixtureEl.querySelector('.nav > div') + const tab = new Tab(navEl) + const expectDone = () => { + setTimeout(() => { + expect().nothing() + resolve() + }, 30) + } + + navEl.addEventListener('show.bs.tab', ev => { + ev.preventDefault() + expectDone() + }) + + navEl.addEventListener('shown.bs.tab', () => { + reject(new Error('should not trigger shown event')) + }) + + tab.show() + }) + }) + + it('should not fire shown when tab is already active', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const triggerActive = fixtureEl.querySelector('button.active') + const tab = new Tab(triggerActive) + + triggerActive.addEventListener('shown.bs.tab', () => { + reject(new Error('should not trigger shown event')) + }) + + tab.show() + setTimeout(() => { + expect().nothing() + resolve() + }, 30) + }) + }) + + it('show and shown events should reference correct relatedTarget', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const secondTabTrigger = fixtureEl.querySelector('#triggerProfile') + const secondTab = new Tab(secondTabTrigger) + + secondTabTrigger.addEventListener('show.bs.tab', ev => { + expect(ev.relatedTarget.getAttribute('data-bs-target')).toEqual('#home') + }) + + secondTabTrigger.addEventListener('shown.bs.tab', ev => { + expect(ev.relatedTarget.getAttribute('data-bs-target')).toEqual('#home') + expect(secondTabTrigger.getAttribute('aria-selected')).toEqual('true') + expect(fixtureEl.querySelector('button:not(.active)').getAttribute('aria-selected')).toEqual('false') + resolve() + }) + + secondTab.show() + }) + }) + + it('should fire hide and hidden events', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerList = fixtureEl.querySelectorAll('button') + const firstTab = new Tab(triggerList[0]) + const secondTab = new Tab(triggerList[1]) + + let hideCalled = false + triggerList[0].addEventListener('shown.bs.tab', () => { + secondTab.show() + }) + + triggerList[0].addEventListener('hide.bs.tab', ev => { + hideCalled = true + expect(ev.relatedTarget.getAttribute('data-bs-target')).toEqual('#profile') + }) + + triggerList[0].addEventListener('hidden.bs.tab', ev => { + expect(hideCalled).toBeTrue() + expect(ev.relatedTarget.getAttribute('data-bs-target')).toEqual('#profile') + resolve() + }) + + firstTab.show() + }) + }) + + it('should not fire hidden when hide is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const triggerList = fixtureEl.querySelectorAll('button') + const firstTab = new Tab(triggerList[0]) + const secondTab = new Tab(triggerList[1]) + const expectDone = () => { + setTimeout(() => { + expect().nothing() + resolve() + }, 30) + } + + triggerList[0].addEventListener('shown.bs.tab', () => { + secondTab.show() + }) + + triggerList[0].addEventListener('hide.bs.tab', ev => { + ev.preventDefault() + expectDone() + }) + + triggerList[0].addEventListener('hidden.bs.tab', () => { + reject(new Error('should not trigger hidden')) + }) + + firstTab.show() + }) + }) + + it('should handle removed tabs', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test 1
    ', + '
    test 2
    ', + '
    test 3
    ', + '
    ' + ].join('') + + const secondNavEl = fixtureEl.querySelector('#secondNav') + const btnCloseEl = fixtureEl.querySelector('#btnClose') + const secondNavTab = new Tab(secondNavEl) + + secondNavEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelectorAll('.nav-tab')).toHaveSize(2) + resolve() + }) + + btnCloseEl.addEventListener('click', () => { + const linkEl = btnCloseEl.parentNode + const liEl = linkEl.parentNode + const tabId = linkEl.getAttribute('href') + const tabIdEl = fixtureEl.querySelector(tabId) + + liEl.remove() + tabIdEl.remove() + secondNavTab.show() + }) + + btnCloseEl.click() + }) + }) + + it('should not focus on opened tab', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
      ', + '
    • ', + '
    • ', + '
    ' + ].join('') + + const firstTab = fixtureEl.querySelector('#home') + firstTab.focus() + + const profileTriggerEl = fixtureEl.querySelector('#triggerProfile') + const tab = new Tab(profileTriggerEl) + + profileTriggerEl.addEventListener('shown.bs.tab', () => { + expect(document.activeElement).toBe(firstTab) + expect(document.activeElement).not.toBe(profileTriggerEl) + resolve() + }) + + tab.show() + }) + }) + }) + + describe('dispose', () => { + it('should dispose a tab', () => { + fixtureEl.innerHTML = '' + + const el = fixtureEl.querySelector('.nav > div') + const tab = new Tab(fixtureEl.querySelector('.nav > div')) + + expect(Tab.getInstance(el)).not.toBeNull() + + tab.dispose() + + expect(Tab.getInstance(el)).toBeNull() + }) + }) + + describe('_activate', () => { + it('should not be called if element argument is null', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl = fixtureEl.querySelector('.nav-link') + const tab = new Tab(tabEl) + const spy = jasmine.createSpy('spy') + + const spyQueue = spyOn(tab, '_queueCallback') + tab._activate(null, spy) + expect(spyQueue).not.toHaveBeenCalled() + expect(spy).not.toHaveBeenCalled() + }) + }) + + describe('_setInitialAttributes', () => { + it('should put aria attributes', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const tabEl = fixtureEl.querySelector('.nav-link') + const parent = fixtureEl.querySelector('.nav') + const children = fixtureEl.querySelectorAll('.nav-link') + const tabPanel = fixtureEl.querySelector('#panel') + const tabPanel2 = fixtureEl.querySelector('#panel2') + + expect(parent.getAttribute('role')).toEqual(null) + expect(tabEl.getAttribute('role')).toEqual(null) + expect(tabPanel.getAttribute('role')).toEqual(null) + const tab = new Tab(tabEl) + tab._setInitialAttributes(parent, children) + + expect(parent.getAttribute('role')).toEqual('tablist') + expect(tabEl.getAttribute('role')).toEqual('tab') + + expect(tabPanel.getAttribute('role')).toEqual('tabpanel') + expect(tabPanel2.getAttribute('role')).toEqual('tabpanel') + expect(tabPanel.hasAttribute('tabindex')).toBeFalse() + expect(tabPanel.hasAttribute('tabindex2')).toBeFalse() + + expect(tabPanel.getAttribute('aria-labelledby')).toEqual('#foo') + expect(tabPanel2.hasAttribute('aria-labelledby')).toBeFalse() + }) + }) + + describe('_keydown', () => { + it('if event is not one of left/right/up/down arrow, ignore it', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl = fixtureEl.querySelector('.nav-link') + const tab = new Tab(tabEl) + + const keydown = createEvent('keydown') + keydown.key = 'Enter' + const spyStop = spyOn(Event.prototype, 'stopPropagation').and.callThrough() + const spyPrevent = spyOn(Event.prototype, 'preventDefault').and.callThrough() + const spyKeydown = spyOn(tab, '_keydown') + const spyGet = spyOn(tab, '_getChildren') + + tabEl.dispatchEvent(keydown) + expect(spyKeydown).toHaveBeenCalled() + expect(spyGet).not.toHaveBeenCalled() + + expect(spyStop).not.toHaveBeenCalled() + expect(spyPrevent).not.toHaveBeenCalled() + }) + + it('if keydown event is right/down arrow, handle it', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl1 = fixtureEl.querySelector('#tab1') + const tabEl2 = fixtureEl.querySelector('#tab2') + const tabEl3 = fixtureEl.querySelector('#tab3') + const tab1 = new Tab(tabEl1) + const tab2 = new Tab(tabEl2) + const tab3 = new Tab(tabEl3) + const spyShow1 = spyOn(tab1, 'show').and.callThrough() + const spyShow2 = spyOn(tab2, 'show').and.callThrough() + const spyShow3 = spyOn(tab3, 'show').and.callThrough() + const spyFocus1 = spyOn(tabEl1, 'focus').and.callThrough() + const spyFocus2 = spyOn(tabEl2, 'focus').and.callThrough() + const spyFocus3 = spyOn(tabEl3, 'focus').and.callThrough() + + const spyStop = spyOn(Event.prototype, 'stopPropagation').and.callThrough() + const spyPrevent = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + let keydown = createEvent('keydown') + keydown.key = 'ArrowRight' + + tabEl1.dispatchEvent(keydown) + expect(spyShow2).toHaveBeenCalled() + expect(spyFocus2).toHaveBeenCalled() + + keydown = createEvent('keydown') + keydown.key = 'ArrowDown' + + tabEl2.dispatchEvent(keydown) + expect(spyShow3).toHaveBeenCalled() + expect(spyFocus3).toHaveBeenCalled() + + tabEl3.dispatchEvent(keydown) + expect(spyShow1).toHaveBeenCalled() + expect(spyFocus1).toHaveBeenCalled() + + expect(spyStop).toHaveBeenCalledTimes(3) + expect(spyPrevent).toHaveBeenCalledTimes(3) + }) + + it('if keydown event is left arrow, handle it', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl1 = fixtureEl.querySelector('#tab1') + const tabEl2 = fixtureEl.querySelector('#tab2') + const tab1 = new Tab(tabEl1) + const tab2 = new Tab(tabEl2) + const spyShow1 = spyOn(tab1, 'show').and.callThrough() + const spyShow2 = spyOn(tab2, 'show').and.callThrough() + const spyFocus1 = spyOn(tabEl1, 'focus').and.callThrough() + const spyFocus2 = spyOn(tabEl2, 'focus').and.callThrough() + + const spyStop = spyOn(Event.prototype, 'stopPropagation').and.callThrough() + const spyPrevent = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + let keydown = createEvent('keydown') + keydown.key = 'ArrowLeft' + + tabEl2.dispatchEvent(keydown) + expect(spyShow1).toHaveBeenCalled() + expect(spyFocus1).toHaveBeenCalled() + + keydown = createEvent('keydown') + keydown.key = 'ArrowUp' + + tabEl1.dispatchEvent(keydown) + expect(spyShow2).toHaveBeenCalled() + expect(spyFocus2).toHaveBeenCalled() + + expect(spyStop).toHaveBeenCalledTimes(2) + expect(spyPrevent).toHaveBeenCalledTimes(2) + }) + + it('if keydown event is right arrow and next element is disabled', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl = fixtureEl.querySelector('#tab1') + const tabEl2 = fixtureEl.querySelector('#tab2') + const tabEl3 = fixtureEl.querySelector('#tab3') + const tabEl4 = fixtureEl.querySelector('#tab4') + const tab = new Tab(tabEl) + const tab2 = new Tab(tabEl2) + const tab3 = new Tab(tabEl3) + const tab4 = new Tab(tabEl4) + const spy1 = spyOn(tab, 'show').and.callThrough() + const spy2 = spyOn(tab2, 'show').and.callThrough() + const spy3 = spyOn(tab3, 'show').and.callThrough() + const spy4 = spyOn(tab4, 'show').and.callThrough() + const spyFocus1 = spyOn(tabEl, 'focus').and.callThrough() + const spyFocus2 = spyOn(tabEl2, 'focus').and.callThrough() + const spyFocus3 = spyOn(tabEl3, 'focus').and.callThrough() + const spyFocus4 = spyOn(tabEl4, 'focus').and.callThrough() + + const keydown = createEvent('keydown') + keydown.key = 'ArrowRight' + + tabEl.dispatchEvent(keydown) + expect(spy1).not.toHaveBeenCalled() + expect(spy2).not.toHaveBeenCalled() + expect(spy3).not.toHaveBeenCalled() + expect(spy4).toHaveBeenCalledTimes(1) + expect(spyFocus1).not.toHaveBeenCalled() + expect(spyFocus2).not.toHaveBeenCalled() + expect(spyFocus3).not.toHaveBeenCalled() + expect(spyFocus4).toHaveBeenCalledTimes(1) + }) + + it('if keydown event is left arrow and next element is disabled', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl = fixtureEl.querySelector('#tab1') + const tabEl2 = fixtureEl.querySelector('#tab2') + const tabEl3 = fixtureEl.querySelector('#tab3') + const tabEl4 = fixtureEl.querySelector('#tab4') + const tab = new Tab(tabEl) + const tab2 = new Tab(tabEl2) + const tab3 = new Tab(tabEl3) + const tab4 = new Tab(tabEl4) + const spy1 = spyOn(tab, 'show').and.callThrough() + const spy2 = spyOn(tab2, 'show').and.callThrough() + const spy3 = spyOn(tab3, 'show').and.callThrough() + const spy4 = spyOn(tab4, 'show').and.callThrough() + const spyFocus1 = spyOn(tabEl, 'focus').and.callThrough() + const spyFocus2 = spyOn(tabEl2, 'focus').and.callThrough() + const spyFocus3 = spyOn(tabEl3, 'focus').and.callThrough() + const spyFocus4 = spyOn(tabEl4, 'focus').and.callThrough() + + const keydown = createEvent('keydown') + keydown.key = 'ArrowLeft' + + tabEl4.dispatchEvent(keydown) + expect(spy4).not.toHaveBeenCalled() + expect(spy3).not.toHaveBeenCalled() + expect(spy2).not.toHaveBeenCalled() + expect(spy1).toHaveBeenCalledTimes(1) + expect(spyFocus4).not.toHaveBeenCalled() + expect(spyFocus3).not.toHaveBeenCalled() + expect(spyFocus2).not.toHaveBeenCalled() + expect(spyFocus1).toHaveBeenCalledTimes(1) + }) + }) + + describe('jQueryInterface', () => { + it('should create a tab', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('.nav > div') + + jQueryMock.fn.tab = Tab.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tab.call(jQueryMock) + + expect(Tab.getInstance(div)).not.toBeNull() + }) + + it('should not re create a tab', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('.nav > div') + const tab = new Tab(div) + + jQueryMock.fn.tab = Tab.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tab.call(jQueryMock) + + expect(Tab.getInstance(div)).toEqual(tab) + }) + + it('should call a tab method', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('.nav > div') + const tab = new Tab(div) + + const spy = spyOn(tab, 'show') + + jQueryMock.fn.tab = Tab.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tab.call(jQueryMock, 'show') + + expect(Tab.getInstance(div)).toEqual(tab) + expect(spy).toHaveBeenCalled() + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('.nav > div') + const action = 'undefinedMethod' + + jQueryMock.fn.tab = Tab.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.tab.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return null if there is no instance', () => { + expect(Tab.getInstance(fixtureEl)).toBeNull() + }) + + it('should return this instance', () => { + fixtureEl.innerHTML = '' + + const divEl = fixtureEl.querySelector('.nav > div') + const tab = new Tab(divEl) + + expect(Tab.getInstance(divEl)).toEqual(tab) + expect(Tab.getInstance(divEl)).toBeInstanceOf(Tab) + }) + }) + + describe('getOrCreateInstance', () => { + it('should return tab instance', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + const tab = new Tab(div) + + expect(Tab.getOrCreateInstance(div)).toEqual(tab) + expect(Tab.getInstance(div)).toEqual(Tab.getOrCreateInstance(div, {})) + expect(Tab.getOrCreateInstance(div)).toBeInstanceOf(Tab) + }) + + it('should return new instance when there is no tab instance', () => { + fixtureEl.innerHTML = '' + + const div = fixtureEl.querySelector('div') + + expect(Tab.getInstance(div)).toBeNull() + expect(Tab.getOrCreateInstance(div)).toBeInstanceOf(Tab) + }) + }) + + describe('data-api', () => { + it('should create dynamically a tab', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const secondTabTrigger = fixtureEl.querySelector('#triggerProfile') + + secondTabTrigger.addEventListener('shown.bs.tab', () => { + expect(secondTabTrigger).toHaveClass('active') + expect(fixtureEl.querySelector('#profile')).toHaveClass('active') + resolve() + }) + + secondTabTrigger.click() + }) + }) + + it('selected tab should deactivate previous selected link in dropdown', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const firstLiLinkEl = fixtureEl.querySelector('li:first-child a') + + firstLiLinkEl.click() + expect(firstLiLinkEl).toHaveClass('active') + expect(fixtureEl.querySelector('li:last-child a')).not.toHaveClass('active') + expect(fixtureEl.querySelector('li:last-child .dropdown-menu a:first-child')).not.toHaveClass('active') + }) + + it('selecting a dropdown tab does not activate another', () => { + const nav1 = [ + '' + ].join('') + const nav2 = [ + '' + ].join('') + + fixtureEl.innerHTML = nav1 + nav2 + + const firstDropItem = fixtureEl.querySelector('#nav1 .dropdown-item') + + firstDropItem.click() + expect(firstDropItem).toHaveClass('active') + expect(fixtureEl.querySelector('#nav1 .dropdown-toggle')).toHaveClass('active') + expect(fixtureEl.querySelector('#nav2 .dropdown-toggle')).not.toHaveClass('active') + expect(fixtureEl.querySelector('#nav2 .dropdown-item')).not.toHaveClass('active') + }) + + it('should support li > .dropdown-item', () => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const dropItems = fixtureEl.querySelectorAll('.dropdown-item') + + dropItems[1].click() + expect(dropItems[0]).not.toHaveClass('active') + expect(dropItems[1]).toHaveClass('active') + expect(fixtureEl.querySelector('.nav-link')).not.toHaveClass('active') + }) + + it('should handle nested tabs', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + ' ', + '
    ', + '
    Nested Tab1 Content
    ', + '
    Nested Tab2 Content
    ', + '
    ', + '
    ', + '
    Tab2 Content
    ', + '
    Tab3 Content
    ', + '
    ' + ].join('') + + const tab1El = fixtureEl.querySelector('#tab1') + const tabNested2El = fixtureEl.querySelector('#tabNested2') + const xTab1El = fixtureEl.querySelector('#x-tab1') + + tabNested2El.addEventListener('shown.bs.tab', () => { + expect(xTab1El).toHaveClass('active') + resolve() + }) + + tab1El.addEventListener('shown.bs.tab', () => { + expect(xTab1El).toHaveClass('active') + tabNested2El.click() + }) + + tab1El.click() + }) + }) + + it('should not remove fade class if no active pane is present', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const triggerTabProfileEl = fixtureEl.querySelector('#tab-profile') + const triggerTabHomeEl = fixtureEl.querySelector('#tab-home') + const tabProfileEl = fixtureEl.querySelector('#profile') + const tabHomeEl = fixtureEl.querySelector('#home') + + triggerTabHomeEl.addEventListener('shown.bs.tab', () => { + setTimeout(() => { + expect(tabProfileEl).toHaveClass('fade') + expect(tabProfileEl).not.toHaveClass('show') + + expect(tabHomeEl).toHaveClass('fade') + expect(tabHomeEl).toHaveClass('show') + + resolve() + }, 10) + }) + + triggerTabProfileEl.addEventListener('shown.bs.tab', () => { + setTimeout(() => { + expect(tabProfileEl).toHaveClass('fade') + expect(tabProfileEl).toHaveClass('show') + triggerTabHomeEl.click() + }, 10) + }) + + triggerTabProfileEl.click() + }) + }) + + it('should add `show` class to tab panes if there is no `.fade` class', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test 1
    ', + '
    test 2
    ', + '
    ' + ].join('') + + const secondNavEl = fixtureEl.querySelector('#secondNav') + + secondNavEl.addEventListener('shown.bs.tab', () => { + expect(fixtureEl.querySelectorAll('.tab-content .show')).toHaveSize(1) + resolve() + }) + + secondNavEl.click() + }) + }) + + it('should add show class to tab panes if there is a `.fade` class', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    test 1
    ', + '
    test 2
    ', + '
    ' + ].join('') + + const secondNavEl = fixtureEl.querySelector('#secondNav') + + secondNavEl.addEventListener('shown.bs.tab', () => { + setTimeout(() => { + expect(fixtureEl.querySelectorAll('.show')).toHaveSize(1) + resolve() + }, 10) + }) + + secondNavEl.click() + }) + }) + + it('should prevent default when the trigger is or ', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '' + ].join('') + + const tabEl = fixtureEl.querySelector('[href="#test2"]') + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + tabEl.addEventListener('shown.bs.tab', () => { + expect(tabEl).toHaveClass('active') + expect(spy).toHaveBeenCalled() + resolve() + }) + + tabEl.click() + }) + }) + + it('should not fire shown when tab has disabled attribute', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const triggerDisabled = fixtureEl.querySelector('button[disabled]') + triggerDisabled.addEventListener('shown.bs.tab', () => { + reject(new Error('should not trigger shown event')) + }) + + triggerDisabled.click() + setTimeout(() => { + expect().nothing() + resolve() + }, 30) + }) + }) + + it('should not fire shown when tab has disabled class', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const triggerDisabled = fixtureEl.querySelector('a.disabled') + + triggerDisabled.addEventListener('shown.bs.tab', () => { + reject(new Error('should not trigger shown event')) + }) + + triggerDisabled.click() + setTimeout(() => { + expect().nothing() + resolve() + }, 30) + }) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/toast.spec.js b/public/assets/libs/bootstrap/js/tests/unit/toast.spec.js new file mode 100644 index 0000000..42d2515 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/toast.spec.js @@ -0,0 +1,670 @@ +import Toast from '../../src/toast' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Toast', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Toast.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Toast.DATA_KEY).toEqual('bs.toast') + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '
    ' + + const toastEl = fixtureEl.querySelector('.toast') + const toastBySelector = new Toast('.toast') + const toastByElement = new Toast(toastEl) + + expect(toastBySelector._element).toEqual(toastEl) + expect(toastByElement._element).toEqual(toastEl) + }) + + it('should allow to config in js', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('div') + const toast = new Toast(toastEl, { + delay: 1 + }) + + toastEl.addEventListener('shown.bs.toast', () => { + expect(toastEl).toHaveClass('show') + resolve() + }) + + toast.show() + }) + }) + + it('should close toast when close element with data-bs-dismiss attribute is set', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('div') + const toast = new Toast(toastEl) + + toastEl.addEventListener('shown.bs.toast', () => { + expect(toastEl).toHaveClass('show') + + const button = toastEl.querySelector('.btn-close') + + button.click() + }) + + toastEl.addEventListener('hidden.bs.toast', () => { + expect(toastEl).not.toHaveClass('show') + resolve() + }) + + toast.show() + }) + }) + }) + + describe('Default', () => { + it('should expose default setting to allow to override them', () => { + const defaultDelay = 1000 + + Toast.Default.delay = defaultDelay + + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('div') + const toast = new Toast(toastEl) + + expect(toast._config.delay).toEqual(defaultDelay) + }) + }) + + describe('DefaultType', () => { + it('should expose default setting types for read', () => { + expect(Toast.DefaultType).toEqual(jasmine.any(Object)) + }) + }) + + describe('show', () => { + it('should auto hide', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + toastEl.addEventListener('hidden.bs.toast', () => { + expect(toastEl).not.toHaveClass('show') + resolve() + }) + + toast.show() + }) + }) + + it('should not add fade class', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + toastEl.addEventListener('shown.bs.toast', () => { + expect(toastEl).not.toHaveClass('fade') + resolve() + }) + + toast.show() + }) + }) + + it('should not trigger shown if show is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + const assertDone = () => { + setTimeout(() => { + expect(toastEl).not.toHaveClass('show') + resolve() + }, 20) + } + + toastEl.addEventListener('show.bs.toast', event => { + event.preventDefault() + assertDone() + }) + + toastEl.addEventListener('shown.bs.toast', () => { + reject(new Error('shown event should not be triggered if show is prevented')) + }) + + toast.show() + }) + }) + + it('should clear timeout if toast is shown again before it is hidden', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + setTimeout(() => { + toast._config.autohide = false + toastEl.addEventListener('shown.bs.toast', () => { + expect(spy).toHaveBeenCalled() + expect(toast._timeout).toBeNull() + resolve() + }) + toast.show() + }, toast._config.delay / 2) + + const spy = spyOn(toast, '_clearTimeout').and.callThrough() + + toast.show() + }) + }) + + it('should clear timeout if toast is interacted with mouse', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + const spy = spyOn(toast, '_clearTimeout').and.callThrough() + + setTimeout(() => { + spy.calls.reset() + + toastEl.addEventListener('mouseover', () => { + expect(toast._clearTimeout).toHaveBeenCalledTimes(1) + expect(toast._timeout).toBeNull() + resolve() + }) + + const mouseOverEvent = createEvent('mouseover') + toastEl.dispatchEvent(mouseOverEvent) + }, toast._config.delay / 2) + + toast.show() + }) + }) + + it('should clear timeout if toast is interacted with keyboard', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + ' a simple toast', + ' ', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + const spy = spyOn(toast, '_clearTimeout').and.callThrough() + + setTimeout(() => { + spy.calls.reset() + + toastEl.addEventListener('focusin', () => { + expect(toast._clearTimeout).toHaveBeenCalledTimes(1) + expect(toast._timeout).toBeNull() + resolve() + }) + + const insideFocusable = toastEl.querySelector('button') + insideFocusable.focus() + }, toast._config.delay / 2) + + toast.show() + }) + }) + + it('should still auto hide after being interacted with mouse and keyboard', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + ' a simple toast', + ' ', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + setTimeout(() => { + toastEl.addEventListener('mouseover', () => { + const insideFocusable = toastEl.querySelector('button') + insideFocusable.focus() + }) + + toastEl.addEventListener('focusin', () => { + const mouseOutEvent = createEvent('mouseout') + toastEl.dispatchEvent(mouseOutEvent) + }) + + toastEl.addEventListener('mouseout', () => { + const outsideFocusable = document.getElementById('outside-focusable') + outsideFocusable.focus() + }) + + toastEl.addEventListener('focusout', () => { + expect(toast._timeout).not.toBeNull() + resolve() + }) + + const mouseOverEvent = createEvent('mouseover') + toastEl.dispatchEvent(mouseOverEvent) + }, toast._config.delay / 2) + + toast.show() + }) + }) + + it('should not auto hide if focus leaves but mouse pointer remains inside', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + ' a simple toast', + ' ', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + setTimeout(() => { + toastEl.addEventListener('mouseover', () => { + const insideFocusable = toastEl.querySelector('button') + insideFocusable.focus() + }) + + toastEl.addEventListener('focusin', () => { + const outsideFocusable = document.getElementById('outside-focusable') + outsideFocusable.focus() + }) + + toastEl.addEventListener('focusout', () => { + expect(toast._timeout).toBeNull() + resolve() + }) + + const mouseOverEvent = createEvent('mouseover') + toastEl.dispatchEvent(mouseOverEvent) + }, toast._config.delay / 2) + + toast.show() + }) + }) + + it('should not auto hide if mouse pointer leaves but focus remains inside', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ', + ' a simple toast', + ' ', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + setTimeout(() => { + toastEl.addEventListener('mouseover', () => { + const insideFocusable = toastEl.querySelector('button') + insideFocusable.focus() + }) + + toastEl.addEventListener('focusin', () => { + const mouseOutEvent = createEvent('mouseout') + toastEl.dispatchEvent(mouseOutEvent) + }) + + toastEl.addEventListener('mouseout', () => { + expect(toast._timeout).toBeNull() + resolve() + }) + + const mouseOverEvent = createEvent('mouseover') + toastEl.dispatchEvent(mouseOverEvent) + }, toast._config.delay / 2) + + toast.show() + }) + }) + }) + + describe('hide', () => { + it('should allow to hide toast manually', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + toastEl.addEventListener('shown.bs.toast', () => { + toast.hide() + }) + + toastEl.addEventListener('hidden.bs.toast', () => { + expect(toastEl).not.toHaveClass('show') + resolve() + }) + + toast.show() + }) + }) + + it('should do nothing when we call hide on a non shown toast', () => { + fixtureEl.innerHTML = '
    ' + + const toastEl = fixtureEl.querySelector('div') + const toast = new Toast(toastEl) + + const spy = spyOn(toastEl.classList, 'contains') + + toast.hide() + + expect(spy).toHaveBeenCalled() + }) + + it('should not trigger hidden if hide is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('.toast') + const toast = new Toast(toastEl) + + const assertDone = () => { + setTimeout(() => { + expect(toastEl).toHaveClass('show') + resolve() + }, 20) + } + + toastEl.addEventListener('shown.bs.toast', () => { + toast.hide() + }) + + toastEl.addEventListener('hide.bs.toast', event => { + event.preventDefault() + assertDone() + }) + + toastEl.addEventListener('hidden.bs.toast', () => { + reject(new Error('hidden event should not be triggered if hide is prevented')) + }) + + toast.show() + }) + }) + }) + + describe('dispose', () => { + it('should allow to destroy toast', () => { + fixtureEl.innerHTML = '
    ' + + const toastEl = fixtureEl.querySelector('div') + + const toast = new Toast(toastEl) + + expect(Toast.getInstance(toastEl)).not.toBeNull() + + toast.dispose() + + expect(Toast.getInstance(toastEl)).toBeNull() + }) + + it('should allow to destroy toast and hide it before that', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + ' a simple toast', + '
    ', + '
    ' + ].join('') + + const toastEl = fixtureEl.querySelector('div') + const toast = new Toast(toastEl) + const expected = () => { + expect(toastEl).toHaveClass('show') + expect(Toast.getInstance(toastEl)).not.toBeNull() + + toast.dispose() + + expect(Toast.getInstance(toastEl)).toBeNull() + expect(toastEl).not.toHaveClass('show') + + resolve() + } + + toastEl.addEventListener('shown.bs.toast', () => { + setTimeout(expected, 1) + }) + + toast.show() + }) + }) + }) + + describe('jQueryInterface', () => { + it('should create a toast', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.toast = Toast.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.toast.call(jQueryMock) + + expect(Toast.getInstance(div)).not.toBeNull() + }) + + it('should not re create a toast', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const toast = new Toast(div) + + jQueryMock.fn.toast = Toast.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.toast.call(jQueryMock) + + expect(Toast.getInstance(div)).toEqual(toast) + }) + + it('should call a toast method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const toast = new Toast(div) + + const spy = spyOn(toast, 'show') + + jQueryMock.fn.toast = Toast.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.toast.call(jQueryMock, 'show') + + expect(Toast.getInstance(div)).toEqual(toast) + expect(spy).toHaveBeenCalled() + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.toast = Toast.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.toast.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) + + describe('getInstance', () => { + it('should return a toast instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const toast = new Toast(div) + + expect(Toast.getInstance(div)).toEqual(toast) + expect(Toast.getInstance(div)).toBeInstanceOf(Toast) + }) + + it('should return null when there is no toast instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Toast.getInstance(div)).toBeNull() + }) + }) + + describe('getOrCreateInstance', () => { + it('should return toast instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const toast = new Toast(div) + + expect(Toast.getOrCreateInstance(div)).toEqual(toast) + expect(Toast.getInstance(div)).toEqual(Toast.getOrCreateInstance(div, {})) + expect(Toast.getOrCreateInstance(div)).toBeInstanceOf(Toast) + }) + + it('should return new instance when there is no toast instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Toast.getInstance(div)).toBeNull() + expect(Toast.getOrCreateInstance(div)).toBeInstanceOf(Toast) + }) + + it('should return new instance when there is no toast instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Toast.getInstance(div)).toBeNull() + const toast = Toast.getOrCreateInstance(div, { + delay: 1 + }) + expect(toast).toBeInstanceOf(Toast) + + expect(toast._config.delay).toEqual(1) + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const toast = new Toast(div, { + delay: 1 + }) + expect(Toast.getInstance(div)).toEqual(toast) + + const toast2 = Toast.getOrCreateInstance(div, { + delay: 2 + }) + expect(toast).toBeInstanceOf(Toast) + expect(toast2).toEqual(toast) + + expect(toast2._config.delay).toEqual(1) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/tooltip.spec.js b/public/assets/libs/bootstrap/js/tests/unit/tooltip.spec.js new file mode 100644 index 0000000..4330571 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/tooltip.spec.js @@ -0,0 +1,1551 @@ +import Tooltip from '../../src/tooltip' +import EventHandler from '../../src/dom/event-handler' +import { noop } from '../../src/util/index' +import { clearFixture, createEvent, getFixture, jQueryMock } from '../helpers/fixture' + +describe('Tooltip', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + + for (const tooltipEl of document.querySelectorAll('.tooltip')) { + tooltipEl.remove() + } + }) + + describe('VERSION', () => { + it('should return plugin version', () => { + expect(Tooltip.VERSION).toEqual(jasmine.any(String)) + }) + }) + + describe('Default', () => { + it('should return plugin default config', () => { + expect(Tooltip.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('NAME', () => { + it('should return plugin name', () => { + expect(Tooltip.NAME).toEqual(jasmine.any(String)) + }) + }) + + describe('DATA_KEY', () => { + it('should return plugin data key', () => { + expect(Tooltip.DATA_KEY).toEqual('bs.tooltip') + }) + }) + + describe('EVENT_KEY', () => { + it('should return plugin event key', () => { + expect(Tooltip.EVENT_KEY).toEqual('.bs.tooltip') + }) + }) + + describe('DefaultType', () => { + it('should return plugin default type', () => { + expect(Tooltip.DefaultType).toEqual(jasmine.any(Object)) + }) + }) + + describe('constructor', () => { + it('should take care of element either passed as a CSS selector or DOM element', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('#tooltipEl') + const tooltipBySelector = new Tooltip('#tooltipEl') + const tooltipByElement = new Tooltip(tooltipEl) + + expect(tooltipBySelector._element).toEqual(tooltipEl) + expect(tooltipByElement._element).toEqual(tooltipEl) + }) + + it('should not take care of disallowed data attributes', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._config.sanitize).toBeTrue() + }) + + it('should convert title and content to string if numbers', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + title: 1, + content: 7 + }) + + expect(tooltip._config.title).toEqual('1') + expect(tooltip._config.content).toEqual('7') + }) + + it('should enable selector delegation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const containerEl = fixtureEl.querySelector('div') + const tooltipContainer = new Tooltip(containerEl, { + selector: 'a[rel="tooltip"]', + trigger: 'click' + }) + + containerEl.innerHTML = '
    ' + + const tooltipInContainerEl = containerEl.querySelector('a') + + tooltipInContainerEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + tooltipContainer.dispose() + resolve() + }) + + tooltipInContainerEl.click() + }) + }) + + it('should create offset modifier when offset is passed as a function', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const getOffset = jasmine.createSpy('getOffset').and.returnValue([10, 20]) + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + offset: getOffset, + popperConfig: { + onFirstUpdate(state) { + expect(getOffset).toHaveBeenCalledWith({ + popper: state.rects.popper, + reference: state.rects.reference, + placement: state.placement + }, tooltipEl) + resolve() + } + } + }) + + const offset = tooltip._getOffset() + + expect(offset).toEqual(jasmine.any(Function)) + + tooltip.show() + }) + }) + + it('should create offset modifier when offset option is passed in data attribute', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._getOffset()).toEqual([10, 20]) + }) + + it('should allow to pass config to Popper with `popperConfig`', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + popperConfig: { + placement: 'left' + } + }) + + const popperConfig = tooltip._getPopperConfig('top') + + expect(popperConfig.placement).toEqual('left') + }) + + it('should allow to pass config to Popper with `popperConfig` as a function', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const getPopperConfig = jasmine.createSpy('getPopperConfig').and.returnValue({ placement: 'left' }) + const tooltip = new Tooltip(tooltipEl, { + popperConfig: getPopperConfig + }) + + const popperConfig = tooltip._getPopperConfig('top') + + expect(getPopperConfig).toHaveBeenCalled() + expect(popperConfig.placement).toEqual('left') + }) + + it('should use original title, if not "data-bs-title" is given', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._getTitle()).toEqual('Another tooltip') + }) + }) + + describe('enable', () => { + it('should enable a tooltip', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.enable() + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + }) + + describe('disable', () => { + it('should disable tooltip', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.disable() + + tooltipEl.addEventListener('show.bs.tooltip', () => { + reject(new Error('should not show a disabled tooltip')) + }) + + tooltip.show() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + }) + + describe('toggleEnabled', () => { + it('should toggle enabled', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._isEnabled).toBeTrue() + + tooltip.toggleEnabled() + + expect(tooltip._isEnabled).toBeFalse() + }) + }) + + describe('toggle', () => { + it('should do nothing if disabled', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.disable() + + tooltipEl.addEventListener('show.bs.tooltip', () => { + reject(new Error('should not show a disabled tooltip')) + }) + + tooltip.toggle() + + setTimeout(() => { + expect().nothing() + resolve() + }, 10) + }) + }) + + it('should show a tooltip', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + resolve() + }) + + tooltip.toggle() + }) + }) + + it('should call toggle and show the tooltip when trigger is "click"', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + trigger: 'click' + }) + + const spy = spyOn(tooltip, 'toggle').and.callThrough() + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + tooltipEl.click() + }) + }) + + it('should hide a tooltip', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + tooltip.toggle() + }) + + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).toBeNull() + resolve() + }) + + tooltip.toggle() + }) + }) + + it('should call toggle and hide the tooltip when trigger is "click"', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + trigger: 'click' + }) + + const spy = spyOn(tooltip, 'toggle').and.callThrough() + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + tooltipEl.click() + }) + + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + tooltipEl.click() + }) + }) + }) + + describe('dispose', () => { + it('should destroy a tooltip', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const addEventSpy = spyOn(tooltipEl, 'addEventListener').and.callThrough() + const removeEventSpy = spyOn(tooltipEl, 'removeEventListener').and.callThrough() + + const tooltip = new Tooltip(tooltipEl) + + expect(Tooltip.getInstance(tooltipEl)).toEqual(tooltip) + + const expectedArgs = [ + ['mouseover', jasmine.any(Function), jasmine.any(Boolean)], + ['mouseout', jasmine.any(Function), jasmine.any(Boolean)], + ['focusin', jasmine.any(Function), jasmine.any(Boolean)], + ['focusout', jasmine.any(Function), jasmine.any(Boolean)] + ] + + expect(addEventSpy.calls.allArgs()).toEqual(expectedArgs) + + tooltip.dispose() + + expect(Tooltip.getInstance(tooltipEl)).toBeNull() + expect(removeEventSpy.calls.allArgs()).toEqual(expectedArgs) + }) + + it('should destroy a tooltip after it is shown and hidden', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + tooltip.hide() + }) + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + tooltip.dispose() + expect(tooltip.tip).toBeNull() + expect(Tooltip.getInstance(tooltipEl)).toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should destroy a tooltip and remove it from the dom', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + + tooltip.dispose() + + expect(document.querySelector('.tooltip')).toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should destroy a tooltip and reset it\'s initial title', () => { + fixtureEl.innerHTML = [ + '', + '' + ].join('') + + const tooltipWithTitleEl = fixtureEl.querySelector('#tooltipWithTitle') + const tooltip = new Tooltip('#tooltipWithTitle') + expect(tooltipWithTitleEl.getAttribute('title')).toBeNull() + tooltip.dispose() + expect(tooltipWithTitleEl.getAttribute('title')).toBe('tooltipTitle') + + const tooltipWithoutTitleEl = fixtureEl.querySelector('#tooltipWithoutTitle') + const tooltip2 = new Tooltip('#tooltipWithTitle') + expect(tooltipWithoutTitleEl.getAttribute('title')).toBeNull() + tooltip2.dispose() + expect(tooltipWithoutTitleEl.getAttribute('title')).toBeNull() + }) + }) + + describe('show', () => { + it('should show a tooltip', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + expect(tooltipEl.getAttribute('aria-describedby')).toEqual(tooltipShown.getAttribute('id')) + expect(tooltipShown.getAttribute('id')).toContain('tooltip') + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip when hovering a child element', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + ' ', + ' ', + ' ', + ' ', + '' + ].join('') + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + const spy = spyOn(tooltip, 'show') + + tooltipEl.querySelector('rect').dispatchEvent(createEvent('mouseover', { bubbles: true })) + + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 0) + }) + }) + + it('should show a tooltip on mobile', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + document.documentElement.ontouchstart = noop + + const spy = spyOn(EventHandler, 'on').and.callThrough() + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + expect(spy).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop) + document.documentElement.ontouchstart = undefined + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip relative to placement option', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + placement: 'bottom' + }) + + tooltipEl.addEventListener('inserted.bs.tooltip', () => { + expect(tooltip._getTipElement()).toHaveClass('bs-tooltip-auto') + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(tooltip._getTipElement()).toHaveClass('bs-tooltip-auto') + expect(tooltip._getTipElement().getAttribute('data-popper-placement')).toEqual('bottom') + resolve() + }) + + tooltip.show() + }) + }) + + it('should not error when trying to show a tooltip that has been removed from the dom', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + const firstCallback = () => { + tooltipEl.removeEventListener('shown.bs.tooltip', firstCallback) + let tooltipShown = document.querySelector('.tooltip') + + tooltipShown.remove() + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + resolve() + }) + + tooltip.show() + } + + tooltipEl.addEventListener('shown.bs.tooltip', firstCallback) + + tooltip.show() + }) + }) + + it('should show a tooltip with a dom element container', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + container: fixtureEl + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(fixtureEl.querySelector('.tooltip')).not.toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip with a jquery element container', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + container: { + 0: fixtureEl, + jquery: 'jQuery' + } + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(fixtureEl.querySelector('.tooltip')).not.toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip with a selector in container', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + container: '#fixture' + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(fixtureEl.querySelector('.tooltip')).not.toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip with placement as a function', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const spy = jasmine.createSpy('placement').and.returnValue('top') + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + placement: spy + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).not.toBeNull() + expect(spy).toHaveBeenCalled() + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip without the animation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + animation: false + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tip = document.querySelector('.tooltip') + + expect(tip).not.toBeNull() + expect(tip).not.toHaveClass('fade') + resolve() + }) + + tooltip.show() + }) + }) + + it('should throw an error the element is not visible', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + try { + tooltip.show() + } catch (error) { + expect(error.message).toEqual('Please use show on visible elements') + } + }) + + it('should not show a tooltip if show.bs.tooltip is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + const expectedDone = () => { + setTimeout(() => { + expect(document.querySelector('.tooltip')).toBeNull() + resolve() + }, 10) + } + + tooltipEl.addEventListener('show.bs.tooltip', ev => { + ev.preventDefault() + expectedDone() + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + reject(new Error('Tooltip should not be shown')) + }) + + tooltip.show() + }) + }) + + it('should show tooltip if leave event hasn\'t occurred before delay expires', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + delay: 150 + }) + + const spy = spyOn(tooltip, 'show') + + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + }, 100) + + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 200) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + }) + + it('should not show tooltip if leave event occurs before delay expires', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + delay: 150 + }) + + const spy = spyOn(tooltip, 'show') + + setTimeout(() => { + expect(spy).not.toHaveBeenCalled() + tooltipEl.dispatchEvent(createEvent('mouseover')) + }, 100) + + setTimeout(() => { + expect(spy).toHaveBeenCalled() + expect(document.querySelectorAll('.tooltip')).toHaveSize(0) + resolve() + }, 200) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + }) + + it('should not hide tooltip if leave event occurs and enter event occurs within the hide delay', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._config.delay).toEqual({ show: 0, hide: 150 }) + + setTimeout(() => { + expect(tooltip._getTipElement()).toHaveClass('show') + tooltipEl.dispatchEvent(createEvent('mouseout')) + + setTimeout(() => { + expect(tooltip._getTipElement()).toHaveClass('show') + tooltipEl.dispatchEvent(createEvent('mouseover')) + }, 100) + + setTimeout(() => { + expect(tooltip._getTipElement()).toHaveClass('show') + expect(document.querySelectorAll('.tooltip')).toHaveSize(1) + resolve() + }, 200) + }, 10) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + }) + + it('should not hide tooltip if leave event occurs and interaction remains inside trigger', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '', + 'Trigger', + 'the tooltip', + '' + ].join('') + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + const triggerChild = tooltipEl.querySelector('b') + + const spy = spyOn(tooltip, 'hide').and.callThrough() + + tooltipEl.addEventListener('mouseover', () => { + const moveMouseToChildEvent = createEvent('mouseout') + Object.defineProperty(moveMouseToChildEvent, 'relatedTarget', { + value: triggerChild + }) + + tooltipEl.dispatchEvent(moveMouseToChildEvent) + }) + + tooltipEl.addEventListener('mouseout', () => { + expect(spy).not.toHaveBeenCalled() + resolve() + }) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + }) + + it('should properly maintain tooltip state if leave event occurs and enter event occurs during hide transition', () => { + return new Promise(resolve => { + // Style this tooltip to give it plenty of room for popper to do what it wants + fixtureEl.innerHTML = 'Trigger' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.15s', + transitionDelay: '0s' + }) + + setTimeout(() => { + expect(tooltip._popper).not.toBeNull() + expect(tooltip._getTipElement().getAttribute('data-popper-placement')).toEqual('top') + tooltipEl.dispatchEvent(createEvent('mouseout')) + + setTimeout(() => { + expect(tooltip._getTipElement()).not.toHaveClass('show') + tooltipEl.dispatchEvent(createEvent('mouseover')) + }, 100) + + setTimeout(() => { + expect(tooltip._popper).not.toBeNull() + expect(tooltip._getTipElement().getAttribute('data-popper-placement')).toEqual('top') + resolve() + }, 200) + }, 10) + + tooltipEl.dispatchEvent(createEvent('mouseover')) + }) + }) + + it('should only trigger inserted event if a new tooltip element was created', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.15s', + transitionDelay: '0s' + }) + + const insertedFunc = jasmine.createSpy() + tooltipEl.addEventListener('inserted.bs.tooltip', insertedFunc) + + setTimeout(() => { + expect(insertedFunc).toHaveBeenCalledTimes(1) + tooltip.hide() + + setTimeout(() => { + tooltip.show() + }, 100) + + setTimeout(() => { + expect(insertedFunc).toHaveBeenCalledTimes(2) + resolve() + }, 200) + }, 0) + + tooltip.show() + }) + }) + + it('should show a tooltip with custom class provided in data attributes', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tip = document.querySelector('.tooltip') + expect(tip).not.toBeNull() + expect(tip).toHaveClass('custom-class') + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip with custom class provided as a string in config', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + customClass: 'custom-class custom-class-2' + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tip = document.querySelector('.tooltip') + expect(tip).not.toBeNull() + expect(tip).toHaveClass('custom-class') + expect(tip).toHaveClass('custom-class-2') + resolve() + }) + + tooltip.show() + }) + }) + + it('should show a tooltip with custom class provided as a function in config', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const spy = jasmine.createSpy('customClass').and.returnValue('custom-class') + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + customClass: spy + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tip = document.querySelector('.tooltip') + expect(tip).not.toBeNull() + expect(spy).toHaveBeenCalled() + expect(tip).toHaveClass('custom-class') + resolve() + }) + + tooltip.show() + }) + }) + + it('should remove `title` attribute if exists', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + expect(tooltipEl.getAttribute('title')).toBeNull() + resolve() + }) + tooltip.show() + }) + }) + }) + + describe('hide', () => { + it('should hide a tooltip', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => tooltip.hide()) + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).toBeNull() + expect(tooltipEl.getAttribute('aria-describedby')).toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should hide a tooltip on mobile', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + const spy = spyOn(EventHandler, 'off') + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + document.documentElement.ontouchstart = noop + tooltip.hide() + }) + + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).toBeNull() + expect(spy).toHaveBeenCalledWith(jasmine.any(Object), 'mouseover', noop) + document.documentElement.ontouchstart = undefined + resolve() + }) + + tooltip.show() + }) + }) + + it('should hide a tooltip without animation', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + animation: false + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => tooltip.hide()) + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + expect(document.querySelector('.tooltip')).toBeNull() + expect(tooltipEl.getAttribute('aria-describedby')).toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + + it('should not hide a tooltip if hide event is prevented', () => { + return new Promise((resolve, reject) => { + fixtureEl.innerHTML = '' + + const assertDone = () => { + setTimeout(() => { + expect(document.querySelector('.tooltip')).not.toBeNull() + resolve() + }, 20) + } + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + animation: false + }) + + tooltipEl.addEventListener('shown.bs.tooltip', () => tooltip.hide()) + tooltipEl.addEventListener('hide.bs.tooltip', event => { + event.preventDefault() + assertDone() + }) + tooltipEl.addEventListener('hidden.bs.tooltip', () => { + reject(new Error('should not trigger hidden event')) + }) + + tooltip.show() + }) + }) + + it('should not throw error running hide if popper hasn\'t been shown', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div) + + try { + tooltip.hide() + expect().nothing() + } catch { + throw new Error('should not throw error') + } + }) + }) + + describe('update', () => { + it('should call popper update', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const spy = spyOn(tooltip._popper, 'update') + + tooltip.update() + + expect(spy).toHaveBeenCalled() + resolve() + }) + + tooltip.show() + }) + }) + + it('should do nothing if the tooltip is not shown', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.update() + expect().nothing() + }) + }) + + describe('_isWithContent', () => { + it('should return true if there is content', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._isWithContent()).toBeTrue() + }) + + it('should return false if there is no content', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._isWithContent()).toBeFalse() + }) + }) + + describe('_getTipElement', () => { + it('should create the tip element and return it', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + const spy = spyOn(document, 'createElement').and.callThrough() + + expect(tooltip._getTipElement()).toBeDefined() + expect(spy).toHaveBeenCalled() + }) + + it('should return the created tip element', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + const spy = spyOn(document, 'createElement').and.callThrough() + + expect(tooltip._getTipElement()).toBeDefined() + expect(spy).toHaveBeenCalled() + + spy.calls.reset() + + expect(tooltip._getTipElement()).toBeDefined() + expect(spy).not.toHaveBeenCalled() + }) + }) + + describe('setContent', () => { + it('should set tip content', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { animation: false }) + + const tip = tooltip._getTipElement() + + tooltip.setContent(tip) + + expect(tip).not.toHaveClass('show') + expect(tip).not.toHaveClass('fade') + expect(tip.querySelector('.tooltip-inner').textContent).toEqual('Another tooltip') + }) + + it('should re-show tip if it was already shown', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + tooltip.show() + const tip = () => tooltip._getTipElement() + + expect(tip()).toHaveClass('show') + tooltip.setContent({ '.tooltip-inner': 'foo' }) + + expect(tip()).toHaveClass('show') + expect(tip().querySelector('.tooltip-inner').textContent).toEqual('foo') + }) + + it('should keep tip hidden, if it was already hidden before', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + const tip = () => tooltip._getTipElement() + + expect(tip()).not.toHaveClass('show') + tooltip.setContent({ '.tooltip-inner': 'foo' }) + + expect(tip()).not.toHaveClass('show') + tooltip.show() + expect(tip().querySelector('.tooltip-inner').textContent).toEqual('foo') + }) + + it('"setContent" should keep the initial template', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.setContent({ '.tooltip-inner': 'foo' }) + const tip = tooltip._getTipElement() + + expect(tip).toHaveClass('tooltip') + expect(tip).toHaveClass('bs-tooltip-auto') + expect(tip.querySelector('.tooltip-arrow')).not.toBeNull() + expect(tip.querySelector('.tooltip-inner')).not.toBeNull() + }) + }) + + describe('setContent', () => { + it('should do nothing if the element is null', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.setContent({ '.tooltip': null }) + expect().nothing() + }) + + it('should do nothing if the content is a child of the element', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const tooltipEl = fixtureEl.querySelector('a') + const childContent = fixtureEl.querySelector('div') + const tooltip = new Tooltip(tooltipEl, { + html: true + }) + + tooltip._getTipElement().append(childContent) + tooltip.setContent({ '.tooltip': childContent }) + + expect().nothing() + }) + + it('should add the content as a child of the element for jQuery elements', () => { + fixtureEl.innerHTML = [ + '', + '
    ', + '
    ' + ].join('') + + const tooltipEl = fixtureEl.querySelector('a') + const childContent = fixtureEl.querySelector('div') + const tooltip = new Tooltip(tooltipEl, { + html: true + }) + + tooltip.setContent({ '.tooltip': { 0: childContent, jquery: 'jQuery' } }) + tooltip.show() + + expect(childContent.parentNode).toEqual(tooltip._getTipElement()) + }) + + it('should add the child text content in the element', () => { + fixtureEl.innerHTML = [ + '', + '
    Tooltip
    ', + '
    ' + ].join('') + + const tooltipEl = fixtureEl.querySelector('a') + const childContent = fixtureEl.querySelector('div') + const tooltip = new Tooltip(tooltipEl) + + tooltip.setContent({ '.tooltip': childContent }) + + expect(childContent.textContent).toEqual(tooltip._getTipElement().textContent) + }) + + it('should add html without sanitize it', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + sanitize: false, + html: true + }) + + tooltip.setContent({ '.tooltip': '
    Tooltip
    ' }) + + expect(tooltip._getTipElement().querySelector('div').id).toEqual('childContent') + }) + + it('should add html sanitized', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + html: true + }) + + const content = [ + '
    ', + ' ', + '
    ' + ].join('') + + tooltip.setContent({ '.tooltip': content }) + expect(tooltip._getTipElement().querySelector('div').id).toEqual('childContent') + expect(tooltip._getTipElement().querySelector('button')).toBeNull() + }) + + it('should add text content', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltip.setContent({ '.tooltip': 'test' }) + + expect(tooltip._getTipElement().textContent).toEqual('test') + }) + }) + + describe('_getTitle', () => { + it('should return the title', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + expect(tooltip._getTitle()).toEqual('Another tooltip') + }) + + it('should call title function', () => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl, { + title: () => 'test' + }) + + expect(tooltip._getTitle()).toEqual('test') + }) + }) + + describe('getInstance', () => { + it('should return tooltip instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const alert = new Tooltip(div) + + expect(Tooltip.getInstance(div)).toEqual(alert) + expect(Tooltip.getInstance(div)).toBeInstanceOf(Tooltip) + }) + + it('should return null when there is no tooltip instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Tooltip.getInstance(div)).toBeNull() + }) + }) + + describe('aria-label', () => { + it('should add the aria-label attribute for referencing original title', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + expect(tooltipEl.getAttribute('aria-label')).toEqual('Another tooltip') + resolve() + }) + + tooltip.show() + }) + }) + + it('should add the aria-label attribute when element text content is a whitespace string', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = ' ' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + expect(tooltipEl.getAttribute('aria-label')).toEqual('A tooltip') + resolve() + }) + + tooltip.show() + }) + }) + + it('should not add the aria-label attribute if the attribute already exists', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + expect(tooltipEl.getAttribute('aria-label')).toEqual('Different label') + resolve() + }) + + tooltip.show() + }) + }) + + it('should not add the aria-label attribute if the element has text content', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = 'text content' + + const tooltipEl = fixtureEl.querySelector('a') + const tooltip = new Tooltip(tooltipEl) + + tooltipEl.addEventListener('shown.bs.tooltip', () => { + const tooltipShown = document.querySelector('.tooltip') + + expect(tooltipShown).not.toBeNull() + expect(tooltipEl.getAttribute('aria-label')).toBeNull() + resolve() + }) + + tooltip.show() + }) + }) + }) + + describe('getOrCreateInstance', () => { + it('should return tooltip instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div) + + expect(Tooltip.getOrCreateInstance(div)).toEqual(tooltip) + expect(Tooltip.getInstance(div)).toEqual(Tooltip.getOrCreateInstance(div, {})) + expect(Tooltip.getOrCreateInstance(div)).toBeInstanceOf(Tooltip) + }) + + it('should return new instance when there is no tooltip instance', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Tooltip.getInstance(div)).toBeNull() + expect(Tooltip.getOrCreateInstance(div)).toBeInstanceOf(Tooltip) + }) + + it('should return new instance when there is no tooltip instance with given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Tooltip.getInstance(div)).toBeNull() + const tooltip = Tooltip.getOrCreateInstance(div, { + title: () => 'test' + }) + expect(tooltip).toBeInstanceOf(Tooltip) + + expect(tooltip._getTitle()).toEqual('test') + }) + + it('should return the instance when exists without given configuration', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div, { + title: () => 'nothing' + }) + expect(Tooltip.getInstance(div)).toEqual(tooltip) + + const tooltip2 = Tooltip.getOrCreateInstance(div, { + title: () => 'test' + }) + expect(tooltip).toBeInstanceOf(Tooltip) + expect(tooltip2).toEqual(tooltip) + + expect(tooltip2._getTitle()).toEqual('nothing') + }) + }) + + describe('jQueryInterface', () => { + it('should create a tooltip', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + jQueryMock.fn.tooltip = Tooltip.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tooltip.call(jQueryMock) + + expect(Tooltip.getInstance(div)).not.toBeNull() + }) + + it('should not re create a tooltip', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div) + + jQueryMock.fn.tooltip = Tooltip.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tooltip.call(jQueryMock) + + expect(Tooltip.getInstance(div)).toEqual(tooltip) + }) + + it('should call a tooltip method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const tooltip = new Tooltip(div) + + const spy = spyOn(tooltip, 'show') + + jQueryMock.fn.tooltip = Tooltip.jQueryInterface + jQueryMock.elements = [div] + + jQueryMock.fn.tooltip.call(jQueryMock, 'show') + + expect(Tooltip.getInstance(div)).toEqual(tooltip) + expect(spy).toHaveBeenCalled() + }) + + it('should throw error on undefined method', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const action = 'undefinedMethod' + + jQueryMock.fn.tooltip = Tooltip.jQueryInterface + jQueryMock.elements = [div] + + expect(() => { + jQueryMock.fn.tooltip.call(jQueryMock, action) + }).toThrowError(TypeError, `No method named "${action}"`) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/backdrop.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/backdrop.spec.js new file mode 100644 index 0000000..73384fc --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/backdrop.spec.js @@ -0,0 +1,321 @@ +import Backdrop from '../../../src/util/backdrop' +import { getTransitionDurationFromElement } from '../../../src/util/index' +import { clearFixture, getFixture } from '../../helpers/fixture' + +const CLASS_BACKDROP = '.modal-backdrop' +const CLASS_NAME_FADE = 'fade' +const CLASS_NAME_SHOW = 'show' + +describe('Backdrop', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + const list = document.querySelectorAll(CLASS_BACKDROP) + + for (const el of list) { + el.remove() + } + }) + + describe('show', () => { + it('should append the backdrop html once on show and include the "show" class if it is "shown"', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + isAnimated: false + }) + const getElements = () => document.querySelectorAll(CLASS_BACKDROP) + + expect(getElements()).toHaveSize(0) + + instance.show() + instance.show(() => { + expect(getElements()).toHaveSize(1) + for (const el of getElements()) { + expect(el).toHaveClass(CLASS_NAME_SHOW) + } + + resolve() + }) + }) + }) + + it('should not append the backdrop html if it is not "shown"', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: false, + isAnimated: true + }) + const getElements = () => document.querySelectorAll(CLASS_BACKDROP) + + expect(getElements()).toHaveSize(0) + instance.show(() => { + expect(getElements()).toHaveSize(0) + resolve() + }) + }) + }) + + it('should append the backdrop html once and include the "fade" class if it is "shown" and "animated"', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + isAnimated: true + }) + const getElements = () => document.querySelectorAll(CLASS_BACKDROP) + + expect(getElements()).toHaveSize(0) + + instance.show(() => { + expect(getElements()).toHaveSize(1) + for (const el of getElements()) { + expect(el).toHaveClass(CLASS_NAME_FADE) + } + + resolve() + }) + }) + }) + }) + + describe('hide', () => { + it('should remove the backdrop html', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + isAnimated: true + }) + + const getElements = () => document.body.querySelectorAll(CLASS_BACKDROP) + + expect(getElements()).toHaveSize(0) + instance.show(() => { + expect(getElements()).toHaveSize(1) + instance.hide(() => { + expect(getElements()).toHaveSize(0) + resolve() + }) + }) + }) + }) + + it('should remove the "show" class', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + isAnimated: true + }) + const elem = instance._getElement() + + instance.show() + instance.hide(() => { + expect(elem).not.toHaveClass(CLASS_NAME_SHOW) + resolve() + }) + }) + }) + + it('should not try to remove Node on remove method if it is not "shown"', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: false, + isAnimated: true + }) + const getElements = () => document.querySelectorAll(CLASS_BACKDROP) + const spy = spyOn(instance, 'dispose').and.callThrough() + + expect(getElements()).toHaveSize(0) + expect(instance._isAppended).toBeFalse() + instance.show(() => { + instance.hide(() => { + expect(getElements()).toHaveSize(0) + expect(spy).not.toHaveBeenCalled() + expect(instance._isAppended).toBeFalse() + resolve() + }) + }) + }) + }) + + it('should not error if the backdrop no longer has a parent', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const wrapper = fixtureEl.querySelector('#wrapper') + const instance = new Backdrop({ + isVisible: true, + isAnimated: true, + rootElement: wrapper + }) + + const getElements = () => document.querySelectorAll(CLASS_BACKDROP) + + instance.show(() => { + wrapper.remove() + instance.hide(() => { + expect(getElements()).toHaveSize(0) + resolve() + }) + }) + }) + }) + }) + + describe('click callback', () => { + it('should execute callback on click', () => { + return new Promise(resolve => { + const spy = jasmine.createSpy('spy') + + const instance = new Backdrop({ + isVisible: true, + isAnimated: false, + clickCallback: () => spy() + }) + const endTest = () => { + setTimeout(() => { + expect(spy).toHaveBeenCalled() + resolve() + }, 10) + } + + instance.show(() => { + const clickEvent = new Event('mousedown', { bubbles: true, cancelable: true }) + document.querySelector(CLASS_BACKDROP).dispatchEvent(clickEvent) + endTest() + }) + }) + }) + + describe('animation callbacks', () => { + it('should show and hide backdrop after counting transition duration if it is animated', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + isAnimated: true + }) + const spy2 = jasmine.createSpy('spy2') + + const execDone = () => { + setTimeout(() => { + expect(spy2).toHaveBeenCalledTimes(2) + resolve() + }, 10) + } + + instance.show(spy2) + instance.hide(() => { + spy2() + execDone() + }) + expect(spy2).not.toHaveBeenCalled() + }) + }) + + it('should show and hide backdrop without a delay if it is not animated', () => { + return new Promise(resolve => { + const spy = jasmine.createSpy('spy', getTransitionDurationFromElement) + const instance = new Backdrop({ + isVisible: true, + isAnimated: false + }) + const spy2 = jasmine.createSpy('spy2') + + instance.show(spy2) + instance.hide(spy2) + + setTimeout(() => { + expect(spy2).toHaveBeenCalled() + expect(spy).not.toHaveBeenCalled() + resolve() + }, 10) + }) + }) + + it('should not call delay callbacks if it is not "shown"', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: false, + isAnimated: true + }) + const spy = jasmine.createSpy('spy', getTransitionDurationFromElement) + + instance.show() + instance.hide(() => { + expect(spy).not.toHaveBeenCalled() + resolve() + }) + }) + }) + }) + + describe('Config', () => { + describe('rootElement initialization', () => { + it('should be appended on "document.body" by default', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true + }) + const getElement = () => document.querySelector(CLASS_BACKDROP) + instance.show(() => { + expect(getElement().parentElement).toEqual(document.body) + resolve() + }) + }) + }) + + it('should find the rootElement if passed as a string', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + rootElement: 'body' + }) + const getElement = () => document.querySelector(CLASS_BACKDROP) + instance.show(() => { + expect(getElement().parentElement).toEqual(document.body) + resolve() + }) + }) + }) + + it('should be appended on any element given by the proper config', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const wrapper = fixtureEl.querySelector('#wrapper') + const instance = new Backdrop({ + isVisible: true, + rootElement: wrapper + }) + const getElement = () => document.querySelector(CLASS_BACKDROP) + instance.show(() => { + expect(getElement().parentElement).toEqual(wrapper) + resolve() + }) + }) + }) + }) + + describe('ClassName', () => { + it('should allow configuring className', () => { + return new Promise(resolve => { + const instance = new Backdrop({ + isVisible: true, + className: 'foo' + }) + const getElement = () => document.querySelector('.foo') + instance.show(() => { + expect(getElement()).toEqual(instance._getElement()) + instance.dispose() + resolve() + }) + }) + }) + }) + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/component-functions.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/component-functions.spec.js new file mode 100644 index 0000000..ec36672 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/component-functions.spec.js @@ -0,0 +1,108 @@ +/* Test helpers */ + +import { clearFixture, createEvent, getFixture } from '../../helpers/fixture' +import { enableDismissTrigger } from '../../../src/util/component-functions' +import BaseComponent from '../../../src/base-component' + +class DummyClass2 extends BaseComponent { + static get NAME() { + return 'test' + } + + hide() { + return true + } + + testMethod() { + return true + } +} + +describe('Plugin functions', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('data-bs-dismiss functionality', () => { + it('should get Plugin and execute the given method, when a click occurred on data-bs-dismiss="PluginName"', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const spyGet = spyOn(DummyClass2, 'getOrCreateInstance').and.callThrough() + const spyTest = spyOn(DummyClass2.prototype, 'testMethod') + const componentWrapper = fixtureEl.querySelector('#foo') + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="test"]') + const event = createEvent('click') + + enableDismissTrigger(DummyClass2, 'testMethod') + btnClose.dispatchEvent(event) + + expect(spyGet).toHaveBeenCalledWith(componentWrapper) + expect(spyTest).toHaveBeenCalled() + }) + + it('if data-bs-dismiss="PluginName" hasn\'t got "data-bs-target", "getOrCreateInstance" has to be initialized by closest "plugin.Name" class', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const spyGet = spyOn(DummyClass2, 'getOrCreateInstance').and.callThrough() + const spyHide = spyOn(DummyClass2.prototype, 'hide') + const componentWrapper = fixtureEl.querySelector('#foo') + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="test"]') + const event = createEvent('click') + + enableDismissTrigger(DummyClass2) + btnClose.dispatchEvent(event) + + expect(spyGet).toHaveBeenCalledWith(componentWrapper) + expect(spyHide).toHaveBeenCalled() + }) + + it('if data-bs-dismiss="PluginName" is disabled, must not trigger function', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const spy = spyOn(DummyClass2, 'getOrCreateInstance').and.callThrough() + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="test"]') + const event = createEvent('click') + + enableDismissTrigger(DummyClass2) + btnClose.dispatchEvent(event) + + expect(spy).not.toHaveBeenCalled() + }) + + it('should prevent default when the trigger is or ', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const btnClose = fixtureEl.querySelector('[data-bs-dismiss="test"]') + const event = createEvent('click') + + enableDismissTrigger(DummyClass2) + const spy = spyOn(Event.prototype, 'preventDefault').and.callThrough() + + btnClose.dispatchEvent(event) + + expect(spy).toHaveBeenCalled() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/config.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/config.spec.js new file mode 100644 index 0000000..e1693c0 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/config.spec.js @@ -0,0 +1,166 @@ +import Config from '../../../src/util/config' +import { clearFixture, getFixture } from '../../helpers/fixture' + +class DummyConfigClass extends Config { + static get NAME() { + return 'dummy' + } +} + +describe('Config', () => { + let fixtureEl + const name = 'dummy' + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('NAME', () => { + it('should return plugin NAME', () => { + expect(DummyConfigClass.NAME).toEqual(name) + }) + }) + + describe('DefaultType', () => { + it('should return plugin default type', () => { + expect(DummyConfigClass.DefaultType).toEqual(jasmine.any(Object)) + }) + }) + + describe('Default', () => { + it('should return plugin defaults', () => { + expect(DummyConfigClass.Default).toEqual(jasmine.any(Object)) + }) + }) + + describe('mergeConfigObj', () => { + it('should parse element\'s data attributes and merge it with default config. Element\'s data attributes must excel Defaults', () => { + fixtureEl.innerHTML = '
    ' + + spyOnProperty(DummyConfigClass, 'Default', 'get').and.returnValue({ + testBool: true, + testString: 'foo', + testString1: 'foo', + testInt: 7 + }) + const instance = new DummyConfigClass() + const configResult = instance._mergeConfigObj({}, fixtureEl.querySelector('#test')) + + expect(configResult.testBool).toEqual(false) + expect(configResult.testString).toEqual('foo') + expect(configResult.testString1).toEqual('bar') + expect(configResult.testInt).toEqual(8) + }) + + it('should parse element\'s data attributes and merge it with default config, plug these given during method call. The programmatically given should excel all', () => { + fixtureEl.innerHTML = '
    ' + + spyOnProperty(DummyConfigClass, 'Default', 'get').and.returnValue({ + testBool: true, + testString: 'foo', + testString1: 'foo', + testInt: 7 + }) + const instance = new DummyConfigClass() + const configResult = instance._mergeConfigObj({ + testString1: 'test', + testInt: 3 + }, fixtureEl.querySelector('#test')) + + expect(configResult.testBool).toEqual(false) + expect(configResult.testString).toEqual('foo') + expect(configResult.testString1).toEqual('test') + expect(configResult.testInt).toEqual(3) + }) + + it('should parse element\'s data attribute `config` and any rest attributes. The programmatically given should excel all. Data attribute `config` should excel only Defaults', () => { + fixtureEl.innerHTML = '
    ' + + spyOnProperty(DummyConfigClass, 'Default', 'get').and.returnValue({ + testBool: true, + testString: 'foo', + testString1: 'foo', + testInt: 7, + testInt2: 600 + }) + const instance = new DummyConfigClass() + const configResult = instance._mergeConfigObj({ + testString1: 'test' + }, fixtureEl.querySelector('#test')) + + expect(configResult.testBool).toEqual(false) + expect(configResult.testString).toEqual('foo') + expect(configResult.testString1).toEqual('test') + expect(configResult.testInt).toEqual(8) + expect(configResult.testInt2).toEqual(100) + }) + + it('should omit element\'s data attribute `config` if is not an object', () => { + fixtureEl.innerHTML = '
    ' + + spyOnProperty(DummyConfigClass, 'Default', 'get').and.returnValue({ + testInt: 7, + testInt2: 79 + }) + const instance = new DummyConfigClass() + const configResult = instance._mergeConfigObj({}, fixtureEl.querySelector('#test')) + + expect(configResult.testInt).toEqual(8) + expect(configResult.testInt2).toEqual(79) + }) + }) + + describe('typeCheckConfig', () => { + it('should check type of the config object', () => { + spyOnProperty(DummyConfigClass, 'DefaultType', 'get').and.returnValue({ + toggle: 'boolean', + parent: '(string|element)' + }) + const config = { + toggle: true, + parent: 777 + } + + const obj = new DummyConfigClass() + expect(() => { + obj._typeCheckConfig(config) + }).toThrowError(TypeError, obj.constructor.NAME.toUpperCase() + ': Option "parent" provided type "number" but expected type "(string|element)".') + }) + + it('should return null stringified when null is passed', () => { + spyOnProperty(DummyConfigClass, 'DefaultType', 'get').and.returnValue({ + toggle: 'boolean', + parent: '(null|element)' + }) + + const obj = new DummyConfigClass() + const config = { + toggle: true, + parent: null + } + + obj._typeCheckConfig(config) + expect().nothing() + }) + + it('should return undefined stringified when undefined is passed', () => { + spyOnProperty(DummyConfigClass, 'DefaultType', 'get').and.returnValue({ + toggle: 'boolean', + parent: '(undefined|element)' + }) + + const obj = new DummyConfigClass() + const config = { + toggle: true, + parent: undefined + } + + obj._typeCheckConfig(config) + expect().nothing() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/focustrap.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/focustrap.spec.js new file mode 100644 index 0000000..bedd124 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/focustrap.spec.js @@ -0,0 +1,218 @@ +import FocusTrap from '../../../src/util/focustrap' +import EventHandler from '../../../src/dom/event-handler' +import SelectorEngine from '../../../src/dom/selector-engine' +import { clearFixture, createEvent, getFixture } from '../../helpers/fixture' + +describe('FocusTrap', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('activate', () => { + it('should autofocus itself by default', () => { + fixtureEl.innerHTML = '
    ' + + const trapElement = fixtureEl.querySelector('div') + + const spy = spyOn(trapElement, 'focus') + + const focustrap = new FocusTrap({ trapElement }) + focustrap.activate() + + expect(spy).toHaveBeenCalled() + }) + + it('if configured not to autofocus, should not autofocus itself', () => { + fixtureEl.innerHTML = '
    ' + + const trapElement = fixtureEl.querySelector('div') + + const spy = spyOn(trapElement, 'focus') + + const focustrap = new FocusTrap({ trapElement, autofocus: false }) + focustrap.activate() + + expect(spy).not.toHaveBeenCalled() + }) + + it('should force focus inside focus trap if it can', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + 'outside', + '
    ', + ' inside', + '
    ' + ].join('') + + const trapElement = fixtureEl.querySelector('div') + const focustrap = new FocusTrap({ trapElement }) + focustrap.activate() + + const inside = document.getElementById('inside') + + const focusInListener = () => { + expect(spy).toHaveBeenCalled() + document.removeEventListener('focusin', focusInListener) + resolve() + } + + const spy = spyOn(inside, 'focus') + spyOn(SelectorEngine, 'focusableChildren').and.callFake(() => [inside]) + + document.addEventListener('focusin', focusInListener) + + const focusInEvent = createEvent('focusin', { bubbles: true }) + Object.defineProperty(focusInEvent, 'target', { + value: document.getElementById('outside') + }) + + document.dispatchEvent(focusInEvent) + }) + }) + + it('should wrap focus around forward on tab', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + 'outside', + '
    ', + ' first', + ' inside', + ' last', + '
    ' + ].join('') + + const trapElement = fixtureEl.querySelector('div') + const focustrap = new FocusTrap({ trapElement }) + focustrap.activate() + + const first = document.getElementById('first') + const inside = document.getElementById('inside') + const last = document.getElementById('last') + const outside = document.getElementById('outside') + + spyOn(SelectorEngine, 'focusableChildren').and.callFake(() => [first, inside, last]) + const spy = spyOn(first, 'focus').and.callThrough() + + const focusInListener = () => { + expect(spy).toHaveBeenCalled() + first.removeEventListener('focusin', focusInListener) + resolve() + } + + first.addEventListener('focusin', focusInListener) + + const keydown = createEvent('keydown') + keydown.key = 'Tab' + + document.dispatchEvent(keydown) + outside.focus() + }) + }) + + it('should wrap focus around backwards on shift-tab', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + 'outside', + '
    ', + ' first', + ' inside', + ' last', + '
    ' + ].join('') + + const trapElement = fixtureEl.querySelector('div') + const focustrap = new FocusTrap({ trapElement }) + focustrap.activate() + + const first = document.getElementById('first') + const inside = document.getElementById('inside') + const last = document.getElementById('last') + const outside = document.getElementById('outside') + + spyOn(SelectorEngine, 'focusableChildren').and.callFake(() => [first, inside, last]) + const spy = spyOn(last, 'focus').and.callThrough() + + const focusInListener = () => { + expect(spy).toHaveBeenCalled() + last.removeEventListener('focusin', focusInListener) + resolve() + } + + last.addEventListener('focusin', focusInListener) + + const keydown = createEvent('keydown') + keydown.key = 'Tab' + keydown.shiftKey = true + + document.dispatchEvent(keydown) + outside.focus() + }) + }) + + it('should force focus on itself if there is no focusable content', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + 'outside', + '
    ' + ].join('') + + const trapElement = fixtureEl.querySelector('div') + const focustrap = new FocusTrap({ trapElement }) + focustrap.activate() + + const focusInListener = () => { + expect(spy).toHaveBeenCalled() + document.removeEventListener('focusin', focusInListener) + resolve() + } + + const spy = spyOn(focustrap._config.trapElement, 'focus') + + document.addEventListener('focusin', focusInListener) + + const focusInEvent = createEvent('focusin', { bubbles: true }) + Object.defineProperty(focusInEvent, 'target', { + value: document.getElementById('outside') + }) + + document.dispatchEvent(focusInEvent) + }) + }) + }) + + describe('deactivate', () => { + it('should flag itself as no longer active', () => { + const focustrap = new FocusTrap({ trapElement: fixtureEl }) + focustrap.activate() + expect(focustrap._isActive).toBeTrue() + + focustrap.deactivate() + expect(focustrap._isActive).toBeFalse() + }) + + it('should remove all event listeners', () => { + const focustrap = new FocusTrap({ trapElement: fixtureEl }) + focustrap.activate() + + const spy = spyOn(EventHandler, 'off') + focustrap.deactivate() + + expect(spy).toHaveBeenCalled() + }) + + it('doesn\'t try removing event listeners unless it needs to (in case it hasn\'t been activated)', () => { + const focustrap = new FocusTrap({ trapElement: fixtureEl }) + + const spy = spyOn(EventHandler, 'off') + focustrap.deactivate() + + expect(spy).not.toHaveBeenCalled() + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/index.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/index.spec.js new file mode 100644 index 0000000..9f28ce0 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/index.spec.js @@ -0,0 +1,814 @@ +import * as Util from '../../../src/util/index' +import { clearFixture, getFixture } from '../../helpers/fixture' +import { noop } from '../../../src/util/index' + +describe('Util', () => { + let fixtureEl + + beforeAll(() => { + fixtureEl = getFixture() + }) + + afterEach(() => { + clearFixture() + }) + + describe('getUID', () => { + it('should generate uid', () => { + const uid = Util.getUID('bs') + const uid2 = Util.getUID('bs') + + expect(uid).not.toEqual(uid2) + }) + }) + + describe('getSelectorFromElement', () => { + it('should get selector from data-bs-target', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toEqual('.target') + }) + + it('should get selector from href if no data-bs-target set', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toEqual('.target') + }) + + it('should get selector from href if data-bs-target equal to #', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toEqual('.target') + }) + + it('should return null if a selector from a href is a url without an anchor', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toBeNull() + }) + + it('should return the anchor if a selector from a href is a url', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toEqual('#target') + }) + + it('should return null if selector not found', () => { + fixtureEl.innerHTML = '' + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getSelectorFromElement(testEl)).toBeNull() + }) + + it('should return null if no selector', () => { + fixtureEl.innerHTML = '
    ' + + const testEl = fixtureEl.querySelector('div') + + expect(Util.getSelectorFromElement(testEl)).toBeNull() + }) + }) + + describe('getElementFromSelector', () => { + it('should get element from data-bs-target', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getElementFromSelector(testEl)).toEqual(fixtureEl.querySelector('.target')) + }) + + it('should get element from href if no data-bs-target set', () => { + fixtureEl.innerHTML = [ + '', + '
    ' + ].join('') + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getElementFromSelector(testEl)).toEqual(fixtureEl.querySelector('.target')) + }) + + it('should return null if element not found', () => { + fixtureEl.innerHTML = '' + + const testEl = fixtureEl.querySelector('#test') + + expect(Util.getElementFromSelector(testEl)).toBeNull() + }) + + it('should return null if no selector', () => { + fixtureEl.innerHTML = '
    ' + + const testEl = fixtureEl.querySelector('div') + + expect(Util.getElementFromSelector(testEl)).toBeNull() + }) + }) + + describe('getTransitionDurationFromElement', () => { + it('should get transition from element', () => { + fixtureEl.innerHTML = '
    ' + + expect(Util.getTransitionDurationFromElement(fixtureEl.querySelector('div'))).toEqual(300) + }) + + it('should return 0 if the element is undefined or null', () => { + expect(Util.getTransitionDurationFromElement(null)).toEqual(0) + expect(Util.getTransitionDurationFromElement(undefined)).toEqual(0) + }) + + it('should return 0 if the element do not possess transition', () => { + fixtureEl.innerHTML = '
    ' + + expect(Util.getTransitionDurationFromElement(fixtureEl.querySelector('div'))).toEqual(0) + }) + }) + + describe('triggerTransitionEnd', () => { + it('should trigger transitionend event', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = '
    ' + + const el = fixtureEl.querySelector('div') + const spy = spyOn(el, 'dispatchEvent').and.callThrough() + + el.addEventListener('transitionend', () => { + expect(spy).toHaveBeenCalled() + resolve() + }) + + Util.triggerTransitionEnd(el) + }) + }) + }) + + describe('isElement', () => { + it('should detect if the parameter is an element or not and return Boolean', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ' + ].join('') + + const el = fixtureEl.querySelector('#foo') + + expect(Util.isElement(el)).toBeTrue() + expect(Util.isElement({})).toBeFalse() + expect(Util.isElement(fixtureEl.querySelectorAll('.test'))).toBeFalse() + }) + + it('should detect jQuery element', () => { + fixtureEl.innerHTML = '
    ' + + const el = fixtureEl.querySelector('div') + const fakejQuery = { + 0: el, + jquery: 'foo' + } + + expect(Util.isElement(fakejQuery)).toBeTrue() + }) + }) + + describe('getElement', () => { + it('should try to parse element', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ' + ].join('') + + const el = fixtureEl.querySelector('div') + + expect(Util.getElement(el)).toEqual(el) + expect(Util.getElement('#foo')).toEqual(el) + expect(Util.getElement('#fail')).toBeNull() + expect(Util.getElement({})).toBeNull() + expect(Util.getElement([])).toBeNull() + expect(Util.getElement()).toBeNull() + expect(Util.getElement(null)).toBeNull() + expect(Util.getElement(fixtureEl.querySelectorAll('.test'))).toBeNull() + + const fakejQueryObject = { + 0: el, + jquery: 'foo' + } + + expect(Util.getElement(fakejQueryObject)).toEqual(el) + }) + }) + + describe('isVisible', () => { + it('should return false if the element is not defined', () => { + expect(Util.isVisible(null)).toBeFalse() + expect(Util.isVisible(undefined)).toBeFalse() + }) + + it('should return false if the element provided is not a dom element', () => { + expect(Util.isVisible({})).toBeFalse() + }) + + it('should return false if the element is not visible with display none', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Util.isVisible(div)).toBeFalse() + }) + + it('should return false if the element is not visible with visibility hidden', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + expect(Util.isVisible(div)).toBeFalse() + }) + + it('should return false if an ancestor element is display none', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('.content') + + expect(Util.isVisible(div)).toBeFalse() + }) + + it('should return false if an ancestor element is visibility hidden', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('.content') + + expect(Util.isVisible(div)).toBeFalse() + }) + + it('should return true if an ancestor element is visibility hidden, but reverted', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('.content') + + expect(Util.isVisible(div)).toBeTrue() + }) + + it('should return true if the element is visible', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isVisible(div)).toBeTrue() + }) + + it('should return false if the element is hidden, but not via display or visibility', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isVisible(div)).toBeFalse() + }) + + it('should return true if its a closed details element', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('#element') + + expect(Util.isVisible(div)).toBeTrue() + }) + + it('should return true if the element is visible inside an open details element', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isVisible(div)).toBeTrue() + }) + + it('should return true if the element is a visible summary in a closed details element', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const element1 = fixtureEl.querySelector('#element-1') + const element2 = fixtureEl.querySelector('#element-2') + + expect(Util.isVisible(element1)).toBeTrue() + expect(Util.isVisible(element2)).toBeTrue() + }) + }) + + describe('isDisabled', () => { + it('should return true if the element is not defined', () => { + expect(Util.isDisabled(null)).toBeTrue() + expect(Util.isDisabled(undefined)).toBeTrue() + expect(Util.isDisabled()).toBeTrue() + }) + + it('should return true if the element provided is not a dom element', () => { + expect(Util.isDisabled({})).toBeTrue() + expect(Util.isDisabled('test')).toBeTrue() + }) + + it('should return true if the element has disabled attribute', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + const div1 = fixtureEl.querySelector('#element1') + const div2 = fixtureEl.querySelector('#element2') + + expect(Util.isDisabled(div)).toBeTrue() + expect(Util.isDisabled(div1)).toBeTrue() + expect(Util.isDisabled(div2)).toBeTrue() + }) + + it('should return false if the element has disabled attribute with "false" value, or doesn\'t have attribute', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + const div1 = fixtureEl.querySelector('#element1') + + expect(Util.isDisabled(div)).toBeFalse() + expect(Util.isDisabled(div1)).toBeFalse() + }) + + it('should return false if the element is not disabled ', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const el = selector => fixtureEl.querySelector(selector) + + expect(Util.isDisabled(el('#button'))).toBeFalse() + expect(Util.isDisabled(el('#select'))).toBeFalse() + expect(Util.isDisabled(el('#input'))).toBeFalse() + }) + + it('should return true if the element has disabled attribute', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + ' ', + '
    ' + ].join('') + + const el = selector => fixtureEl.querySelector(selector) + + expect(Util.isDisabled(el('#input'))).toBeTrue() + expect(Util.isDisabled(el('#input1'))).toBeTrue() + expect(Util.isDisabled(el('#button'))).toBeTrue() + expect(Util.isDisabled(el('#button1'))).toBeTrue() + expect(Util.isDisabled(el('#button2'))).toBeTrue() + expect(Util.isDisabled(el('#input'))).toBeTrue() + }) + + it('should return true if the element has class "disabled"', () => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#element') + + expect(Util.isDisabled(div)).toBeTrue() + }) + + it('should return true if the element has class "disabled" but disabled attribute is false', () => { + fixtureEl.innerHTML = [ + '
    ', + ' ', + '
    ' + ].join('') + + const div = fixtureEl.querySelector('#input') + + expect(Util.isDisabled(div)).toBeTrue() + }) + }) + + describe('findShadowRoot', () => { + it('should return null if shadow dom is not available', () => { + // Only for newer browsers + if (!document.documentElement.attachShadow) { + expect().nothing() + return + } + + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + + spyOn(document.documentElement, 'attachShadow').and.returnValue(null) + + expect(Util.findShadowRoot(div)).toBeNull() + }) + + it('should return null when we do not find a shadow root', () => { + // Only for newer browsers + if (!document.documentElement.attachShadow) { + expect().nothing() + return + } + + spyOn(document, 'getRootNode').and.returnValue(undefined) + + expect(Util.findShadowRoot(document)).toBeNull() + }) + + it('should return the shadow root when found', () => { + // Only for newer browsers + if (!document.documentElement.attachShadow) { + expect().nothing() + return + } + + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const shadowRoot = div.attachShadow({ + mode: 'open' + }) + + expect(Util.findShadowRoot(shadowRoot)).toEqual(shadowRoot) + + shadowRoot.innerHTML = '' + + expect(Util.findShadowRoot(shadowRoot.firstChild)).toEqual(shadowRoot) + }) + }) + + describe('noop', () => { + it('should be a function', () => { + expect(Util.noop).toEqual(jasmine.any(Function)) + }) + }) + + describe('reflow', () => { + it('should return element offset height to force the reflow', () => { + fixtureEl.innerHTML = '
    ' + + const div = fixtureEl.querySelector('div') + const spy = spyOnProperty(div, 'offsetHeight') + Util.reflow(div) + expect(spy).toHaveBeenCalled() + }) + }) + + describe('getjQuery', () => { + const fakejQuery = { trigger() {} } + + beforeEach(() => { + Object.defineProperty(window, 'jQuery', { + value: fakejQuery, + writable: true + }) + }) + + afterEach(() => { + window.jQuery = undefined + }) + + it('should return jQuery object when present', () => { + expect(Util.getjQuery()).toEqual(fakejQuery) + }) + + it('should not return jQuery object when present if data-bs-no-jquery', () => { + document.body.setAttribute('data-bs-no-jquery', '') + + expect(window.jQuery).toEqual(fakejQuery) + expect(Util.getjQuery()).toBeNull() + + document.body.removeAttribute('data-bs-no-jquery') + }) + + it('should not return jQuery if not present', () => { + window.jQuery = undefined + expect(Util.getjQuery()).toBeNull() + }) + }) + + describe('onDOMContentLoaded', () => { + it('should execute callbacks when DOMContentLoaded is fired and should not add more than one listener', () => { + const spy = jasmine.createSpy() + const spy2 = jasmine.createSpy() + + const spyAdd = spyOn(document, 'addEventListener').and.callThrough() + spyOnProperty(document, 'readyState').and.returnValue('loading') + + Util.onDOMContentLoaded(spy) + Util.onDOMContentLoaded(spy2) + + document.dispatchEvent(new Event('DOMContentLoaded', { + bubbles: true, + cancelable: true + })) + + expect(spy).toHaveBeenCalled() + expect(spy2).toHaveBeenCalled() + expect(spyAdd).toHaveBeenCalledTimes(1) + }) + + it('should execute callback if readyState is not "loading"', () => { + const spy = jasmine.createSpy() + Util.onDOMContentLoaded(spy) + expect(spy).toHaveBeenCalled() + }) + }) + + describe('defineJQueryPlugin', () => { + const fakejQuery = { fn: {} } + + beforeEach(() => { + Object.defineProperty(window, 'jQuery', { + value: fakejQuery, + writable: true + }) + }) + + afterEach(() => { + window.jQuery = undefined + }) + + it('should define a plugin on the jQuery instance', () => { + const pluginMock = Util.noop + pluginMock.NAME = 'test' + pluginMock.jQueryInterface = Util.noop + + Util.defineJQueryPlugin(pluginMock) + expect(fakejQuery.fn.test).toEqual(pluginMock.jQueryInterface) + expect(fakejQuery.fn.test.Constructor).toEqual(pluginMock) + expect(fakejQuery.fn.test.noConflict).toEqual(jasmine.any(Function)) + }) + }) + + describe('execute', () => { + it('should execute if arg is function', () => { + const spy = jasmine.createSpy('spy') + Util.execute(spy) + expect(spy).toHaveBeenCalled() + }) + }) + + describe('executeAfterTransition', () => { + it('should immediately execute a function when waitForTransition parameter is false', () => { + const el = document.createElement('div') + const callbackSpy = jasmine.createSpy('callback spy') + const eventListenerSpy = spyOn(el, 'addEventListener') + + Util.executeAfterTransition(callbackSpy, el, false) + + expect(callbackSpy).toHaveBeenCalled() + expect(eventListenerSpy).not.toHaveBeenCalled() + }) + + it('should execute a function when a transitionend event is dispatched', () => { + const el = document.createElement('div') + const callbackSpy = jasmine.createSpy('callback spy') + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.05s', + transitionDelay: '0s' + }) + + Util.executeAfterTransition(callbackSpy, el) + + el.dispatchEvent(new TransitionEvent('transitionend')) + + expect(callbackSpy).toHaveBeenCalled() + }) + + it('should execute a function after a computed CSS transition duration and there was no transitionend event dispatched', () => { + return new Promise(resolve => { + const el = document.createElement('div') + const callbackSpy = jasmine.createSpy('callback spy') + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.05s', + transitionDelay: '0s' + }) + + Util.executeAfterTransition(callbackSpy, el) + + setTimeout(() => { + expect(callbackSpy).toHaveBeenCalled() + resolve() + }, 70) + }) + }) + + it('should not execute a function a second time after a computed CSS transition duration and if a transitionend event has already been dispatched', () => { + return new Promise(resolve => { + const el = document.createElement('div') + const callbackSpy = jasmine.createSpy('callback spy') + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.05s', + transitionDelay: '0s' + }) + + Util.executeAfterTransition(callbackSpy, el) + + setTimeout(() => { + el.dispatchEvent(new TransitionEvent('transitionend')) + }, 50) + + setTimeout(() => { + expect(callbackSpy).toHaveBeenCalledTimes(1) + resolve() + }, 70) + }) + }) + + it('should not trigger a transitionend event if another transitionend event had already happened', () => { + return new Promise(resolve => { + const el = document.createElement('div') + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.05s', + transitionDelay: '0s' + }) + + Util.executeAfterTransition(noop, el) + + // simulate a event dispatched by the browser + el.dispatchEvent(new TransitionEvent('transitionend')) + + const dispatchSpy = spyOn(el, 'dispatchEvent').and.callThrough() + + setTimeout(() => { + // setTimeout should not have triggered another transitionend event. + expect(dispatchSpy).not.toHaveBeenCalled() + resolve() + }, 70) + }) + }) + + it('should ignore transitionend events from nested elements', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '
    ', + '
    ', + '
    ' + ].join('') + + const outer = fixtureEl.querySelector('.outer') + const nested = fixtureEl.querySelector('.nested') + const callbackSpy = jasmine.createSpy('callback spy') + + spyOn(window, 'getComputedStyle').and.returnValue({ + transitionDuration: '0.05s', + transitionDelay: '0s' + }) + + Util.executeAfterTransition(callbackSpy, outer) + + nested.dispatchEvent(new TransitionEvent('transitionend', { + bubbles: true + })) + + setTimeout(() => { + expect(callbackSpy).not.toHaveBeenCalled() + }, 20) + + setTimeout(() => { + expect(callbackSpy).toHaveBeenCalled() + resolve() + }, 70) + }) + }) + }) + + describe('getNextActiveElement', () => { + it('should return first element if active not exists or not given and shouldGetNext is either true, or false with cycling being disabled', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, '', true, true)).toEqual('a') + expect(Util.getNextActiveElement(array, 'g', true, true)).toEqual('a') + expect(Util.getNextActiveElement(array, '', true, false)).toEqual('a') + expect(Util.getNextActiveElement(array, 'g', true, false)).toEqual('a') + expect(Util.getNextActiveElement(array, '', false, false)).toEqual('a') + expect(Util.getNextActiveElement(array, 'g', false, false)).toEqual('a') + }) + + it('should return last element if active not exists or not given and shouldGetNext is false but cycling is enabled', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, '', false, true)).toEqual('d') + expect(Util.getNextActiveElement(array, 'g', false, true)).toEqual('d') + }) + + it('should return next element or same if is last', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, 'a', true, true)).toEqual('b') + expect(Util.getNextActiveElement(array, 'b', true, true)).toEqual('c') + expect(Util.getNextActiveElement(array, 'd', true, false)).toEqual('d') + }) + + it('should return next element or first, if is last and "isCycleAllowed = true"', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, 'c', true, true)).toEqual('d') + expect(Util.getNextActiveElement(array, 'd', true, true)).toEqual('a') + }) + + it('should return previous element or same if is first', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, 'b', false, true)).toEqual('a') + expect(Util.getNextActiveElement(array, 'd', false, true)).toEqual('c') + expect(Util.getNextActiveElement(array, 'a', false, false)).toEqual('a') + }) + + it('should return next element or first, if is last and "isCycleAllowed = true"', () => { + const array = ['a', 'b', 'c', 'd'] + + expect(Util.getNextActiveElement(array, 'd', false, true)).toEqual('c') + expect(Util.getNextActiveElement(array, 'a', false, true)).toEqual('d') + }) + }) +}) diff --git a/public/assets/libs/bootstrap/js/tests/unit/util/sanitizer.spec.js b/public/assets/libs/bootstrap/js/tests/unit/util/sanitizer.spec.js new file mode 100644 index 0000000..c656aed --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/unit/util/sanitizer.spec.js @@ -0,0 +1,105 @@ +import { DefaultAllowlist, sanitizeHtml } from '../../../src/util/sanitizer' + +describe('Sanitizer', () => { + describe('sanitizeHtml', () => { + it('should return the same on empty string', () => { + const empty = '' + + const result = sanitizeHtml(empty, DefaultAllowlist, null) + + expect(result).toEqual(empty) + }) + + it('should sanitize template by removing tags with XSS', () => { + const template = [ + '
    ', + ' Click me', + ' Some content', + '
    ' + ].join('') + + const result = sanitizeHtml(template, DefaultAllowlist, null) + + expect(result).not.toContain('href="javascript:alert(7)') + }) + + it('should sanitize template and work with multiple regex', () => { + const template = [ + '
    ', + ' Click me', + ' Some content', + '
    ' + ].join('') + + const myDefaultAllowList = DefaultAllowlist + // With the default allow list + let result = sanitizeHtml(template, myDefaultAllowList, null) + + // `data-foo` won't be present + expect(result).not.toContain('data-foo="bar"') + + // Add the following regex too + myDefaultAllowList['*'].push(/^data-foo/) + + result = sanitizeHtml(template, myDefaultAllowList, null) + + expect(result).not.toContain('href="javascript:alert(7)') // This is in the default list + expect(result).toContain('aria-label="This is a link"') // This is in the default list + expect(result).toContain('data-foo="bar"') // We explicitly allow this + }) + + it('should allow aria attributes and safe attributes', () => { + const template = [ + '
    ', + ' Some content', + '
    ' + ].join('') + + const result = sanitizeHtml(template, DefaultAllowlist, null) + + expect(result).toContain('aria-pressed') + expect(result).toContain('class="test"') + }) + + it('should remove tags not in allowlist', () => { + const template = [ + '
    ', + ' ', + '
    ' + ].join('') + + const result = sanitizeHtml(template, DefaultAllowlist, null) + + expect(result).not.toContain(' + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/button.html b/public/assets/libs/bootstrap/js/tests/visual/button.html new file mode 100644 index 0000000..0c54934 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/button.html @@ -0,0 +1,49 @@ + + + + + + + Button + + +
    +

    Button Bootstrap Visual Test

    + + + +

    For checkboxes and radio buttons, ensure that keyboard behavior is functioning correctly.

    +

    Navigate to the checkboxes with the keyboard (generally, using TAB / SHIFT + TAB), and ensure that SPACE toggles the currently focused checkbox. Click on one of the checkboxes using the mouse, ensure that focus was correctly set on the actual checkbox, and that SPACE toggles the checkbox again.

    + +
    + + + +
    + +

    Navigate to the radio button group with the keyboard (generally, using TAB / SHIFT + TAB). If no radio button was initially set to be selected, the first/last radio button should receive focus (depending on whether you navigated "forward" to the group with TAB or "backwards" using SHIFT + TAB). If a radio button was already selected, navigating with the keyboard should set focus to that particular radio button. Only one radio button in a group should receive focus at any given time. Ensure that the selected radio button can be changed by using the and arrow keys. Click on one of the radio buttons with the mouse, ensure that focus was correctly set on the actual radio button, and that and change the selected radio button again.

    + +
    + + + +
    +
    + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/carousel.html b/public/assets/libs/bootstrap/js/tests/visual/carousel.html new file mode 100644 index 0000000..153c866 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/carousel.html @@ -0,0 +1,65 @@ + + + + + + + Carousel + + + +
    +

    Carousel Bootstrap Visual Test

    + +

    The transition duration should be around 2s. Also, the carousel shouldn't slide when its window/tab is hidden. Check the console log.

    + + +
    + + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/collapse.html b/public/assets/libs/bootstrap/js/tests/visual/collapse.html new file mode 100644 index 0000000..2782c56 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/collapse.html @@ -0,0 +1,76 @@ + + + + + + + Collapse + + +
    +

    Collapse Bootstrap Visual Test

    + +
    + + + + +
    +
    + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/dropdown.html b/public/assets/libs/bootstrap/js/tests/visual/dropdown.html new file mode 100644 index 0000000..04cf06d --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/dropdown.html @@ -0,0 +1,205 @@ + + + + + + + Dropdown + + +
    +

    Dropdown Bootstrap Visual Test

    + + + + + +
    +
    + +
    + + + +
    +
    + +
    + + +
    + + +
    +
    + +
    +
    + Dropup split align end + + +
    +
    + + +
    +
    + +
    +
    + Dropend split + + +
    +
    + + +
    + +
    + Dropstart split + + +
    +
    + + +
    +
    +
    + +
    +
    + +
    +
    + +
    +
    +
    + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/modal.html b/public/assets/libs/bootstrap/js/tests/visual/modal.html new file mode 100644 index 0000000..b738d9e --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/modal.html @@ -0,0 +1,275 @@ + + + + + + + Modal + + + + + +
    +

    Modal Bootstrap Visual Test

    + + + + + + + + + + + +

    + + + (See Issue #18365) + +

    + + + +

    + + + + + +

    + + +
    + + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/popover.html b/public/assets/libs/bootstrap/js/tests/visual/popover.html new file mode 100644 index 0000000..73edf99 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/popover.html @@ -0,0 +1,41 @@ + + + + + + + Popover + + +
    +

    Popover Bootstrap Visual Test

    + + + + + + + + + + +
    + + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/scrollspy.html b/public/assets/libs/bootstrap/js/tests/visual/scrollspy.html new file mode 100644 index 0000000..2daa7ab --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/scrollspy.html @@ -0,0 +1,91 @@ + + + + + + + Scrollspy + + + + +
    +

    @fat

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +
    +

    @mdo

    +

    Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +
    +

    one

    +

    Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +
    +

    two

    +

    In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +
    +

    three

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +

    Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.

    +
    +

    Final section

    +

    Ad leggings keytar, brunch id art party dolor labore.

    +
    + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/tab.html b/public/assets/libs/bootstrap/js/tests/visual/tab.html new file mode 100644 index 0000000..4cbc86c --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/tab.html @@ -0,0 +1,223 @@ + + + + + + + Tab + + + +
    +

    Tab Bootstrap Visual Test

    + +

    Tabs without fade

    + + + +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +
    +
    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +
    +
    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +
    +
    + +

    Tabs with fade

    + + + +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +
    +
    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +
    +
    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +
    +
    + +

    Tabs without fade (no initially active pane)

    + + + +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +
    +
    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +
    +
    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +
    +
    + +

    Tabs with fade (no initially active pane)

    + + + +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +

    Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.

    +
    +
    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +
    +
    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +
    +
    + +

    Tabs with nav and using links (with fade)

    + + +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +

    Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.

    +
    +
    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +

    Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.

    +
    +
    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +

    Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.

    +
    +
    + +

    Tabs with list-group (with fade)

    +
    +
    +
    + + + + +
    +
    +
    + +
    +
    +
    + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/toast.html b/public/assets/libs/bootstrap/js/tests/visual/toast.html new file mode 100644 index 0000000..f86926d --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/toast.html @@ -0,0 +1,70 @@ + + + + + + + Toast + + + +
    +

    Toast Bootstrap Visual Test

    + +
    +
    + + +
    +
    +
    + +
    + + + +
    + + + + + diff --git a/public/assets/libs/bootstrap/js/tests/visual/tooltip.html b/public/assets/libs/bootstrap/js/tests/visual/tooltip.html new file mode 100644 index 0000000..1a3b9f2 --- /dev/null +++ b/public/assets/libs/bootstrap/js/tests/visual/tooltip.html @@ -0,0 +1,138 @@ + + + + + + + Tooltip + + + +
    +

    Tooltip Bootstrap Visual Test

    + +

    Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.

    + +
    + +
    +

    + + + + + +

    +
    +
    +

    + + + + +

    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    Test Selector triggered tooltips
    +
    +
    + + +
    + +
    +
    + +
    +
    +
    + + + + + + + + diff --git a/public/assets/libs/bootstrap/package.json b/public/assets/libs/bootstrap/package.json new file mode 100644 index 0000000..049c51b --- /dev/null +++ b/public/assets/libs/bootstrap/package.json @@ -0,0 +1,180 @@ +{ + "name": "bootstrap", + "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", + "version": "5.2.0-beta1", + "config": { + "version_short": "5.2" + }, + "keywords": [ + "css", + "sass", + "mobile-first", + "responsive", + "front-end", + "framework", + "web" + ], + "homepage": "https://getbootstrap.com/", + "author": "The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)", + "contributors": [ + "Twitter, Inc." + ], + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/twbs/bootstrap.git" + }, + "bugs": { + "url": "https://github.com/twbs/bootstrap/issues" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "main": "dist/js/bootstrap.js", + "module": "dist/js/bootstrap.esm.js", + "sass": "scss/bootstrap.scss", + "style": "dist/css/bootstrap.css", + "scripts": { + "start": "npm-run-all --parallel watch docs-serve", + "bundlewatch": "bundlewatch --config .bundlewatch.config.json", + "css": "npm-run-all css-compile css-prefix css-rtl css-minify", + "css-compile": "sass --style expanded --source-map --embed-sources --no-error-css scss/:dist/css/", + "css-rtl": "cross-env NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"dist/css\" --ext \".rtl.css\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*.rtl.css\"", + "css-lint": "npm-run-all --aggregate-output --continue-on-error --parallel css-lint-*", + "css-lint-stylelint": "stylelint \"**/*.{css,scss}\" --cache --cache-location .cache/.stylelintcache --rd", + "css-lint-vars": "fusv scss/ site/assets/scss/", + "css-minify": "npm-run-all --aggregate-output --parallel css-minify-*", + "css-minify-main": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*.css\" \"!dist/css/*.min.css\" \"!dist/css/*rtl*.css\"", + "css-minify-rtl": "cleancss -O1 --format breakWith=lf --with-rebase --source-map --source-map-inline-sources --output dist/css/ --batch --batch-suffix \".min\" \"dist/css/*rtl.css\" \"!dist/css/*.min.css\"", + "css-prefix": "npm-run-all --aggregate-output --parallel css-prefix-*", + "css-prefix-main": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\" \"!dist/css/*.rtl*.css\" \"!dist/css/*.min.css\"", + "css-prefix-examples": "postcss --config build/postcss.config.js --replace \"site/content/**/*.css\"", + "css-prefix-examples-rtl": "cross-env-shell NODE_ENV=RTL postcss --config build/postcss.config.js --dir \"site/content/docs/$npm_package_config_version_short/examples/\" --ext \".rtl.css\" --base \"site/content/docs/$npm_package_config_version_short/examples/\" \"site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.css\" \"!site/content/docs/$npm_package_config_version_short/examples/{blog,carousel,dashboard,cheatsheet}/*.rtl.css\"", + "js": "npm-run-all js-compile js-minify", + "js-compile": "npm-run-all --aggregate-output --parallel js-compile-*", + "js-compile-standalone": "rollup --environment BUNDLE:false --config build/rollup.config.js --sourcemap", + "js-compile-standalone-esm": "rollup --environment ESM:true,BUNDLE:false --config build/rollup.config.js --sourcemap", + "js-compile-bundle": "rollup --environment BUNDLE:true --config build/rollup.config.js --sourcemap", + "js-compile-plugins": "node build/build-plugins.js", + "js-lint": "eslint --cache --cache-location .cache/.eslintcache --report-unused-disable-directives .", + "js-minify": "npm-run-all --aggregate-output --parallel js-minify-*", + "js-minify-standalone": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.js.map,includeSources,url=bootstrap.min.js.map\" --output dist/js/bootstrap.min.js dist/js/bootstrap.js", + "js-minify-standalone-esm": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.esm.js.map,includeSources,url=bootstrap.esm.min.js.map\" --output dist/js/bootstrap.esm.min.js dist/js/bootstrap.esm.js", + "js-minify-bundle": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/js/bootstrap.bundle.js.map,includeSources,url=bootstrap.bundle.min.js.map\" --output dist/js/bootstrap.bundle.min.js dist/js/bootstrap.bundle.js", + "js-test": "npm-run-all --aggregate-output --parallel js-test-karma js-test-jquery js-test-integration-*", + "js-debug": "cross-env DEBUG=true npm run js-test-karma", + "js-test-karma": "karma start js/tests/karma.conf.js", + "js-test-integration-bundle": "rollup --config js/tests/integration/rollup.bundle.js", + "js-test-integration-modularity": "rollup --config js/tests/integration/rollup.bundle-modularity.js", + "js-test-cloud": "cross-env BROWSERSTACK=true npm run js-test-karma", + "js-test-jquery": "cross-env JQUERY=true npm run js-test-karma", + "lint": "npm-run-all --aggregate-output --continue-on-error --parallel js-lint css-lint lockfile-lint", + "docs": "npm-run-all docs-build docs-lint", + "docs-build": "hugo --cleanDestinationDir", + "docs-compile": "npm run docs-build", + "docs-vnu": "node build/vnu-jar.js", + "docs-lint": "npm run docs-vnu", + "docs-serve": "hugo server --port 9001 --disableFastRender", + "docs-serve-only": "npx sirv-cli _site --port 9001", + "lockfile-lint": "lockfile-lint --allowed-hosts npm --allowed-schemes https: --empty-hostname false --type npm --path package-lock.json", + "update-deps": "ncu -u -x globby,karma-browserstack-launcher,karma-rollup-preprocessor && echo Manually update site/assets/js/vendor", + "release": "npm-run-all dist release-sri docs-build release-zip*", + "release-sri": "node build/generate-sri.js", + "release-version": "node build/change-version.js", + "release-zip": "cross-env-shell \"rm -rf bootstrap-$npm_package_version-dist && cp -r dist/ bootstrap-$npm_package_version-dist && zip -r9 bootstrap-$npm_package_version-dist.zip bootstrap-$npm_package_version-dist && rm -rf bootstrap-$npm_package_version-dist\"", + "release-zip-examples": "node build/zip-examples.js", + "dist": "npm-run-all --aggregate-output --parallel css js", + "test": "npm-run-all lint dist js-test docs-build docs-lint", + "netlify": "cross-env-shell HUGO_BASEURL=$DEPLOY_PRIME_URL npm-run-all dist release-sri docs-build", + "watch": "npm-run-all --parallel watch-*", + "watch-css-main": "nodemon --watch scss/ --ext scss --exec \"npm-run-all css-lint css-compile css-prefix\"", + "watch-css-dist": "nodemon --watch dist/css/ --ext css --ignore \"dist/css/*.rtl.*\" --exec \"npm run css-rtl\"", + "watch-css-docs": "nodemon --watch site/assets/scss/ --ext scss --exec \"npm run css-lint\"", + "watch-js-main": "nodemon --watch js/src/ --ext js --exec \"npm-run-all js-lint js-compile\"", + "watch-js-docs": "nodemon --watch site/assets/js/ --ext js --exec \"npm run js-lint\"" + }, + "peerDependencies": { + "@popperjs/core": "^2.11.5" + }, + "devDependencies": { + "@babel/cli": "^7.17.10", + "@babel/core": "^7.17.10", + "@babel/preset-env": "^7.17.10", + "@popperjs/core": "^2.11.5", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^22.0.0", + "@rollup/plugin-node-resolve": "^13.3.0", + "@rollup/plugin-replace": "^4.0.0", + "autoprefixer": "^10.4.7", + "bundlewatch": "^0.3.3", + "clean-css-cli": "^5.6.0", + "cross-env": "^7.0.3", + "eslint": "^8.15.0", + "eslint-config-xo": "^0.40.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-markdown": "^2.2.1", + "eslint-plugin-unicorn": "^42.0.0", + "find-unused-sass-variables": "^4.0.4", + "globby": "^11.1.0", + "hammer-simulator": "0.0.1", + "hugo-bin": "^0.86.0", + "ip": "^2.0.0", + "jquery": "^3.6.0", + "karma": "^6.3.20", + "karma-browserstack-launcher": "1.4.0", + "karma-chrome-launcher": "^3.1.1", + "karma-coverage-istanbul-reporter": "^3.0.3", + "karma-detect-browsers": "^2.3.3", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^5.0.1", + "karma-jasmine-html-reporter": "^1.7.0", + "karma-rollup-preprocessor": "7.0.7", + "lockfile-lint": "^4.7.4", + "nodemon": "^2.0.16", + "npm-run-all": "^4.1.5", + "postcss": "^8.4.13", + "postcss-cli": "^9.1.0", + "rollup": "^2.72.1", + "rollup-plugin-istanbul": "^3.0.0", + "rtlcss": "^3.5.0", + "sass": "^1.51.0", + "shelljs": "^0.8.5", + "stylelint": "^14.8.2", + "stylelint-config-twbs-bootstrap": "^3.0.1", + "terser": "^5.13.1", + "vnu-jar": "21.10.12" + }, + "files": [ + "dist/{css,js}/*.{css,js,map}", + "js/{src,dist}/**/*.{js,map}", + "scss/**/*.scss" + ], + "hugo-bin": { + "buildTags": "extended" + }, + "jspm": { + "registry": "npm", + "main": "js/bootstrap", + "directories": { + "lib": "dist" + }, + "shim": { + "js/bootstrap": { + "deps": [ + "@popperjs/core" + ] + } + }, + "dependencies": {}, + "peerDependencies": { + "@popperjs/core": "^2.11.5" + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_accordion.scss b/public/assets/libs/bootstrap/scss/_accordion.scss new file mode 100644 index 0000000..75588a5 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_accordion.scss @@ -0,0 +1,158 @@ +// +// Base styles +// + +.accordion { + // scss-docs-start accordion-css-vars + --#{$prefix}accordion-color: #{$accordion-color}; + --#{$prefix}accordion-bg: #{$accordion-bg}; + --#{$prefix}accordion-transition: #{$accordion-transition}; + --#{$prefix}accordion-border-color: #{$accordion-border-color}; + --#{$prefix}accordion-border-width: #{$accordion-border-width}; + --#{$prefix}accordion-border-radius: #{$accordion-border-radius}; + --#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius}; + --#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x}; + --#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y}; + --#{$prefix}accordion-btn-color: #{$accordion-button-color}; + --#{$prefix}accordion-btn-bg: #{$accordion-button-bg}; + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)}; + --#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width}; + --#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform}; + --#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)}; + --#{$prefix}accordion-btn-focus-border-color: #{$accordion-button-focus-border-color}; + --#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow}; + --#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x}; + --#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y}; + --#{$prefix}accordion-active-color: #{$accordion-button-active-color}; + --#{$prefix}accordion-active-bg: #{$accordion-button-active-bg}; + // scss-docs-end accordion-css-vars +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x); + @include font-size($font-size-base); + color: var(--#{$prefix}accordion-btn-color); + text-align: left; // Reset button style + background-color: var(--#{$prefix}accordion-btn-bg); + border: 0; + @include border-radius(0); + overflow-anchor: none; + @include transition(var(--#{$prefix}accordion-transition)); + + &:not(.collapsed) { + color: var(--#{$prefix}accordion-active-color); + background-color: var(--#{$prefix}accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list + + &::after { + background-image: var(--#{$prefix}accordion-btn-active-icon); + transform: var(--#{$prefix}accordion-btn-icon-transform); + } + } + + // Accordion icon + &::after { + flex-shrink: 0; + width: var(--#{$prefix}accordion-btn-icon-width); + height: var(--#{$prefix}accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--#{$prefix}accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--#{$prefix}accordion-btn-icon-width); + @include transition(var(--#{$prefix}accordion-btn-icon-transition)); + } + + &:hover { + z-index: 2; + } + + &:focus { + z-index: 3; + border-color: var(--#{$prefix}accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow); + } +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--#{$prefix}accordion-color); + background-color: var(--#{$prefix}accordion-bg); + border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color); + + &:first-of-type { + @include border-top-radius(var(--#{$prefix}accordion-border-radius)); + + .accordion-button { + @include border-top-radius(var(--#{$prefix}accordion-inner-border-radius)); + } + } + + &:not(:first-of-type) { + border-top: 0; + } + + // Only set a border-radius on the last item if the accordion is collapsed + &:last-of-type { + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); + + .accordion-button { + &.collapsed { + @include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius)); + } + } + + .accordion-collapse { + @include border-bottom-radius(var(--#{$prefix}accordion-border-radius)); + } + } +} + +.accordion-body { + padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x); +} + + +// Flush accordion items +// +// Remove borders and border-radius to keep accordion items edge-to-edge. + +.accordion-flush { + .accordion-collapse { + border-width: 0; + } + + .accordion-item { + border-right: 0; + border-left: 0; + @include border-radius(0); + + &:first-child { border-top: 0; } + &:last-child { border-bottom: 0; } + + .accordion-button { + &, + &.collapsed { + @include border-radius(0); + } + } + } +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .accordion-button::after { + --#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)}; + --#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)}; + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_alert.scss b/public/assets/libs/bootstrap/scss/_alert.scss new file mode 100644 index 0000000..8647851 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_alert.scss @@ -0,0 +1,68 @@ +// +// Base styles +// + +.alert { + // scss-docs-start alert-css-vars + --#{$prefix}alert-bg: transparent; + --#{$prefix}alert-padding-x: #{$alert-padding-x}; + --#{$prefix}alert-padding-y: #{$alert-padding-y}; + --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom}; + --#{$prefix}alert-color: inherit; + --#{$prefix}alert-border-color: transparent; + --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color); + --#{$prefix}alert-border-radius: #{$alert-border-radius}; + --#{$prefix}alert-link-color: inherit; + // scss-docs-end alert-css-vars + + position: relative; + padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x); + margin-bottom: var(--#{$prefix}alert-margin-bottom); + color: var(--#{$prefix}alert-color); + background-color: var(--#{$prefix}alert-bg); + border: var(--#{$prefix}alert-border); + @include border-radius(var(--#{$prefix}alert-border-radius)); +} + +// Headings for larger alerts +.alert-heading { + // Specified to prevent conflicts of changing $headings-color + color: inherit; +} + +// Provide class for links that match alerts +.alert-link { + font-weight: $alert-link-font-weight; + color: var(--#{$prefix}alert-link-color); +} + + +// Dismissible alerts +// +// Expand the right padding and account for the close button's positioning. + +.alert-dismissible { + padding-right: $alert-dismissible-padding-r; + + // Adjust close link position + .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: $stretched-link-z-index + 1; + padding: $alert-padding-y * 1.25 $alert-padding-x; + } +} + + +// scss-docs-start alert-modifiers +// Generate contextual modifier classes for colorizing the alert +@each $state in map-keys($theme-colors) { + .alert-#{$state} { + --#{$prefix}alert-color: var(--#{$prefix}#{$state}-text); + --#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle); + --#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle); + --#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text); + } +} +// scss-docs-end alert-modifiers diff --git a/public/assets/libs/bootstrap/scss/_badge.scss b/public/assets/libs/bootstrap/scss/_badge.scss new file mode 100644 index 0000000..cc3d269 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_badge.scss @@ -0,0 +1,38 @@ +// Base class +// +// Requires one of the contextual, color modifier classes for `color` and +// `background-color`. + +.badge { + // scss-docs-start badge-css-vars + --#{$prefix}badge-padding-x: #{$badge-padding-x}; + --#{$prefix}badge-padding-y: #{$badge-padding-y}; + @include rfs($badge-font-size, --#{$prefix}badge-font-size); + --#{$prefix}badge-font-weight: #{$badge-font-weight}; + --#{$prefix}badge-color: #{$badge-color}; + --#{$prefix}badge-border-radius: #{$badge-border-radius}; + // scss-docs-end badge-css-vars + + display: inline-block; + padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x); + @include font-size(var(--#{$prefix}badge-font-size)); + font-weight: var(--#{$prefix}badge-font-weight); + line-height: 1; + color: var(--#{$prefix}badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + @include border-radius(var(--#{$prefix}badge-border-radius)); + @include gradient-bg(); + + // Empty badges collapse automatically + &:empty { + display: none; + } +} + +// Quick fix for badges in buttons +.btn .badge { + position: relative; + top: -1px; +} diff --git a/public/assets/libs/bootstrap/scss/_breadcrumb.scss b/public/assets/libs/bootstrap/scss/_breadcrumb.scss new file mode 100644 index 0000000..b8252ff --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_breadcrumb.scss @@ -0,0 +1,40 @@ +.breadcrumb { + // scss-docs-start breadcrumb-css-vars + --#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x}; + --#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y}; + --#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom}; + @include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size); + --#{$prefix}breadcrumb-bg: #{$breadcrumb-bg}; + --#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius}; + --#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color}; + --#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x}; + --#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color}; + // scss-docs-end breadcrumb-css-vars + + display: flex; + flex-wrap: wrap; + padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x); + margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom); + @include font-size(var(--#{$prefix}breadcrumb-font-size)); + list-style: none; + background-color: var(--#{$prefix}breadcrumb-bg); + @include border-radius(var(--#{$prefix}breadcrumb-border-radius)); +} + +.breadcrumb-item { + // The separator between breadcrumbs (by default, a forward-slash: "/") + + .breadcrumb-item { + padding-left: var(--#{$prefix}breadcrumb-item-padding-x); + + &::before { + float: left; // Suppress inline spacings and underlining of the separator + padding-right: var(--#{$prefix}breadcrumb-item-padding-x); + color: var(--#{$prefix}breadcrumb-divider-color); + content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"}; + } + } + + &.active { + color: var(--#{$prefix}breadcrumb-item-active-color); + } +} diff --git a/public/assets/libs/bootstrap/scss/_button-group.scss b/public/assets/libs/bootstrap/scss/_button-group.scss new file mode 100644 index 0000000..eb7969a --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_button-group.scss @@ -0,0 +1,142 @@ +// Make the div behave like a button +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; // match .btn alignment given font-size hack above + + > .btn { + position: relative; + flex: 1 1 auto; + } + + // Bring the hover, focused, and "active" buttons to the front to overlay + // the borders properly + > .btn-check:checked + .btn, + > .btn-check:focus + .btn, + > .btn:hover, + > .btn:focus, + > .btn:active, + > .btn.active { + z-index: 1; + } +} + +// Optional: Group multiple button groups together for a toolbar +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + + .input-group { + width: auto; + } +} + +.btn-group { + @include border-radius($btn-border-radius); + + // Prevent double borders when buttons are next to each other + > :not(.btn-check:first-child) + .btn, + > .btn-group:not(:first-child) { + margin-left: calc($btn-border-width * -1); // stylelint-disable-line function-disallowed-list + } + + // Reset rounded corners + > .btn:not(:last-child):not(.dropdown-toggle), + > .btn.dropdown-toggle-split:first-child, + > .btn-group:not(:last-child) > .btn { + @include border-end-radius(0); + } + + // The left radius should be 0 if the button is: + // - the "third or more" child + // - the second child and the previous element isn't `.btn-check` (making it the first child visually) + // - part of a btn-group which isn't the first child + > .btn:nth-child(n + 3), + > :not(.btn-check) + .btn, + > .btn-group:not(:first-child) > .btn { + @include border-start-radius(0); + } +} + +// Sizing +// +// Remix the default button sizing classes into new ones for easier manipulation. + +.btn-group-sm > .btn { @extend .btn-sm; } +.btn-group-lg > .btn { @extend .btn-lg; } + + +// +// Split button dropdowns +// + +.dropdown-toggle-split { + padding-right: $btn-padding-x * .75; + padding-left: $btn-padding-x * .75; + + &::after, + .dropup &::after, + .dropend &::after { + margin-left: 0; + } + + .dropstart &::before { + margin-right: 0; + } +} + +.btn-sm + .dropdown-toggle-split { + padding-right: $btn-padding-x-sm * .75; + padding-left: $btn-padding-x-sm * .75; +} + +.btn-lg + .dropdown-toggle-split { + padding-right: $btn-padding-x-lg * .75; + padding-left: $btn-padding-x-lg * .75; +} + + +// The clickable button for toggling the menu +// Set the same inset shadow as the :active state +.btn-group.show .dropdown-toggle { + @include box-shadow($btn-active-box-shadow); + + // Show no shadow for `.btn-link` since it has no other button styles. + &.btn-link { + @include box-shadow(none); + } +} + + +// +// Vertical button groups +// + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; + + > .btn, + > .btn-group { + width: 100%; + } + + > .btn:not(:first-child), + > .btn-group:not(:first-child) { + margin-top: calc($btn-border-width * -1); // stylelint-disable-line function-disallowed-list + } + + // Reset rounded corners + > .btn:not(:last-child):not(.dropdown-toggle), + > .btn-group:not(:last-child) > .btn { + @include border-bottom-radius(0); + } + + > .btn ~ .btn, + > .btn-group:not(:first-child) > .btn { + @include border-top-radius(0); + } +} diff --git a/public/assets/libs/bootstrap/scss/_buttons.scss b/public/assets/libs/bootstrap/scss/_buttons.scss new file mode 100644 index 0000000..f2c4c13 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_buttons.scss @@ -0,0 +1,207 @@ +// +// Base styles +// + +.btn { + // scss-docs-start btn-css-vars + --#{$prefix}btn-padding-x: #{$btn-padding-x}; + --#{$prefix}btn-padding-y: #{$btn-padding-y}; + --#{$prefix}btn-font-family: #{$btn-font-family}; + @include rfs($btn-font-size, --#{$prefix}btn-font-size); + --#{$prefix}btn-font-weight: #{$btn-font-weight}; + --#{$prefix}btn-line-height: #{$btn-line-height}; + --#{$prefix}btn-color: #{$body-color}; + --#{$prefix}btn-bg: transparent; + --#{$prefix}btn-border-width: #{$btn-border-width}; + --#{$prefix}btn-border-color: transparent; + --#{$prefix}btn-border-radius: #{$btn-border-radius}; + --#{$prefix}btn-hover-border-color: transparent; + --#{$prefix}btn-box-shadow: #{$btn-box-shadow}; + --#{$prefix}btn-disabled-opacity: #{$btn-disabled-opacity}; + --#{$prefix}btn-focus-box-shadow: 0 0 0 #{$btn-focus-width} rgba(var(--#{$prefix}btn-focus-shadow-rgb), .5); + // scss-docs-end btn-css-vars + + display: inline-block; + padding: var(--#{$prefix}btn-padding-y) var(--#{$prefix}btn-padding-x); + font-family: var(--#{$prefix}btn-font-family); + @include font-size(var(--#{$prefix}btn-font-size)); + font-weight: var(--#{$prefix}btn-font-weight); + line-height: var(--#{$prefix}btn-line-height); + color: var(--#{$prefix}btn-color); + text-align: center; + text-decoration: if($link-decoration == none, null, none); + white-space: $btn-white-space; + vertical-align: middle; + cursor: if($enable-button-pointers, pointer, null); + user-select: none; + border: var(--#{$prefix}btn-border-width) solid var(--#{$prefix}btn-border-color); + @include border-radius(var(--#{$prefix}btn-border-radius)); + @include gradient-bg(var(--#{$prefix}btn-bg)); + @include box-shadow(var(--#{$prefix}btn-box-shadow)); + @include transition($btn-transition); + + &:hover { + color: var(--#{$prefix}btn-hover-color); + text-decoration: if($link-hover-decoration == underline, none, null); + background-color: var(--#{$prefix}btn-hover-bg); + border-color: var(--#{$prefix}btn-hover-border-color); + } + + .btn-check + &:hover { + // override for the checkbox/radio buttons + color: var(--#{$prefix}btn-color); + background-color: var(--#{$prefix}btn-bg); + border-color: var(--#{$prefix}btn-border-color); + } + + &:focus-visible { + color: var(--#{$prefix}btn-hover-color); + @include gradient-bg(var(--#{$prefix}btn-hover-bg)); + border-color: var(--#{$prefix}btn-hover-border-color); + outline: 0; + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + + .btn-check:focus-visible + & { + border-color: var(--#{$prefix}btn-hover-border-color); + outline: 0; + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-box-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + + .btn-check:checked + &, + :not(.btn-check) + &:active, + &:first-child:active, + &.active, + &.show { + color: var(--#{$prefix}btn-active-color); + background-color: var(--#{$prefix}btn-active-bg); + // Remove CSS gradients if they're enabled + background-image: if($enable-gradients, none, null); + border-color: var(--#{$prefix}btn-active-border-color); + @include box-shadow(var(--#{$prefix}btn-active-shadow)); + + &:focus-visible { + // Avoid using mixin so we can pass custom focus shadow properly + @if $enable-shadows { + box-shadow: var(--#{$prefix}btn-active-shadow), var(--#{$prefix}btn-focus-box-shadow); + } @else { + box-shadow: var(--#{$prefix}btn-focus-box-shadow); + } + } + } + + &:disabled, + &.disabled, + fieldset:disabled & { + color: var(--#{$prefix}btn-disabled-color); + pointer-events: none; + background-color: var(--#{$prefix}btn-disabled-bg); + background-image: if($enable-gradients, none, null); + border-color: var(--#{$prefix}btn-disabled-border-color); + opacity: var(--#{$prefix}btn-disabled-opacity); + @include box-shadow(none); + } +} + + +// +// Alternate buttons +// + +// scss-docs-start btn-variant-loops +@each $color, $value in $theme-colors { + .btn-#{$color} { + @if $color == "light" { + @include button-variant( + $value, + $value, + $hover-background: shade-color($value, $btn-hover-bg-shade-amount), + $hover-border: shade-color($value, $btn-hover-border-shade-amount), + $active-background: shade-color($value, $btn-active-bg-shade-amount), + $active-border: shade-color($value, $btn-active-border-shade-amount) + ); + } @else if $color == "dark" { + @include button-variant( + $value, + $value, + $hover-background: tint-color($value, $btn-hover-bg-tint-amount), + $hover-border: tint-color($value, $btn-hover-border-tint-amount), + $active-background: tint-color($value, $btn-active-bg-tint-amount), + $active-border: tint-color($value, $btn-active-border-tint-amount) + ); + } @else { + @include button-variant($value, $value); + } + } +} + +@each $color, $value in $theme-colors { + .btn-outline-#{$color} { + @include button-outline-variant($value); + } +} +// scss-docs-end btn-variant-loops + + +// +// Link buttons +// + +// Make a button look and behave like a link +.btn-link { + --#{$prefix}btn-font-weight: #{$font-weight-normal}; + --#{$prefix}btn-color: #{$btn-link-color}; + --#{$prefix}btn-bg: transparent; + --#{$prefix}btn-border-color: transparent; + --#{$prefix}btn-hover-color: #{$btn-link-hover-color}; + --#{$prefix}btn-hover-border-color: transparent; + --#{$prefix}btn-active-color: #{$btn-link-hover-color}; + --#{$prefix}btn-active-border-color: transparent; + --#{$prefix}btn-disabled-color: #{$btn-link-disabled-color}; + --#{$prefix}btn-disabled-border-color: transparent; + --#{$prefix}btn-box-shadow: none; + --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix(color-contrast($primary), $primary, 15%))}; + + text-decoration: $link-decoration; + @if $enable-gradients { + background-image: none; + } + + &:hover, + &:focus-visible { + text-decoration: $link-hover-decoration; + } + + &:focus-visible { + color: var(--#{$prefix}btn-color); + } + + &:hover { + color: var(--#{$prefix}btn-hover-color); + } + + // No need for an active state here +} + + +// +// Button Sizes +// + +.btn-lg { + @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $btn-font-size-lg, $btn-border-radius-lg); +} + +.btn-sm { + @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $btn-font-size-sm, $btn-border-radius-sm); +} diff --git a/public/assets/libs/bootstrap/scss/_card.scss b/public/assets/libs/bootstrap/scss/_card.scss new file mode 100644 index 0000000..70279df --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_card.scss @@ -0,0 +1,238 @@ +// +// Base styles +// + +.card { + // scss-docs-start card-css-vars + --#{$prefix}card-spacer-y: #{$card-spacer-y}; + --#{$prefix}card-spacer-x: #{$card-spacer-x}; + --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y}; + --#{$prefix}card-title-color: #{$card-title-color}; + --#{$prefix}card-subtitle-color: #{$card-subtitle-color}; + --#{$prefix}card-border-width: #{$card-border-width}; + --#{$prefix}card-border-color: #{$card-border-color}; + --#{$prefix}card-border-radius: #{$card-border-radius}; + --#{$prefix}card-box-shadow: #{$card-box-shadow}; + --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius}; + --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y}; + --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x}; + --#{$prefix}card-cap-bg: #{$card-cap-bg}; + --#{$prefix}card-cap-color: #{$card-cap-color}; + --#{$prefix}card-height: #{$card-height}; + --#{$prefix}card-color: #{$card-color}; + --#{$prefix}card-bg: #{$card-bg}; + --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding}; + --#{$prefix}card-group-margin: #{$card-group-margin}; + // scss-docs-end card-css-vars + + position: relative; + display: flex; + flex-direction: column; + min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106 + height: var(--#{$prefix}card-height); + word-wrap: break-word; + background-color: var(--#{$prefix}card-bg); + background-clip: border-box; + border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + @include border-radius(var(--#{$prefix}card-border-radius)); + @include box-shadow(var(--#{$prefix}card-box-shadow)); + + > hr { + margin-right: 0; + margin-left: 0; + } + + > .list-group { + border-top: inherit; + border-bottom: inherit; + + &:first-child { + border-top-width: 0; + @include border-top-radius(var(--#{$prefix}card-inner-border-radius)); + } + + &:last-child { + border-bottom-width: 0; + @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius)); + } + } + + // Due to specificity of the above selector (`.card > .list-group`), we must + // use a child selector here to prevent double borders. + > .card-header + .list-group, + > .list-group + .card-footer { + border-top: 0; + } +} + +.card-body { + // Enable `flex-grow: 1` for decks and groups so that card blocks take up + // as much space as possible, ensuring footers are aligned to the bottom. + flex: 1 1 auto; + padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x); + color: var(--#{$prefix}card-color); +} + +.card-title { + margin-bottom: var(--#{$prefix}card-title-spacer-y); + color: var(--#{$prefix}card-title-color); +} + +.card-subtitle { + margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list + margin-bottom: 0; + color: var(--#{$prefix}card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link { + &:hover { + text-decoration: if($link-hover-decoration == underline, none, null); + } + + + .card-link { + margin-left: var(--#{$prefix}card-spacer-x); + } +} + +// +// Optional textual caps +// + +.card-header { + padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x); + margin-bottom: 0; // Removes the default margin-bottom of + color: var(--#{$prefix}card-cap-color); + background-color: var(--#{$prefix}card-cap-bg); + border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + + &:first-child { + @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0); + } +} + +.card-footer { + padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x); + color: var(--#{$prefix}card-cap-color); + background-color: var(--#{$prefix}card-cap-bg); + border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color); + + &:last-child { + @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius)); + } +} + + +// +// Header navs +// + +.card-header-tabs { + margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list + margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + border-bottom: 0; + + .nav-link.active { + background-color: var(--#{$prefix}card-bg); + border-bottom-color: var(--#{$prefix}card-bg); + } +} + +.card-header-pills { + margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list + margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list +} + +// Card image +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--#{$prefix}card-img-overlay-padding); + @include border-radius(var(--#{$prefix}card-inner-border-radius)); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch +} + +.card-img, +.card-img-top { + @include border-top-radius(var(--#{$prefix}card-inner-border-radius)); +} + +.card-img, +.card-img-bottom { + @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius)); +} + + +// +// Card groups +// + +.card-group { + // The child selector allows nested `.card` within `.card-group` + // to display properly. + > .card { + margin-bottom: var(--#{$prefix}card-group-margin); + } + + @include media-breakpoint-up(sm) { + display: flex; + flex-flow: row wrap; + // The child selector allows nested `.card` within `.card-group` + // to display properly. + > .card { + // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4 + flex: 1 0 0%; + margin-bottom: 0; + + + .card { + margin-left: 0; + border-left: 0; + } + + // Handle rounded corners + @if $enable-rounded { + &:not(:last-child) { + @include border-end-radius(0); + + .card-img-top, + .card-header { + // stylelint-disable-next-line property-disallowed-list + border-top-right-radius: 0; + } + .card-img-bottom, + .card-footer { + // stylelint-disable-next-line property-disallowed-list + border-bottom-right-radius: 0; + } + } + + &:not(:first-child) { + @include border-start-radius(0); + + .card-img-top, + .card-header { + // stylelint-disable-next-line property-disallowed-list + border-top-left-radius: 0; + } + .card-img-bottom, + .card-footer { + // stylelint-disable-next-line property-disallowed-list + border-bottom-left-radius: 0; + } + } + } + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_carousel.scss b/public/assets/libs/bootstrap/scss/_carousel.scss new file mode 100644 index 0000000..7f28061 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_carousel.scss @@ -0,0 +1,238 @@ +// Notes on the classes: +// +// 1. .carousel.pointer-event should ideally be pan-y (to allow for users to scroll vertically) +// even when their scroll action started on a carousel, but for compatibility (with Firefox) +// we're preventing all actions instead +// 2. The .carousel-item-start and .carousel-item-end is used to indicate where +// the active slide is heading. +// 3. .active.carousel-item is the current slide. +// 4. .active.carousel-item-start and .active.carousel-item-end is the current +// slide in its in-transition state. Only one of these occurs at a time. +// 5. .carousel-item-next.carousel-item-start and .carousel-item-prev.carousel-item-end +// is the upcoming slide in transition. + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; + @include clearfix(); +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + @include transition($carousel-transition); +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + + +// +// Alternate transitions +// + +.carousel-fade { + .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; + } + + .carousel-item.active, + .carousel-item-next.carousel-item-start, + .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; + } + + .active.carousel-item-start, + .active.carousel-item-end { + z-index: 0; + opacity: 0; + @include transition(opacity 0s $carousel-transition-duration); + } +} + + +// +// Left/right controls for nav +// + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + // Use flex for alignment (1-3) + display: flex; // 1. allow flex styles + align-items: center; // 2. vertically center contents + justify-content: center; // 3. horizontally center contents + width: $carousel-control-width; + padding: 0; + color: $carousel-control-color; + text-align: center; + background: none; + border: 0; + opacity: $carousel-control-opacity; + @include transition($carousel-control-transition); + + // Hover/focus state + &:hover, + &:focus { + color: $carousel-control-color; + text-decoration: none; + outline: 0; + opacity: $carousel-control-hover-opacity; + } +} +.carousel-control-prev { + left: 0; + background-image: if($enable-gradients, linear-gradient(90deg, rgba($black, .25), rgba($black, .001)), null); +} +.carousel-control-next { + right: 0; + background-image: if($enable-gradients, linear-gradient(270deg, rgba($black, .25), rgba($black, .001)), null); +} + +// Icons for within +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: $carousel-control-icon-width; + height: $carousel-control-icon-width; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: escape-svg($carousel-control-prev-icon-bg); +} +.carousel-control-next-icon { + background-image: escape-svg($carousel-control-next-icon-bg); +} + +// Optional indicator pips/controls +// +// Add a container (such as a list) with the following class and add an item (ideally a focusable control, +// like a button) with data-bs-target for each slide your carousel holds. + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + // Use the .carousel-control's width as margin so we don't overlay those + margin-right: $carousel-control-width; + margin-bottom: 1rem; + margin-left: $carousel-control-width; + list-style: none; + + [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: $carousel-indicator-width; + height: $carousel-indicator-height; + padding: 0; + margin-right: $carousel-indicator-spacer; + margin-left: $carousel-indicator-spacer; + text-indent: -999px; + cursor: pointer; + background-color: $carousel-indicator-active-bg; + background-clip: padding-box; + border: 0; + // Use transparent borders to increase the hit area by 10px on top and bottom. + border-top: $carousel-indicator-hit-area-height solid transparent; + border-bottom: $carousel-indicator-hit-area-height solid transparent; + opacity: $carousel-indicator-opacity; + @include transition($carousel-indicator-transition); + } + + .active { + opacity: $carousel-indicator-active-opacity; + } +} + + +// Optional captions +// +// + +.carousel-caption { + position: absolute; + right: (100% - $carousel-caption-width) * .5; + bottom: $carousel-caption-spacer; + left: (100% - $carousel-caption-width) * .5; + padding-top: $carousel-caption-padding-y; + padding-bottom: $carousel-caption-padding-y; + color: $carousel-caption-color; + text-align: center; +} + +// Dark mode carousel + +@mixin carousel-dark() { + .carousel-control-prev-icon, + .carousel-control-next-icon { + filter: $carousel-dark-control-icon-filter; + } + + .carousel-indicators [data-bs-target] { + background-color: $carousel-dark-indicator-active-bg; + } + + .carousel-caption { + color: $carousel-dark-caption-color; + } +} + +.carousel-dark { + @include carousel-dark(); +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .carousel { + @include carousel-dark(); + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_close.scss b/public/assets/libs/bootstrap/scss/_close.scss new file mode 100644 index 0000000..503a105 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_close.scss @@ -0,0 +1,61 @@ +// Transparent background and border properties included for button version. +// iOS requires the button element instead of an anchor tag. +// If you want the anchor version, it requires `href="#"`. +// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile + +.btn-close { + --#{$prefix}btn-close-color: #{$btn-close-color}; + --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) }; + --#{$prefix}btn-close-opacity: #{$btn-close-opacity}; + --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity}; + --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow}; + --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity}; + --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity}; + --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter}; + + box-sizing: content-box; + width: $btn-close-width; + height: $btn-close-height; + padding: $btn-close-padding-y $btn-close-padding-x; + color: var(--#{$prefix}btn-close-color); + background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements + border: 0; // for button elements + @include border-radius(); + opacity: var(--#{$prefix}btn-close-opacity); + + // Override 's hover style + &:hover { + color: var(--#{$prefix}btn-close-color); + text-decoration: none; + opacity: var(--#{$prefix}btn-close-hover-opacity); + } + + &:focus { + outline: 0; + box-shadow: var(--#{$prefix}btn-close-focus-shadow); + opacity: var(--#{$prefix}btn-close-focus-opacity); + } + + &:disabled, + &.disabled { + pointer-events: none; + user-select: none; + opacity: var(--#{$prefix}btn-close-disabled-opacity); + } +} + +@mixin btn-close-white() { + filter: var(--#{$prefix}btn-close-white-filter); +} + +.btn-close-white { + @include btn-close-white(); +} + +@if $enable-dark-mode { + @include color-mode(dark) { + .btn-close { + @include btn-close-white(); + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_containers.scss b/public/assets/libs/bootstrap/scss/_containers.scss new file mode 100644 index 0000000..83b3138 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_containers.scss @@ -0,0 +1,41 @@ +// Container widths +// +// Set the container width, and override it for fixed navbars in media queries. + +@if $enable-container-classes { + // Single container class with breakpoint max-widths + .container, + // 100% wide container at all breakpoints + .container-fluid { + @include make-container(); + } + + // Responsive containers that are 100% wide until a breakpoint + @each $breakpoint, $container-max-width in $container-max-widths { + .container-#{$breakpoint} { + @extend .container-fluid; + } + + @include media-breakpoint-up($breakpoint, $grid-breakpoints) { + %responsive-container-#{$breakpoint} { + max-width: $container-max-width; + } + + // Extend each breakpoint which is smaller or equal to the current breakpoint + $extend-breakpoint: true; + + @each $name, $width in $grid-breakpoints { + @if ($extend-breakpoint) { + .container#{breakpoint-infix($name, $grid-breakpoints)} { + @extend %responsive-container-#{$breakpoint}; + } + + // Once the current breakpoint is reached, stop extending + @if ($breakpoint == $name) { + $extend-breakpoint: false; + } + } + } + } + } +} diff --git a/public/assets/libs/bootstrap/scss/_dropdown.scss b/public/assets/libs/bootstrap/scss/_dropdown.scss new file mode 100644 index 0000000..587ebb4 --- /dev/null +++ b/public/assets/libs/bootstrap/scss/_dropdown.scss @@ -0,0 +1,250 @@ +// The dropdown wrapper (`
    `) +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; + + // Generate the caret automatically + @include caret(); +} + +// The dropdown menu +.dropdown-menu { + // scss-docs-start dropdown-css-vars + --#{$prefix}dropdown-zindex: #{$zindex-dropdown}; + --#{$prefix}dropdown-min-width: #{$dropdown-min-width}; + --#{$prefix}dropdown-padding-x: #{$dropdown-padding-x}; + --#{$prefix}dropdown-padding-y: #{$dropdown-padding-y}; + --#{$prefix}dropdown-spacer: #{$dropdown-spacer}; + @include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size); + --#{$prefix}dropdown-color: #{$dropdown-color}; + --#{$prefix}dropdown-bg: #{$dropdown-bg}; + --#{$prefix}dropdown-border-color: #{$dropdown-border-color}; + --#{$prefix}dropdown-border-radius: #{$dropdown-border-radius}; + --#{$prefix}dropdown-border-width: #{$dropdown-border-width}; + --#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius}; + --#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg}; + --#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y}; + --#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow}; + --#{$prefix}dropdown-link-color: #{$dropdown-link-color}; + --#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color}; + --#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg}; + --#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color}; + --#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg}; + --#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color}; + --#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x}; + --#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y}; + --#{$prefix}dropdown-header-color: #{$dropdown-header-color}; + --#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x}; + --#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y}; + // scss-docs-end dropdown-css-vars + + position: absolute; + z-index: var(--#{$prefix}dropdown-zindex); + display: none; // none by default, but block on "open" of the menu + min-width: var(--#{$prefix}dropdown-min-width); + padding: var(--#{$prefix}dropdown-padding-y) var(--#{$prefix}dropdown-padding-x); + margin: 0; // Override default margin of ul + @include font-size(var(--#{$prefix}dropdown-font-size)); + color: var(--#{$prefix}dropdown-color); + text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer) + list-style: none; + background-color: var(--#{$prefix}dropdown-bg); + background-clip: padding-box; + border: var(--#{$prefix}dropdown-border-width) solid var(--#{$prefix}dropdown-border-color); + @include border-radius(var(--#{$prefix}dropdown-border-radius)); + @include box-shadow(var(--#{$prefix}dropdown-box-shadow)); + + &[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--#{$prefix}dropdown-spacer); + } + + @if $dropdown-padding-y == 0 { + > .dropdown-item:first-child, + > li:first-child .dropdown-item { + @include border-top-radius(var(--#{$prefix}dropdown-inner-border-radius)); + } + > .dropdown-item:last-child, + > li:last-child .dropdown-item { + @include border-bottom-radius(var(--#{$prefix}dropdown-inner-border-radius)); + } + + } +} + +// scss-docs-start responsive-breakpoints +// We deliberately hardcode the `bs-` prefix because we check +// this custom property in JS to determine Popper's positioning + +@each $breakpoint in map-keys($grid-breakpoints) { + @include media-breakpoint-up($breakpoint) { + $infix: breakpoint-infix($breakpoint, $grid-breakpoints); + + .dropdown-menu#{$infix}-start { + --bs-position: start; + + &[data-bs-popper] { + right: auto; + left: 0; + } + } + + .dropdown-menu#{$infix}-end { + --bs-position: end; + + &[data-bs-popper] { + right: 0; + left: auto; + } + } + } +} +// scss-docs-end responsive-breakpoints + +// Allow for dropdowns to go bottom up (aka, dropup-menu) +// Just add .dropup after the standard .dropdown class and you're set. +.dropup { + .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(up); + } +} + +.dropend { + .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(end); + &::after { + vertical-align: 0; + } + } +} + +.dropstart { + .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--#{$prefix}dropdown-spacer); + } + + .dropdown-toggle { + @include caret(start); + &::before { + vertical-align: 0; + } + } +} + + +// Dividers (basically an `
    `) within the dropdown +.dropdown-divider { + height: 0; + margin: var(--#{$prefix}dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--#{$prefix}dropdown-divider-bg); + opacity: 1; // Revisit in v6 to de-dupe styles that conflict with
    element +} + +// Links, buttons, and more within the dropdown menu +// +// `

    Pq&0W`!U6Uh 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Ͱ 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 z%0AaVN+NzFn0SkyoRk3fVIW@?&|1>S>4MTWd&pMLj8r`%g2J+rrv-q^shYSGl0&wN z!GeAW8sfMUXQiX8(pK9|&Md^$NSH6^8XLUO_xi)Bly^{)u0h`Y+BVny89UG;nf zIWBF>9?l#BAYQDFcs(IWnvrl4N{=uv?4ZcjLBFtc${x{mD=SR!=#v~c<4U*be@C_v^ZI*M!!X`6R^K^*gVyKKSpRUAKyl3lyQh11^!h47Q}&-tJHVgbt9 z2jUo4mRvCD8de^3OBn*3oWFd=NdJ#=psc!C-HJ4Mx=IS$k-#{UxZH3E)-LE8AlzJB zMJsF&hl(+ewdNlW41O6_clZ)H(SI}X5@qdeB0>Y>j>5xeU&=(AVqR|W2wyKBKgtE> zGX!oaBvdIFTCNiB!Cu-ssR;5w!m)LcK{ysO{p#Hr?pVR;BqBiOrt@}-3^3095!al4 ztp~@coi@K(xv*OZ_G2j8DZNzzE2PDRzqAc@TItYg#WEkXkA zSKG)$TvX2?b5O`6zer|Ys)BQbs-7w*(ph-r^DzKT83n&mHufbX6cmKVa7eS%a6>X< zgN$-oIw-l&|DGL&ZttR>6+f}%yIL#w)uT-&&Y6#f3IPA1 zTITb$R+vY*{MRlpZPlSgcb&;dYCJCY_9Sn3|KZMSOanN;!QCzG*=sAxo5s` z8`;t&we;1p(NNxG$Bd>;fHy?X&y0M7@vek_tVl+&fl|kbVMxX_=tnWLc@ZuhN7}U_ zkB>=T|2wrWS*1nSmEpdx^wX(pV2g)&v^)Prd@#@Fepwc#Vcsw|cHm!`3hDTMpa%73 zvNMLDNI}c*#BvS+G?V*tQ~^Sq?K+aJ$X?*14O(oj8wd@CESMHAgfVMyDayo}p6AG* zb!f%t-&;{3|0^Jw42aMPF}cY^wqVqwx8slm4gl@3Ix7?zF7f3Dhprn@X*---kLTu|4o>BU7^lYbdDCuw+;$_qNKCDBr-l_5IY4ym zlov=giVO0qo$Wh)QGDh=Spvsk`jOooQOeBK$rNZvmNUkF#>D+t?G9JmRFB1XM-Cm7vuCqh zG=^%rIPQ?YDyMd0z@P}UNI))-rudlj@>&nCov2bx&(9q8n&TG~yXQ>-uC;|em#X8n z$Z1kr=D>$eh{wjFX~Q*LoTI=Zd1UNEwi`0`eCN>ISy}cV zsGh?p=LdI!3iBY)+{2?C7>8L!a#cY5 zo-h~q(~?O*dt)hj^le*^?VVL7sY^2y$Amf~%7p8X9J&0Z>DrDpr1{SuR&%sLYXE52 zK((cM?<26>f+A%DEzY%szddLDfthzZg?^NWV|GYkz{3Z5wv9WWNC380`<*L~NIW}8 z>Q~E!Nm!e2h(_;23==*-~ni#r~n!<+%*i04|0~Q;CL4Z zm5wH?Ut>9_cb`yDa7odrOdk}_2FKFYMExN#z`ghddzsm*s*v)0mD9?IcWXya4IG0NTjhld=FqtY)1w#DJe3Xm1jHxCgUDSl_;iWfn^&SD3I)bb zmUX@kn<2ej|EVzv9cx>{3)1{g(btt9+A5JB`dtf(!KU?okg#)`;;t39A9|hOE_3CO zjbsx{YEG(rgr_vL<$y}I6cg+iC(dgAX_xf~9E+FPcPM=Vm$MUNN+@(s5k1$V*$_f% zuWtlwN`;!tI@`Ln=LK=D6+R{kKcidw4QWx0AOL$IFeH3}gjr#Qkv^IwKIgXt{ud*_ z3XdGML#uEgEffO$ZjCEWjl$AXHO{H2u%Ps=*#)ANsQ_%bT6`;%0AqF}zY~M|3nx^7 z_^%{DfL^0G8FdT3=MV!A2WG+2whDbrOh$tuz14hUj>>zg8|WgVb?iXLxfxXk5f_H22V}#UWIB z6*cx(O1-D*jBBa(Kp+vB+0y^vmwM0CfGlefh|=$EDt4g#IrNM%C@5DA4Zr)AUKsia zJd>L17ZT4XbC48itX+t&B%FO6sDU)Pejp4ww(=@_p52pNnDW;!syb|54-mQwMXI^X zJpbsb--yA~xj|Mx=Y4zV1MPxcVH9Q`Jy&BfpcqzAnQKej*)#irq6cnKI^Dx{X4NUwz33ul*$N?ib>Qh z8g7j=x^Wy#*$6Z%9_6fVhZ$)xb>Y4vL)^hPvFZ;zE%(x-7~`WLpc3}=AJ~3vQhiCA zQE1Ln@~-(j@vvLXiR$}9Q^UML7O!>)LQrSeJfGxYV%R_?J4`u*<{y-g=zkyOzRsO@szSZv+nFcs}c0NkpBjQ+12eWto>U6{#+_ zHuqymIHQF)L>=V0vt7hZMIRZ9UmZdQC|+(i>jlRNbq-8!^?9;aL&jCl#rqXe7+uGIw|9uk z@vGO1mvdW{fjb=_pq};JuwEr>7G!xQ--{-#5zhgcjN1D$Se}y}pSr>{1hbO<+J7(A zU9zK9Yw97$bRQzw^^3ru&G;ryo5j~~#iwomSz)p5#Ci~IxRUsV3JW^y7O&AyhM{JO zI*4t4J|h*W#{2Vx1=b~bg1#T-bWU)^E?y#aZ!Gy(B53ZSG&>Fl=sYLf1X74*hmWqK zja0_Jy~wfwHlLJESYhq%6LNqhVqhBzJx71@O(Lnd%vH;%m^^jlvN+Dw(q)>pAH1-! zVpMbaCFj1~VeJ(|68)q}mGK2&xfJ$`8!Xz5%c`QoudBDJ zq_P9-wicUW4$Rb;l;&`%e%xdL{T&-wRp7IaX7hb?slvs3rlH4vNx}mG>|cT9GGl7q zVktYv_Uk%uFomyXICQ*(8t@zZaT*mqZ_$lTUKA23JT#rC-h1y-PHyFgT= z*2jTZM-#boN_^rWyOQZ|Z15;&(Vnp|C-uj8tle%jliswTEZ*)y#w@64nfV8%*Mj@5 z=pM*jWefeBZaI^C0zPeNL%p-<*?@WXjQ3@^>%BiMsgm;CX(}L!PV~)4TUvQ2-6Ni) zm%)myAXYz!zZ@H@W1<2X*ZBIu~je4s3uib>4HjdlX6EZE2+f z(!tL8)bLAsn%*tEV``@WWrKN5c+)d&uhQhTQ`Cb$&ex6alIhl928uf)MpcsbeVyD$ z>dp@iIMT|^cw-u+#Syv!`5}PyC!VkR*kDSDCjY1Rjm`>GF0j^^nmCFa3M499Fsr$2 zq|x1yex*fW*V%)2jE~mXKMwLKk33BMGa{8vYIEo?6onNY0H7F< zbNPe*@g1D5?^{RaW@j?VDgw!^vy8vw^}=sgP3EskU4Pw92K zT3F1HpC8mvMFZrrP*9e_ZH|VH&o7LQI#O9awS3(6?S4_t>PjE|l>$!AG#nfNl?<|W zrX~<$?lT|@)5^oQ8myE&Ma)~Ia@bNwyQvHY)!43E5I%VhFbTfqEt@ z>NG+vPn$U)NXAc6hP3{6iG4`OmnL{1rl3nrVJ{McO%`#W=jF}Yq6?dK@FdR56XDLN zJ6aUOL@tR&H4FZ*1G@rK5)!lD8qCYc2&G3^o2o=JuA|sdv`f~ZjKGOXe1xYi{+S=Q z$bAeV!dI2=&Im)({a4{o`q_H7VUXnzMa77dEYEIrEg_>9_JK{_?0DK72BC)DefwJ$ zISRVNS1MdH!M&ZfRz6{0)lcf=xZlXA#!6^Mc1Ue?>U_NQH2|lX4w$};HYc{?M~A>7 z>?GsEx6A7X0DE7i|FpU3foxz1$nfX0e7u)u<7FW%g1JZbZqK?L?MXYB84}hSz#ZEz z-U@PGWK=UY!?^udpq{reH)C82OZl;P#Ac)C>`7WBzRND=@}CcNniXQiG=I%p`hO0( zT#`ah@l3g6H==>9{kR)x1mSG#?r|JPXBox@E1}gL#PLj%4SG@Uw>>h#LdlAG&iR=b zA@nTLP1(NTSrW5jZxAr>NYYi=?>;k@i0cC{)JM=*`n;!5fCC&yCro;*{V@FbppqZF z)A(_%1QV#aMOm}aG#Phw2w9HB5+I@hj#Vr+uX(5F3)6{XT0&<>BG1GUDdOePf8nMZ z@qIY?#m=dOsMt`)i>-I7Tz^6l3ydJE>Z@H0hUU}NCqWv7@_Q_TMib~KF>^_tO2Oa5 z!Z0E=Fo*@dKBcudJ$CRg2%s?JX)H6$iAjJG83TN7y|lxTiwh{qX|%l-k$PWw&S!NV zw5=WRv-CNds_`Idc&A~s@S;Kzj;4gY$@h78AM_Rh2j+WqK1tb<^>69|K^ z6}38f{|;U5V@z`Gvh@);4ET2eyi@4Dbzcx$01}TCfr_5tXuI#Ag63eK3C2d{GaxlC z973P*fKSq|jm3ZMS>d=}k z%+K>gXh64J)1XB4v3OEFv$~*I?7|00nReNE!aF7SoP3CPDUM?qb#E0*H^b($H6(Yz zME#_0vSnhjO>Kg;%?Gjh7*W;-_ezM`p1AIzp_zTDb||KBY*NY#!BQlVduu@`r6xsNL*Mzwj&b1V9z%XF)6%ZcYjq}rnK-FqV*4iR%m(q(pM zvc)I(Sv^&rAhe!&jbJcBv zYCpRhx2u%Lk9kp6yn#$h^YI3}zATEtF^$Oh^z?hIz8LZ5WjtX?MpoM=aBP!dC%avT zE`<-tsj`@BXHFizB$l&RN_S%)S+Mt zt6M7RtmamN#4b0JAJ|JWvp;WfhV=SfC|NPUB{FUWB+2V7BthgXIy`>POc zcz)T~x=j2B(}BS)bo|9|k~^bv13E@+-o=Mfr#uHedzxkFv)Sa`+w7=p78BzAEPfk} zYQFMY8%`T)gqr8=xQgm*u)A!X&y}Kt2lU_k*1Jpis$jPDH>UUbEw0*lFYoAc#UH;aUaqOF7>R1sL!Wvbcud|x~Gw}P@03citT}i&A{pkfUOy6 z{u*|vA9Y)(9gJ2`Ck8vNAQ#3u`z$?EF$?!hgsS*vzjLlvPBDg-qjuEGIY1ge)eg_j znOdwlG{jy)2kXjS-zYDE3wK}26_P^Uw)mOTxrrR?n{+;%#+X>jv+uMdjClZ(xy}Nw zJ7(~MQ~h+(OgWclrkaaIm?7`t95b;LV-uFVl_o;>NUB{>Kokyg@`cbMk!yoyTI=oR zEV{H`@Z!IztSNptn_dBc+MvmbRD#8!MPT@D)`_x4i3~d=QrvDVW?t>#Lb<5Yt;v#2 z>Dwzm|L<8{n$GMzIQid{4lpkal-=)Y2h#`VN!L-^2Rdwwd)?QPhhSy;*43G7o)Ibb z@}1u(m-|hacwy3Ge{d*w3tfG2U3~TEYlzDAe9P(*W|7X>-qO~kbk%<8mv(Mzo1h_% zBCcc1=7Azas~nZ6j>%&Bqs_^5-jKG)ecW;EI5)1`dWk0m&DUBXK%y?DacdhyJHz#i zIRqcnaI~F2LqSE&ubKznUFOOQ*UW{bkM{H<16TW&%3=*xHMVh{uygNqy?HN&vqc}t zAYOnP#K$;Rd&ujgaIg3{MeW?4z7Y|W z%=*4i&~gND%=Jb)jlPSM7)@PbXTPy^&ZuPO#b8U%l0!ynwK}UgH?O|g*l5h$9l$r( zZ<<6#VQkh~Qph{H3~ZxlR_xnSmGW?W)_(aU8C-0E6;+YIGV^6n`(LMJQCiE(fpPTm z%e(cGSm9}GOw+^!+CtNjWWJMk2^Y)a6If0k3B;+vl7j4=&|h{3501%yl?7BBZh`E! zDO)%RzGQ7<> zbl>XrMOrTgb&Frlv>=y!4aCp*T~m@{;+x*pE%x@2sl>S=*P4}F(>G9T%_U6G5AcmW zKB1(sz4Q#hJ-zADHk3j|{RdgmXh`MM;?{BlmhxRFGLU;E9r-$$x=}#|L7_%cGlR{z z;rz*^{01^~v_4?`F35BhvFR6SO=esGYIK^2hwzO$VnFRp#o5d8GU?nEtKHk1{_?lw z^tjlpG_j6Kmi>aC1FxEImd0l40x+buO1MO?_p1S;?gZ`7zA+#x*=8XI_MEdtrX+_D zbyjHjOP5OyAjpj|S*i-!8_HT_?-dX2kQJ(#)W)Dci<*SH3NhN!JS*3nZeEEQKCL$b zo$5Dv=$!$1+#xBVdhiF1-epg|?^+IwIynIFQMnh`wa-4S-SSaDQwuqPDMqKfGc0Qt z7TOQawAF@VBbq6g5Br-dNN)!Cr^jLNX(;t!Gibz>C8iEYPs+d=^3pm0hv++eKHx*^ zf`<%vSTZ^ZLV88rzy}eS8WgFl9z%mwnTcYfF~&+H;k86~Jg0}MM5NcNIEg7hZff1u zs)($6*X68V*T;-Oo6Qzr)_MO5>&Ar<8$|}*eqyvSl0unhWAR*hTr_ufpoa_OT&n~y&3aH}uAX?VCxoJ#weTe0tZquYRaTfnA5O$Y2Se!q#u8P~`z*o4IS^+hrN&lX=j;Tpx>ak4* zA3OB;vEojTBP$&?uP-s#I~N6z5kM9rO>;sFSTC@ScbmpG%0C4b{Qe{M0<=<>NJfNd zGN=EClQvPNW}J=9DZj_VFi*KPO#5wt)M!^Y(h<5=ZDsKj8YeiGN*wlq1hpLv;J6yVbc0{-Xc?Bc)vI4alymR@&v!{A?y zSiSzyH>b`5X=uyE=%h23&I>p?M0Spjr=KNlFaWc8=c4VyoYF#@Z=5UYXGiiD$j8?G zi&WUDRer+H+^R;}*nt1+Nz4;8W1Gby(^KcPi17x;9M2-fhl6GAUnZ$hex$lO74V=mSp&QTQ6290w<7Q|SclC)}z7+8a!behdk~(V>iEmlKr^D7dCK)_+U9N%3?_3w0^mutpyRDLZ7p>!Rk#{Qk2T)awPMEPM0(LTIf zGrlJ%8|mqGQ4|p7{;^z=4@46(cURx$6Yj`N`Hc-m>6=W|X1_IYnP2|Q|*BI0AI$=v(md0A2IY+cemtHd@zB_x1Y6`EATur>vu_IK#CPhO+&u zpRnKRi6G_jjIky%=XnnNl+g9gGYrc;zl}1Fk&p(lY#wJFO&12tV5s#t{%Wcl z3QhskG|ZsR2U6;GQg~XM1D_ys0#KaHW00ryV}P3#_th?$KUJve#!1JEzQj~7f?ozo z?a&H!qS2O7kH#E}!|_-gTT?{`RX~L~77vs0@%0{X$Nr+W>Pc>R85-*obQcKwo(MBWGFm5Qu_deVZQWq z8Yit$u?H!uGAL#tPOMqpRU;!@16EOeA?g}~qLw&Qbs1$()KByN>WL%NJTZaPq=+t~ z1fQ*TYwxJooN(R^MCDqOE=$cbGZRUe()(g40|oJJxxEmeWG2l@zpn!iL}=G>^wtUW z%j~U_vmd8)Cp6HnTt_%TIO_31aOP*T>)Fk3dFqLr-v zrU7;iUiyPbOu=Y_s(n5UgIfE)FBqoP#5C<{UpT*a9u8f7M>WOY2BAzZokt0rY zg=xp43;j+&jAfz4IwK$!DYZJr3Dwrz4}yQdb7EVL=AG`9q*5bnsf-p&vVA8s*(Y(_ z+5U-dex9%|IV17wwnbw1TM_d1+m&1UYV0-)58HsWmgMfTuc%mEI5P^JUKGTpC6U=& z>{TnE3KhF3=7KoMOwc1DrLn zwDz`7>&$ugvK zcXd%ou2h_6Dt7B?A|mE63#(9=IK)l3%geNAvvW5mg|=5Jk@n_7G?06)aEDNQE# zAURrw4v#^r_NlLl>*)H6lVZe@rq^4YbU-hGd0@>ag{_+)4PRP=5ZA$-h~E4S*&TXg zd)RUj5+2R>^#l~383k9Yzi!)Hxw)UQehbDgB%S-;1l+%4#QbN=6fI~aXq;YK<^bPP zBR-zN!b#>G4gbNFA(--wgYVsDy@&TgVbT`pq~QF*^RL{(Ka^L{40o2HZmE95%lp4J zr%(973akNPsmsi+2W|vrKhX0b%>Trm7r`@;-Pxh3OAazpZ-8<54qS%A1cc+yuZ8Q& zjG{f_Ly$!~RQxUKENS4TxPP$7dxv&G?u){_QByP>O^>b(bVeCu9ADomd(Q|x8? z@4(Z!K2O$&iqjs7{ZwSfADYC>l}5dF$gzcGgb#&VZp)cj8!2uX1zl%w&wJkYY*GoE zrTm&*$)ph0@XBLex1^71V@J};jah=}rSf(?j`sGwJz@WSN%TufI5Q))bXuA~r;K2+ z#`CHTS6a=wuDZrz-ei?&WA~-45S`Wp;V!_Ow{~uPRhg|_2)->Tv-ct0;t$6l9Qtan z@gdxH6a00|BsG)tU*0Fc@V`veG&Y&MeR_+U+}3;UrfCQ+C-9dGp&97%X+VnHV8x*L+#y;8#c;6#3-h=1o5T5nE zPjvyp&|k)_dpNqNWv1hsjhJLVBJn(MVM(s;U%olDt;ZpkqEsGSsT+Si#(T{uWyJcR zjXI+5718ao8D;e?hb*#2|K!R^DwUjGH?I4o4U+XzeUu7r9WRHy&GFDnuX$j#{TPYH z9ktmDznS&!troQoEkV!#S<1-!iuO zSwqTn!p9eS!|e%^xs_}`#Mj3r&K&oXO4$P% z@Xi`YaN8@&Hg4u?dat$`;mc_3715q?-rY0Gi!u|_dL(vucD!EE*U{NVSO%BH zvCa3I23G|2un3#wWcu)C}58(#B^YLo;gaUj>kpqNUkDufBN0avjR^JVsu&|2T~k?BC2e z-0n=K{8sR;del@5A0#bqq{Z8<3@L*}7xFbui>OR2TlNiX}MEhTwa)f+L97ttH*Dk~#Zb@Kb2 zCo=B@Ju#F)4Pqu`xcxMm?c!TrSF|LB;vttrj!eJf@4h4}{lcs!aIFsj^Lan;Wcm*A z+*+!+(^h!s$gOVp!hWKZ^nsN7Y-iXgrq@Gsh~rd_rm3FiC-ZITJy^*~dWe_^aR-v z7ct4$Mj8NsK_44p8e#u`mZjc)k3G)A0u)(9yQ7u+%7c> z>F)Blb^Z)Zdo)sNOV{6dPdyEpU_da2Uy8x?&!i#oH_c9(vpn2metMIJKi;|i*Dkk{ zU+7336!QjvuQaVy1$@7QI)8nhV^(t-O%H@y{kWi_iYMdP0hZf>xSgS)Gx6jjbQ*No zRNi?k8j;P8n8?d~d^a?jGoxGqY{OXwY2HwydamR08CFqnR5`cLjO{_S54qF6Ng6l@ zm7&?O;KC||zz{g)tRcgbH6ARr^MJ2j}7@`2vLge*q<{h5i zapigMSM`TyJ_l%-^Z=NcWH^TiVas5>e+Y+tG{J0w+G8&=0e z#}jv5J-Z6R`%vAN9dLetp~%Q|a`nqhf-HLE{le}_ud1D|>$!B%!~LCm*O&Qk4KyXe z+uunLlf|;K+zog_f5yYg;Va?wS$E>c3aS1Zj<%4tmiCf|w6N}ArVDEb(Tq5*33KF? z^k89>WWn%>1^R4;IT-)Gsh3MMy%LHwF8+kCOz=B~QCli>sQCTyk4|k^6y-PBN;ltd zpDvIMou$HyPS|1di{$1)ih-IgMxOX65M+BpbOmeCUH!xYke0yph2ljj)vGL+%N+M| z%>svhY29GaGm`R&<(9PoNkF#0xeHH|bmraQPR7t&cG$$+O-aJ!!NA#qv0O}okhW3T zi%Yb!XIkzIxlgalOQ9tE=?xEl%#@%LW2v*J_w^s#0ARulMZlCZI4ri%%g& zf%|*cF%M!N{#i6n;|+*vy~mZ6rb}95ccZuel-0L;IQcx~nRb?T0Ca5U#;SrO!&Llh)QoZiWFI$78> z6PcxY`7x45vI&Bi*m(%_-#>b!53-Dpi(!eZ<+;oR#{Y=jh)4D-b+jK6gb8(AoR~*4PwKznXtA79%?_Ws_J`+$rfA5VC^DNm7brb zl@L)T@c2>rQg%mL#8}e)RN7qF6h?V`UE3!N!on)c?40?T0H9xQKv6`V77L1bu!Uyp zSVB>e!UAdddJhG|7|1VO);wXrs+ls+eOsqTCzNFZ2w=x4%|e~GLXqpg#h$}LDtac# zdI9nNdxxOVjK4X>he2+5Mk}5+${)_e#4D5Mn;*X4s@i0yci8f&>AFOq@O-KONHY); zmZ~^r+wHvkr(YU#1?}H8QdQkQRXWt$0?qHFM6>nFM}?5N^HxvooPAfR(gz9Zd!cEu z#y$Xt6+upfV0!LJ#c&48GkuG(^`G&tvw&7Z(jjt~jP(+3t4QefATxjHz~>`=cE~E z&%M=Uq+XdY62xjSp}RfpSAP8lA74C`Y^$)jp+j-RH!)x0_(X&21~}6N#$HR%4?2$c zK>=v7FbJxw$$E-X-CiP-Gphv10e}g~5_5;U?Q29wwq5~Yt8v_WX>5p#)@h41_AYTW z(>K-)xIK|3JalLTCm(slA$;k3xVAS?*JmoAMVqY{)OzE+ z=E07S`h?I040PwYz`=u=TQ22jKy|Q&-uqB2$Tcq0!fyfG=8*^PMHP5IS8DE&90XCQ zO`svii1AHSa~Q#_uYx9^Jfa@kvKKUV(b#K@4L^juETj<}qBK!bT@~}obF^$YZ*^@$ z{l3w4O6&3v$$Z}i_Is) zEa>}KH`w5NnATBEf-RbE-o=L?kbL1J#^`&4swHpv?Q8nEx~x7Ya|hK+GUGE$obzlf zch?$2_^r3*x0Q+eR|?FGaD24nxG`;NYi&t%K~c??ll{$@8Rx9g*VOF3q6aZx+w_r| z_%LBLm1hBED%6Z7jD8<0>5K{ILTZNOOiV7MWysdvuSN8Gc4z^AjGr|jmuBdvStdoW zu9YKau%$(#0H;E*ETdBZB9hO>;YnnAe>-_CDuL!jE@=uGg6!dE>nE+y_xN%Y@1yO- z8zA{{H7wDQckECcQyy>%J!BUhe<9kczw~Chwi-uGa&I+>{8n|VDAs^T3S7zz4c%!G zPtL~Wc4~s`l4wA_;V)k1%_LnS4o*!v9Ql>9?1j(!npjKWj!l)q_?Q{cf@K@zs{sZn zOBmz@xT(wwV%amK*?G9$RjI(d z(&&y5xwUsa>;SsE z@)Jo}+ri?x`@cb96wcOoCYf`Dn$WKu(r#aleBWch>@R&oKlMY&%1RTGO;ndW*8mAB zklQsN#Duut0=B()U!uoFgMPr1t*A;9nRD$&OL(|3XWaAz(K-!+#|qF?BV)#P7HkeV zwWNQJ-M^wox++BQOiK62zovr1 z|M?EZMRHZwa77bAUnO%kUbHskj7uPP_s^2ukwXb6qL|#h(c=KO~i*vHkE!T z3U627_4jh00UU6kJ^F)1TwmXIAjsc|gp-}%cH{EcS)z&8H?T?h+tpMWbea+F)Pyo4 z!((z`B_oZ24MKJ)k~AlK?=o$9u%>YXsCNZ;}=9xP8BGKgEs|0;a~AMT?~4R`XOda&I(qHNwZNB zMS4y76&4z%yPhZAq+9=u#z&TFkpZTnj>^H2TAN?;aXv%=1Uwh``Fc!hO zcy|&Lm#xhUpHt2Tdp|pmZhS8{vv5_Yefb7FMu88TWNdWNJvSO?d7JKrYWYs3*XRrw zO7Plsbo-O1yO<(?I18*+u6=lAPwDos)SuHGg(2MKToC9R!G3=v=DVGFE2o89W#?#R zVzZ&6k&k{otGa^$z&7(gN8kjVgLiSeZ#_P^Jd=f8wtuWokz?xYyb8y5%8Z1E$tPSDN{e3sfASQ&ilm>ctMs?fS0X-t%P4a zq(x!vbW>_}m!Av%Z1G_pE?`HJ;;SN(PC>0#CBd-ofe%;!1G*~5rY7r}<(#U$l=BbF z9^XT=W$*e!GWm^+?V4E=^;+7J!assxKgyeFN5iTye#ACZnpJi@NSp^i&^wHOa?!%S zvM12I3^A~v$rcP0+F3`RW6kT|i2pfuy1YBp?r{Rh+;RUb-`&QA#27sWY!<# zgNuLi=OG^7ts~nPBH0GJ9&KNXC4dV4%EMZTbd*H|j~HHkvb89Lyjb_Y`WWLZ-2GwSof0lKSYYaA73`7$bX>vv@n71`n!HI~C-A&S}zF zFay-{@yRHhsE7MuSSK1?3W6475i!~n;n$8ICv}(GoS`c30 zq7!(nk%QF>BRcKEY!hNp!8TVat?k0@-pown@Yz(VI`C7y8LEC`OVKZ@Xr9hOnaIjw zoR}b6*Rrmg10|%yO0zj~GU#za707b!hOxm+y~8LQ`@Cx?x>Z27PfeEMjl0`Ju!~^% zJZ#;YihfB&%PK z2}2<4e+}`5*#9&LGG>^c9durRiI4YP>u+tD{hgiV&Z?XuMR>-^xtz*wieTXY6WN`G zYiFQ1zt&+wz1xUvSx~3s<1dl~z3f)GM*~ONjR!n(=h=A_i^~tk*iFDe?nh<=Bdae$ z6)z^t#EW2U9OalkES-?4(gNI1XAy=aJry6%qRC$L_P>=(FYph%>zX`|rgQZvt0z!3 z55ZW=@yo(oJ%lC!!E2@3mck|(I7M;T;9dsZ_TiCM*(*eXh)P)xl&T@O)XTP{B$YrX z+=R6DHXP*K6d+E4ctRMVW0q-0kL3_u0GdL*v~Bg!W0%*p6Lu@4{${)0knAcUcm=LlD3}cgGj>*Gx?ZGI4HY`+J`W>|ussxAPO6dYX02yEs0Am^_)JE* z`K+p3LwM>9j}*Y_@|JUDiUbe?dZ&dJy_8{&D1(#)z^jA>q7PCg+r$TLchK=|xJ#t~PN_4&PW7NMhp7U`DisRy0Qh_-5)>Uij0h0_Ws zmPJ%MIueQhG8AqRV0R&sIUiaJ?S(Bd>q4q`+Pv&37LTD|u@Jrs1w#Q1sz5+*j>&?( zA{=&b?z+szRGQXM35ft?^%xgR*pSzHxKp$fE5oy@ba2q}+pV}r#P(#M4i%ro5th9JAbC*XN{l@Wyq|zOxdMRr_b-39)M$J4|`-818$Y4J3>0q`<5d(O%OS}qwxXn zR3z^s;dbIi!)Zi`fkew-cBrMW%k=1Um_i_dv_SeSO{42)xG|)a=XOXVLAR*UwMF=` zu1m|KF~h(L;Jj7xK##8e7`ViQkv7@sI5*_0emQ-P@oza^jG2azn_t`@er{u7_L0lHj~ATVMFz+PzhYV1a< z^ybcsv3aDC`@?oUEaUKf@174#`g-Q)XYUq>_yhG_8X@_Y2!s%M7HM*B_~CCOGF76m zXrE?q&XjBZn?xcqtseGqkyzBCN|{5aFVi?f`h+ayfY5K&jx!63DS_anT;9hBpuEX3 zA8?za(3r%;o`@Ar8COJp?AktAvzSji(7Y(&sf9$|6DqaUK;XtlWiXP6Y#vamqRn}O zQvT`I@&)El1E@a8owNtzcA9vk|Ec3;DWAj^pu{Dn%Q!Oyrh}gKuniiHcG6eNa5R}i z?wLPaZf4t&7q|d`sSvRTZBN>d>LJ}4#S6rIh^fLmG;j6~|Dga2|7k8Fsc*oYzeF5ouhw2*@ zvS_&N?3;a#%x%(5{Ie4dQwu;NBf0SC@4TlVJP{a=W1-A~C4g8=9Vw&`xp2l4cWG3{ z3H?B_w-IcWse&4(A8q|}`>sy2#o2c>DyrY4dk}a&!*y9{F9t+z#;Rj78nw`_nHx=H zT@FH76r#lZs2AC)iw>vfFtesI1`Yj<7@ev_e%!=FAj^Lg*+c7-;Ul{qnyqE{D6_r4isYVq|TE=jw!()>wgvM(#ud z;_!oC1C+c7s5$OSS;@e4=B2x;WwM7?paE%|ansX}?LbYrD8g;4TEaaDY%3glz>QRS z*GwTnbc7VdERMK|AE+UVXpK0054k@K&(Sm6D^T|>an=tvV{Qg5xHbzK>V~oW>+6#OF0stSb6#eMrzSh&C1V=b^q3y0Op>oj zA|oZEE%$d7gM)%fb>d{Zk55cYE;*^?Bi~Lq3=%TZ!;U=5De{?-dzI1u8>gldTxsVa z+#)sL06#}ke@|54AcGKY9P|IUN(P~|SrbY`N_c0%D~*EF?S?M-XvY=Loai@%Q_7)1 zL5X?%F_`hW+@l;$wLwPgDWC@2a@&UsGJMKjG&!%jcFbUVi%%=e5<+2lQ`2`w zL!bfIfj&~F!+jVwU17FZbx`B=9OSO$Z7-~^>iGpK!<7|q`};uOrV+6lOv>G+aB&KS z=r#As7b`qKrKT2(3POKQ-HJBp!N9q(kM9QNnpP_-ao#LQ4Xfh?eY8tH(wBGNp-?Mx zXV0>Mnan7*FusSZS~56&y2nW6{Gn7pB6V2ge=AR3$MNImKzJ^Ty-uX>j-d{4%e$dP zccWM;?D`l?_2*M|r(8s470!M#KbA;^Qo?uGnd%!!nD$65HAem3^NpnDbkLH2L}qxH zOft^VnL(($-n7Y!oo0e&Y{;~XjKRve@xp4R3%xZrUrdV=8WTqVTL!*cc(^*xik$2H zd-uM%U&jAPbHq%fnrF^KX2wBDCZ1kz6pi_P8Gsf_5mb9AR_u(eDga??rq9dCXBGSFP@@1$KyLibCD)|j)! z+hEVH{D#Xvi?6}kj2)2biDA;mqgG+0)#}YIy5IjkLMm;7pAXA?p2T83+3SP^ zjW0wx?&Y)h`m0JXc8Pjrq|_AP;(wFEfFrSwr9g5w42eJQxH`hWnRH3 zhs)+Vr>;LfIrk{VcScou7&IG6rFX)*?c)|I*g9;9VQvL^uDcI-qP3dlj9UC5It4i7 z6o0maNVdKabC$PwG{K=Ttp>O%9g-Dpa0J^coj)+$c2VZ%O;s-S_V!X?xzbmC&V%R< z_gCYGpxil=cCaO#Uqy9xv0W?V+lv3=u4`fqpJ~9*O;iUOwtZ4ItKrE1Z_eQ8&`C!e zDGE{@qhS%fXOO}CI#cRvr*Z{abOi4u09kRJ7Xib3CuP7A0WmH~ln%q5F;_Q0R>fE( z#mG&hm60Ug7ymW9d0Q8hi&WL?9ox%*f?7>A$0UI2GximdUmz6G`RM}OeI7Ss2nc=OXzBEr z*N*~*o@y|4lAc%&I-#{WxG!j3?AiOg1`RB{APxp#b$Vy(Sdcm2*4k#upHVt3UA{q1 zUQa#pFWm$Q(%a?1lye!PI%M{S3kwx0s{_4~Sw;v7-JL%Nn+AitC?UxQ!sfq!Zq@_) zuRclH64O$&mR?BR|LOBNsG98rqAyw6lQs1|oA!)b612vCF+?JpP#|-pn;N>#6zn55 z{*$sd7;Zv>05W3TY$huw-8L$gM0=c3Vkzd(s%(zu#R(43>^JT@Fisu^5PA=wOTG75 zQNcj26#%32aiAqJ<8Nj|Jr6vw#X-;Z7DYw_ztt`h;icw>*FjC zq7!v!mB?U@@ui+f1sUaqcoJTN3QGhM3p}dvExC z+ZfJVH`r@i9Kgu#GNT+8jEiqr8+;X*k&AH4Z57AIW3uEI^ZWnhlyKGG^eEw0*Mq&Y z$+NGsSnhFeUc{q}dPtwM@2$(*5C0QVz}@1jw=yD<$t#q@(%%Yx+%~84dvB_)1`i97nzq1ob*S0kf|LTX+-a#y zO4<=qz#};`^SCW*=>vnZg=&g7Q`wBJQ0ApHfF|liVW6an$Zp0#R2J;1Ar=Ov>9$bB z95;BPKxgS$9Ppmdw6em*aY4R!B!~1?ryg)fXrOEdXs8buXn>k?K_tJVf_e0kh|?7= zK>t&DeYajU*nZBaF%+JGV;U?rH2}@awDJ_3arWw`(bPkr4SJ4yAJ8iNm*t;;Ik9`d+oJW_28)m>6$j> zw#QMF!zO8LcZp3kyQ>Gh{S*|#;$X0KS*9<1z*cD2Jr%(s@i7{7wc~`Wb##uad52z4 z8**i*3q35CxFiXg5xDfYqyA=__seK+8@DrOw!vRGu5k7_P7>eR&jq!MY3?7d^jnGUH^#7annZ`G{%VV;N4l7#-bI&o}D>*BRiUfD~@Pr{oFbVUF;*` zqG|#!M$p#ee@6~vYgyU6UtkYC^@Mk7DQiJ6im|Cr9{-#QMuhP@P5$vkY0)mO75~(q zPSVd^W-MNm|0lMzaqfSk6)mF|0OROtb~Tq4Z@2sd2=(a*2+#EMhO_3JLm7DsdHt8F zX05X7KZw?B*vSbq!0~Mn5!*R`rmUnG$6}}nGKhLwWh2>f17qSB^w2SG9^1@LJPEE8 z#noBq6$=1cl2%5{a0C1aG=27kT0gt(&Btw*&l*O}STcB_8+Ht#+&jqEJ=Vsa?{=dk zsrsN$V-xF^nV|I+DoM8hkta@iXc5Ep z9S;4LAUCN}`brL*8bl_369b835Vn{>12AQ@GZgb68d^5E=GsLG!b=wF4jTi55c_50 z{bBvLHS{KO9gGYu?nGOAyc5(I<48(@peE#Cp=TI&AQeUaA|Ff>V2XE=E(BT|V>N3X z>sTS*)ydIT6YSvatEih1nh1L7AhJn5*Ul%^V@updJ(zC?VVf+peq1s~?c;>Cgffbk zupl~f{{!VvY#0tECezQ#1l=S*xsdHADIK>+O%KRl%)qTa;cMbY%=|M)uSYb{a{EO8 zc1QgW;oHtVuoDKzh_1a`(7#}kT=mKhH2SF*K&GiWQ(2E1cUpMGVbsq>>cSJbH4>_1 zLP7IqZ>BtKzBq}~iDFrmnw7Sbz7>jjgnjK?^Z{#0Sm#^DBz=~f=G4o@F^28pW}Wku z`cy*NaF_EzSrqR4^~JD3p2_FE`<<;yAIBjP0|&tgk%+Zv*(CmNTnM z6{~Lb=WI3QHahUZ=)9T*rj-Tl-iz|OTF%oa@O=ZEI4>a7FaXPExToGL?wvs@HreyQ zZq`OK6FSD7qpc`5fZZR|iZi4A{FTk%w=bBR=|Q$xd(qUHB@Lq(5-85Ja>N+`wup>4 z1op*Ifm?0QrJreeIY2A*5&nQE@>mwd1PX5TG*Co-gXmcxZ&+vUi1Qst4s~)efKrM6 z*#IZw#T)NV&=d0#VM$@EO-J-QQ%CpEXH0M5ZVxn)%u;i*K91N%ED@E+X+nsP@0=Ef zho^@_W86_eopyiStdS|c6(W_G@=P`is5i^`Z7%dDmD|g&hXDk=^R{B=N9S#aeXd^t z^kM9YKbNSUcZ(l71#k5SH8|CNR1<;@{vEVQ_GWI32=Bwu2$_DW-@%EUlIh19Dx%nG z8ysF@$epji`Ee*{qWIi}lyXcSipz(lSJ4hU9HOn{fl3M1zdi3XJVPMhd5dRxR<1SeMi8oQ*@a81AflR<(_IDQKb!*p1&ayinR5X$X z736M41efo`5Vi?qX#1m1j8W}?@5@npF~8%v$+c}#H+7d24+RjWbd30@2L!%42vBS+ zszKZz#$k?>l#aqch?pevr(66f5xc_c_q)xn%jaD{)E@mtLZE)4n;#h!r_Y`oHgO?B z$TN2@Di1U(4%xcdeGutAq`m;k$63G*!g-1%o2X+5eoxHg>2do^y#gn+DuTqQyeYdkdGJwAfso?c>8soaC)f#Fb?Sb?orP?hV1hVVXQr_;v^f8!JR}G z>NatqVdg}Pf+~-ekUVc>e;9J;(XI1hTGbJ0WXtqrimDGC3~!~`A3E3~^te;_r0Aj{ z892Lrr6hEYSns@5(M7z6>l*$H)RL#SXVo`A^uIVFRt=el_+@RkOCyH2 zVifWo(x?Z2^$`A-y`^s2jK4dV&=UImta0*?;zusyeQo_Zt9UmlfA|YcV?}Pf01xl` zgPK4VUcQY5iZx^7Fx{_Q9g^-l7M0D=Vls0M&dEAO(RdCLWKyhx%q-p@-G4w;T1TC0 zpOIFw%N6}qv~7Qp;4vb+fTry$y1LbxHZWq%iJ>kt2POF%h0RpEJ?zGBRfBd~f!A)w zM6Bt2u&-e8dHmQ7%$tMm#~iYw6fEK160LxTe_Xj`kGDTC@4NfOxi@3(ofo-_#;m{` zftJ&-U>E}LVvQ?_4UN{g)6R<*$V1XtOSBEvj4?M0Vih0_%U@dpQy+0-qN$KUmtIC> zg}KXk_pex^sn`rnt7mcMKuA7GI0LWvkv_ZhG*1b3k67BDIpDF?cjFy^k$h#xpWC@y z1)oG_p!kUMuDE}53>M+RP1u;vm@gEmlKfy-%%Zzqb(z#+ueA^bD>n}JrFJ%IX7sfW zngrd&h;+ciAVLwD0pB|IIv|5pkp5l|HAjQ6Pb;Vb(9pIvei_e}W-{ZRtwSp-+PQ*z z;gCSp2btJ~wX5u!4m?=?#-7o-wWjV!FRBxY3U8zeTe5%aXYHLfCg0+$Bz;)3EjQz~ zqjB9*X*{EcNFzVXzLL%1fnyi-Ub!*x^BWCFcMlJKGQ99k3KhoLNbD4}bIQz{@tp8g z9cSy(#-Hsl5;>`y3@Mkp{c0T{kC?n?G;(b}&L`scBAGJkanP)v!++too! zRn;%s(KxfDAsJQfFwYN)8Ew?LbL1?dB?3uCo=3JVE<_#!P5b1-J>C~t1jyx=zFrZBini6#*Sf;EFcjtyE|&oOuRK2@7agGpwwF z49b+Z>5Qy{epnnHKs#_RR1`pXyleRH-&)*ym+E+UXL~rgwH(r3>X=c{tKYr{p6w`r zL1A+wr>_gB>5=S$ssk8nDQMrkt;j@z&3+`cOZ}@_Au*|LFF-|hNKO39s2|%fq3r^?Bg$(0Jn;3m?Ekme;R?mIsdI~J22i zKTD~RbS_H?1eZLMR;$Fn2G!E_8JH&RFPVph&w+z+(aiSbKg|N>8~B3lSLqJg!umy9 z+P%2cfR}pXletLMBC#53&LHeg(rJ^KicAyh59Q^3ZXm~iUKuuhNbh@yn?`Jt_6CmL z!O5Ss24Orp59*Nj>u0X40w{{blB7JmHI8S|L%^>YADWB*(SjCDnYnPwh+dTV9pH?rB1g2w7<0Md08TJYS+1RPEY1 zu2%T+(jpHZN0MgPM8tRT#;Y|Z8UHhcK6hA_KIlXBof;;TxZ_lsO{NF3b6wI&Cqq0e z1nbHB=(1Sp%NRX_)Ub_!JwN1OzRwyEq*##yS0qjjLtu4N^L_$39YM)<+}IFpq5L98 zIv;vmpIB0lH{uq_^oj`v6NVyl_$h2r`~+#Y+Pm40*5xqx z&uT>zJ;!zU;*uIf@30;5{FNxZ5Xxk}a|@j1J6Q6zLy|RSc@t%1%ys}`nF?!%66V9V zab2VOWv=DK<2(y+|M(a>LNyYRN!cznU;Zb9sK*0pr@RY15o_L<;M3MkoI-esme|K$ zM6iH%0Jnk0153lJk0-48yLzl1jv`>#sekWLFKV8zjpCFW+%kBuJTYh@NG1 zc*Kd#`lb(kix`%>;#ddezrd#dn3ESYDb|zBH~a@VtI16V|G6?nsJdnvn1JDv)twc8 zNFEssDC1;YORLO^*Yo!ps^YfRl5j}Po>v^R8J4n}v;HbOBG<92D(1lh`I5_B9;x3S zj_MLZm?N~wMLwbN!sLx5ycb$6nN}{m1L;`w5eHjAZW1Z5rHV)~MgTr5;!7FoH4ogO zI%M!iHjh`0?z5Li4%X=@K6cZT?xD@sZp+&f5NCe;dm@PF|5d2sj77%~Yy*L=9a_0* z)RX+&Z3i7D$PF9Z!G(rQPPoPn6n7B4qku;B@lm~Y0%g)WMX5st?EyN~$=q**P>0~% zDU6slbb(f#P{X%eXm|x3;MJ{Y3l9c8owIzEX+(12Mp@g_{~Oq^ zA+McsJICBsefe&B9@U4(7I9OA1wV!0$etQ+d)bO$Fz@PlJ-0P~--9V5>7g4x?+Y?n z6vh*|lFOsx+6iekDGcF%%+a5^;`&kGg&4?X3S=20O0Q#}9Z33_sKPPdzVOv8%X)p* z|7g^HuYzf-B)Nl;_1v0$F4^;x-tol?yW+j}RpEv(lf$ap-htZ#Lqx#>7_=GhJ*}R2 zZ)2S3mmIY!YGl^vLj2dU3LVSE)KS&9;^8Y+4S3r&4RVd6+8mu)8%dgg{uCk=PH|{ZH{i|-$|&UtRuxQG_{bl7(ht_g|Zg+yLXGPNth;M zR!!{eJHkgBVa1TFoZb+r8o)&RBaci}ZbYNWJQI5M7Z+7no2|Vu%PMkXq1xmho1Xu9gYCOw0jHFa)ng-nK3 zLbPA7F-3j^!=?HYozsuUk0uKn z0$Xl}hz_1~6v`mx4@1~0iaj`6!TpL+f3elklQMj6`KO4p|Jp3gHd`L6qT$0$Ny|K& zzKR%MK$7`Jz8S7)!&~PyZyfRnwKQxIm%(`rXAM%eqTo8}`Y7Kuq)oI)4EY?{RS%De z7h7*=?B3M4y;%x@-aixG2m?T!^CyM+l*T;!VzFy#GKjFat>;Bo)?F#tuww&y{mw{S z=D#eX8SRE^A>KQ#?c6qln2>k?sjeEQbRa9XTw3oZlzB4y1zaDG_BjhLyI6C>PY15O zaO>_nK3WPTA4~qy-SF3Tc>Q)=54RIW$77;Zh!_r47+{DPD2Z_GAi3@hC4^n9FO9?4|3e*3`yp*77- zHAk~KR{x@F-4O1Vg=5+@>JyT@(NMSJl{R4~q%!)K&lfyneR6XzzVuN!wiAA ze+>Rp%qd%O5+ew|GBn7oL;lr^8g|NEpUIc9dX0fcby3-_uK=qSG7wf)Ya^_DD2J$+ zB}5_g5L&m1*iE%Gim40_(xj0#S21QLP@dL(n2=B2`6?gQ>5F4w5|V7?wvZa5BNhtA znd3kzgps@uqM|?+U1?5-OfP6;tI>^}=}?>csuq|949NCFY4ip${2o-Z*zje6fQO1gkO*beHnf2tW?)pR z{-_Ft@6%GkuplGQR0FAM%q0XF-#Aq6R-}IDR&(uVtn-8C?&KkUY)2nj9rggIx`Bqw znhjtFVf#o{W$)m1Mrd8bPKB}zMXVGf4lRyNh*9X2Pf*EuX)(s1ef#`aVG<4qk1l}L zA^ATGN`k<}n|NMzp8lhnk!2b7-Waw9DulO`v&C6LG+4iu&}K&9ibGPaF(hn1bPp!- zD?9pLew%#WXg&4*??>U#_~nUBX-#?vhIOlX-IfVik=rZREGEutCP*HlVP zw-UZ5Ihcwhesyr`E=>PkS_DGQI_jxc(hlk5Xb;SFq90QvSzRb*GVpvk6+Ug69`z+; zqQ)zYl0`+4_G&Nueyy4>q~Q8wm4{U26YDuqO{kf@`6eqjU+DXlM$PT;qAhGP4lWKa z9%U9Nvf@tI|BUxKfy0oYitN066Y%w%Q11x26{NpW9Lq(z_e*5t%*a!dqnT8x@B$X= zx#aijz2#R4P#ob~%EuQ(%^_`fmK}ob2$h+^Kx zkpiz5blcRM_0lV14Mwxacj&s!CkvpCIrg&ka^8Xyolu-{f*7#E7S_ zh<}!L)$hg^y=E)=#r~lifxZg$?#II?lc7fQ4F~_9i;Z_AWCM}aarLVx-L1YjH|k4{ zi#I()?e^h{zwS=$F4!k`LtuVr&RejpyL!2pax`tnE3NO9vagP6xQwSoys|X!NCqsT zpcB3-&G9b5U-}nKMu&90zL}PHXpqCMtri|WO&meQIKH^|?e7gvbmXZdZ z*ss8$Dj*P?9ctzMXJ6&UJ`&1o%Y7(9Ak!)2t zE@M<>s^96P!@llg{P=E7reb%y;EEO9x>KK>d;XDquQfkT*X@0;nK)VBoFpJxWDT>- z&O#b-=A|SHz38(!7py+kOR$7e4(ag1!mS3*3@UK#yU0zQ*)%L!4bZPV+2!6tt7Mfb#kXe*|lBi7Pjdd(Qpvk{zmIq|OQ%XU2W3+ex?m!(NpI zg1RX0_g57;THZYfEqVXVmu2JGcw8|{wB@vT;h|E-$dV*iySq%4xez(bwCZ4}-L<#O z#VZBYmQA>8I{y%Jid00*hk{f8!v6dr&fwtgnP(0evwpEq{uceXSQQjY)7P%B%2^$7 zUcn!_5LNuhD-K3-i(%>pO*Hc9_Or_O%$S6G0&Dy$v|1tsa;)lG$HL+zqT|fy|Gzo9 z>B0DW3l8&Mz!{~K)65X}p_G|GBs1cw$NGF+@(YPQ|5**v`KY408<=X}^nP{^ z+dcaZx)0_)RF7)Cr>eoex8@i$v+wwx<#QXhF1YH*p2n=3#ZPKR&@;%f+oRg5At_SxZa`MqHe zD?0&1(WGSz_zw0R!z<1}wcLlLfm`L(j{~?Z0?awU7qd7J=(Ln&^*iP^l5=sd{=2Ls^O=tdMLe;yzwnT=L#d z0>evxZv7%;sw~(X%*G(pUqB{GVQnhb3|>*h4{A=@5{0w?Mhsye0iqskHHKfN4Lz1d zce3w7&VNpJ-1C48Y!{Zf zN8dc|&59(ZMqq_bx=IA8mG12kodq)H&>@cJ^d|=n>yPlFBr z$C_E4XqYtn=5mL)Jlog;|M*80L+Aqnlfh$-0}d*SjHh3q}C`AU4eF zM}fm%b(P_ENOR9$r-Lq1nVT}BoSfCz9V$!;$Yi)tc2r%sdPvA432AzQuLGl9X0ETN zY(gLAmzln&8p4o1O0iUw3!JT1r?;@(j-n#{l%#Y=@e*u@fH5v=f29ZROQz;$bzWA_ z1@tBa4G>Y3{;`?iz-Eh%ZDD&h#(Q18$Phmk_fmF(AK6kcHls+@ho3M||H*-L_17Bp z9O!bNE94i1EmZ+H^F)(Gv@6PW^4$Ry+bJ7}?^+ugzS89HeTv(l(tuwod47?mYq*A8 zUIonXp(lj~bZJp0C4D9g^g!DiEU|9C0ZI=l61F$ahk9_K1qPIhnnUR?v8bXDbZG)z zv8CMfX>NGweDU`HC7Z0@qgqF)mjlP)jRP*My$!O6oH5X?(?icnE3dy)(oclQG>RNq zP#5ddd%*>E%5U-O!Nd|oGxOOaO*qom)u_S^ylrgidqjWEM*x$0Qqccfkkm^Xk@<}f z=?G?;&uaAp814mGE1u``g}cC`t;!!NrDM}uu;RP%E$X((2Bc@d>abf?`zdT%q%+za`bMzky=6wNEPpJ^D1 z!2Mj>zxbQr@*}hz!PQ!ISD~(pl;pJ|%;-6>=OHbJng+93fvVNisD@2}K5GWks`z-}Zgyp=wwuwU%3Mt8hcY@cex zSoa-=iJ362uYUxlx_+H*o-(NMcP)hLguj*!esc;^XBbS_zKeq8SFs_be%i(($09=e zLC-L9#mWfesd{+s9w8w-wX-?t4F=mwVxi zmeX*QwG+@Dv=T+;;8;XnX`o}KO@n_s^Jw-^c+-||J63NJ;GtAvQV@H?myCp~ z8QBs4^kAEpcR+vvnFtf1V=>_qMSXgN-o(dN{{0|AOk(~Esf~Xn{4X6sDE(Qa4OOWT z)l`C-Eq5p1j#Gs(%c9Q%@{372)#oeP5v9a}rTOvr2dtNYE3*jWL;AVRwfHL53Cf_s zgo`jVVUyf%9;?r8>{0LX$SJazOU{bb&-FG-PE0c_v+^UOc`(?On>n-G$a>vC=J9D! z!{UJA4591rXjx<2LhOkZIYws{PHrAVW?3{gLAk5q`urW!<+PC?z0ZZ@M~isQq~Dy_ zK-gbfK+b{TGIa0?DqL*{gn1bx%neuQTr=PShyPnx$i6e0>gKwQ+H48o5}DLeyUrU3 zoH~b3j-%f^4T{-DuQOUcr#+JmRdTBvg)&=*LDPi++icVPP_|YA$c{+ccToL8!~U$p zhrV2nd##<`Nf12Zz=^DAz6@4V`N(K`bkS){2&wD^Y?srWs@|J3-PE(6If4kY+v9a- zBLj8YnJ>mDl@FvXr;2-}V4BC9x1>&Xe>Z*FWquu$crklfNm=Roo=U9GeaK$xe4U7R z;*hcf!=_k9WQkeW3np4~&{5c*s0h&_%g}O#)Jr_hk7QGI2T7UV;gX_DN{YUW3z#Jt zx#`OC?J8!1@_qw3+68FA%ON_fnE}5`GDQITt^)BDanB8)vHc>caU@%;%<$}Yt6dw2 z?d@{7Z)_B^1^ke(V<);iGsY)drSjJyRrnsLRQbMNUQy3g&Zr^~H@DN=kRf$?mK<_? z)&%Cz>z(UW#od)#jFT*Bg2fVN;@m**By)sFb#|+Yvw2&^7?K6mteX4yty3)EWO9pm zA2hTsTtg%@ujTYarwUce5BybLz`gJ5N-unI>PcxQUHMn&q^da7N%LN`{(tAP=!n^i z10l!G#HZg+2kCi6vIa&f_duaU@u~8du;rGNwYUPjCc387iFtAUbn@DQsAed?42}G8 zAK!yqq6_k#iLf6+ttc1lEQu(MgyK}<|6LajJ+C1U1!|B!? zhe3r;5czziC`iJ_V12qPe7L<1LFp!Ec4hdRr5L(8xn%_C1aHf=ZbyJfO{BaS-b%rC z(EogTWCxZ8rejTr%gX3XW6hg=LfXbg_asYlt?z8(^q;u(diF$&k$We+*P%3wuC!wTF4wBPr0$)4cK|s+#=oaL z*PQ|;OwVBxFN(L=R=%0wfJ&&&JM)x~#c|cfnwFMWqx=xfspe^H4)bmx{quVMfx24X z3Hzgz4Fm8V6de}w!S_LQg%r<5vyaDPR>lg@16d&Bk#cXlf$6}J(-CJr z?k)C!4p10+t%6T?~=4f&z6z6Uv*0RZ5+0ct@&m!b$05S!uAff_d)FXDojoU&3axsnVdu) z1l6V?rAiI2jN5_xL7IhtFds-FzrItQwK^GC`gGXw|JKHtQ=h*tcZzR3Xo@OzaBjbyv?48cZz-fH#6Rb?FA92b{V4$z0^Q1 zfCOVKpAUU@L#KxaeAkVky|6r=*PmW^>u48WjD?mBEz2m*Be0R*YWj0wP;h*{0V;=ZP95nH1_| z*g9?aCWAli9*Xd5Dm6S3QAJc|ddJ4?3rH?*ogaavE9hjYg?Z+eJM*-{Jf0M5)=w1! zTABHVNoRb#c20tQpv2aoq@}LQq^bdB%(dV|I-qq@W?~i^oHDSn21j7%<$f|w7=<986|5<#yj5ZdPBVVe-)HURPuDzx^S%S zjE_%PnD%mLHvdqeg15sjvnV_l%c8xBVK*K-iIuw2avzi>FJzQC1FVP1WJiRfXVA_4 zv2Tzs6{Zyx#v>O@_m7ubSAS#-da zqv3eM5edKNM6RW7jEO2qRy7s?AaO#T;Sj$xxDYgz&UwkUvr z8JByjYJBz7&?)+{(^;tO)5KS-J-n{Zel0nCXBdhgd#OL%RaDLcDrt7nk+vhw%*A)I zyk~@?`(QX^QhV-_Flm@rQKWp9!B%(et&kmoaZt(l6tjQt^m)@2&}#qg&kD0##*@QmqY?u!XfRpaczNN&B0VVXFY5^ByxXX|^Hu<57s zOx=;=h)Jxn!&m{M2euHVCbLf_P+$<4WbE=rpM4FfL$R~f@Uf*vRM8i>N_|qE6m)_GZKUmndK*O)ps)0xjLByPTYkR{`Qrx5n_lNq@#NA5qAYlE=zrulwVEaPN!F zbs}DzOYu^Lb9Jj_T2RPOKEeNm$O0K^`39KEvsm)1qax+6EW zA#Ykg2b@1fk+}VweYJu(uoXLoUA17Hv^Sa8U~2yuEtIDL1}Wc9M6$F*l{+@ugD+rM1oD!PcA$mK!4^nDfAD6DpPCef^wJ zQ-E8|#>})`>Q;GnXCL7OTaH3kNjzu_BB;rN%)hiSt0ZE|yqj8?*&z9KA{=`CN&%y2 z3ebvaHl9J~8$=HzKTb^~rr>-o*fB}J)?J`(S(YM7v=QnL*zB*c2vfF{KysHUlX_X< z`eu%=x#lWq_uiyyoy77az*2k{i7vH6?Z_pi-$H#EM1-@mW>+E7LITLBlkupCz2XaDkN`_4`4mjpJCU zlg_Dw@e#lje&lRIOw*&=v;XxN3V1-BtL-|*|220yrMK%gClq$SgG~J1(XYsP&h3Pd zC!{kQFY5g>Pwoc|KS0KxIV~NJ-o3L;703vx!ai9dTg^KSWMn>TX;*J*32vD&OI<=n z3Cg$zQw$t-lIe90bYLk)TQdv#7Dc-lues=dN1Zx*sRR8yS835ZqtfJ_K-jknA@NnX zOjxZh7=wBK%0;h~(s<~X{qUWh)S%owa=bgAwVZKw1Xp!8HsoSrL8SQLZa-GeJ?{zo zwd6I2d@l}ru2na-q}FVTM*W%0#XA{?45B0JGb}psbHY#`i zC2r{81y>T&tiZfCz3k;KV>PIsump<=m(^bpWj|z&-8dH%tkXf(Od1s{_Jp>PZ#-tK zC7wvymjVHa!tuH(YH6ZY`XevG*>OhvfhaB*!k+BiRUG2@CdrA&Qv+4*&808>Qh z?EGysv9W4^#_jd>f+t_OlS}828j|-$Iu_lrnO!_>O?`EW)2?H0K;a}gbyfV1CXU4@ zLM=NO7$A*qofjwkjIIK;`L-8~j#jD;AXnIwro#}GhWNk!N7!{fJG?9z}I$P^IDn5<(;^8{$YkoaOhmq3EIVN z%Y+e3GGS`D;j1+WbQuZCm+4IBnms@sj9g?MiQY7H~sHG-gw5I zq)%ZX;cnM2L1b<2K3xiHg&wOr_H9)FBR=6yr@W9n`|nG^$jhsz@jhc4j1!;@IOeW9 zmNtD;l0~(p*4k`*4Fm^+%rZT)Io~l${bWfRL{OXS`Hp0?mu1z@Se)op5O6euifE)w zof+rY@Dk|tqi4<#Op;rdRS?wyY4$ckj!V)m8`Y&36~4!+dp$V?dcH2*?*FRem!&8) zV{o_~36b|4%`i z=VVU7()>QJ*kzS@82uo%*j~Wih?;A`DHK9>#G02EW3z{t-A+lk*zdhf_0+tzMQ~~y zk%+2A9e}jAldt6hHh^X)l*mGD!H;D@&fGo`ALeZMa!^Wcx6i%Kq1VajS0iuV7dkV%2P ze%WB_6!Q}VLub3d_?dp7I@H!Or(S=0EP-WH())m7Ph45s^*cvt-l}qapn+F3^|SjL zGncA89AGYF4~i@&yEep1nQI5$*wV#`ed|d8c2Q3J*Zj=uZ9-%FjZ%H(v2_EwbGaTa zbnh1d>Kt$&0PV(3ARhwh5zn)1Cd7R7yyd{ClACZ~5;qcSDK{b-S&o&A51zneA59-SQj!XLK zLc-bK4mpX!iX7n70O?!Py3me*bNid-%{M?BHeBJId=&OA8W-#nrPpOJ209j_8x`LM zqh?9+Hv6_<>lD$+LVm$&-Rl>684`q;Hl<`)no?JHOg3boj8)I6%P;}EU*^UyZVf1C zzfT%UYk#s*l1ug6(_}jqW{P6lqVDM3PsI)m5*cvE>{-4fA(>xTsd zfJKJX38=wqY7&6>^0nNAN&qvFQzDtcf;8~0U!`Vi_umtf1hNF-!{_}XGi}RyDC}F> z5puvZohNk;h@4#9mpdJ=9tDMiQ7_cKIdoJOLu!t5jMtY%GBLobMnSw|$>)zlt4CCzWIdge|h$-gQba105d1el)!JQsDvXi9n zXGUR5tJ9YkuJnS<7K-}S&5rqw%{fn`tBEt-G?G~56Z|Bgh;A5<f5*)k(0X!%5AJWRYaA{Qaad@(Dt{!|KTuTp zS+nru72XNVV5S_XIM%%FkS@JUfb!2fU2h2U>{qM^}SpbXyBkHMx`8l#On zt=+7z(c9R2OrsrW!p4Y?2*LW+u`!|+w9AXG`p!sa4aK_(OYb_m$3FZ9z*gIFqH?Oa zTvPI9CdOI|&0>#4Up;Df!J2v|>(xZ`gC2fELqIn0OEtqf>MZBzz4*ut?SQdRN1V#m ztG-^0$(jZoB~tsuWkddz9ofNwXw`0BD2-`3h}j=kuG&kGeK?r0OUG%&93nCIxn!Dy z)Fdr~#5BCXJ__wLqGWbW9G#!Zv6kK{>C+Vkt0{ClX!{xJ*y3dx_cPTv!v> zk1N29)qO)Fw?0fQ$C#(%T2*LUD?W1NHL*asVUW%K2+;fe5Coa92v{yLyxZ57e4&aADdfY_owq&V09Mm}M#%{NIW( zIb`KtD{raiH%*Q~gJ7Cli$=R+A%NelVO$LkM!-lEh(7xH89<$8H`kX zu^1k;n>K>ojVdaBe`L>|#zscEdbM|)9_RHf!|oOk^!^K&$Zj8$XgYylFYvCS`RHMH zm^d1kp4K>X{kn0_`-}>-NbpvN-IoXtM-w&EQ9iI*sLNo}v*|zhLxK<}ZtT#vG*ewy zqem@7lUXWB+XSFJx-itVNYd(LRf!8$h8el(Th?RR?Wli<)LNImDS!4!KI1%&em(%- zX`^-q3|?6n`v>9Eyqyy~t*-hM+xd`8O>dpA9XAt1KjsIDA-C=pe&S4h35_}R~QuKA1X6(sGc1%2$LyDSS>Lw7l~*|s_mEXlA{eZ zL0reQZ2KR~yVtJ-$({N=2}MQ#J1#GBehbFB!nn4lf^vGFtmr#To(02RHCP}o*-+(NEuN}HOU%Y5&P_Z8{^+eLGAQPb|6IiZRlq`7-cA1w~RMgI% z_-qt~@BQCuiFs=AqDm|a50NCy+zcKHZa#c5+zH8^QbhfTWf}Fyb3T`2;%t{gJ?!Xq zS(ha((VzlEjs0Je8pLFl@ONG1xCaLgwhXdllFb$oht_VXQS05RX%}K%gycLT619sS z@5!!NLhI$Ez%WK@KnY^O=9*he_7Kpspnk>0sHiwOIVD*r5DFU`o0QERg1{NEyrq#) zoNh1m-)!dlD=NO$v=|rK`)wx1dt{{8Kilt}_xm`AU)jJ&0=gO4l;pBVkPH2H9$1U% zGpejbUvnvv|AX;zvXK3CPv1&Yk>*#)hBGUJ4+Tc+D$#kYH` zD4{qeA5CubUZB0;jH4Fw7-il)(b^KG!H8C28AUsET4T3&u?o_pK;vK;t&jP_ z_|c<%#OhR8Ga~_hKfNl{=b80TTA-LOQmQ8RA1YOjz8Dkfw1N@F=JBYl8TFaguG_?m zgVhIIC?i}P7l|^Po`W~G$G02nqvbi!M6duPTIY~ppMkc0bnKB(DwiGnp-<>}zev1? zb2^Kq2=qr-b0%385N%Q4=mLeTU@%4tV;RIQ(cH7@Bk`5w`yO~i|c)22uEgFOLtv&%y|1Y#+pJ>M?yIgtn|+X zM^;d1hD0VD=h{Bhzw2@jUE71?am7P|TJ@Ez2rLu{Wcp7Fn)Sc;lLUx#Q$4$9!iE{5 zSxWcHWLD2vqFIK<5U-0SmMioONz=G^78!U23s-|_uM@lq2k4r7eosK$R4HZJaU7^o@_04ByYdS z|A;MhOI?bmKbtLp^Kvf)_|q8dbem%Ys6iE=dcx4C_PkSG5K%|d6+$e_*4Glt0RrK@W zq#h@BMRe5b(?kU26lolFp6P z2#PuT)OMJc%8%eE&Skepo`j}4G1Dk&xRE?Z(=^Y!>Sjc}rn#6)V?*T4|Dd8KpXXgy z9h1OeA6zJSs)^OA@d~CjG6(kS`=UL;pG*m6=i#G$k(&?- za-FDUpX9=bZ^US28>wt>-w?XtjofRuh4z8X&z2PPV9JsC@MK7iKSjIOKt#s%?g|{1c;e2MxxOXqssIpk3F~?J|CStY z!8!(a`aN4((tq5=J!YoDnj;00uS=2JjVMc*MI0Erd}-$o!r1jvF(cN9`nC6m2^uvB z>)?aylHqnq$EkR}D$Y&E$H)P(-Kb>MRkp|Q+$m@@$u4BcVt00h^=w+FZgLA_$j2K>{fhx)ROn zTghT0RefwqD8HF=T3?5=Oym-i$|FpG&RwRo!{Y97<&|ARiNrnz*1j3L3~T1ha!I~M zGeD|9I5GF9FBgzO6^dU}G|SJa^v$$pjCE`7p8LlLr}(}tTn4bdRcrMLAl<>X!Pr#j zI2dTFN(DVqQ4hu~=5?9=%HF?j`z32DGHrSKRIM}aF3)SJ`&?rL9d!|6#h6H0QR<0r zuwg6NhMCGXjN$HnwhoiM#H%6s;yQne0}94#FJmQ=(sM%#EDt_AMhOQ%9E*%1vR|>wW0?2=Yc21)ve@) z52(i)X};gI-c{I%24(`ncNd15HVGEHl=O#Mx*9yi@ZQw}^1dXphiwucvxFW0xJbTg z+PO;{|J~C<*sRx-!`G;N7~Qfip*Ap7tC)=l{SfGy{%xu=vn(VhXq>US&j?}At3T9Z zod}%lSBze0Lcz#p;Ajbzx-F*fMgm{@1QY#iZ@xUhnHyIcMGuiIihsI<%2zcbIUOh7 z0&ce0t!nh@@lh@X_n%gQ7rTc5jV&0rFqgI9WSP$CXg{g6rl#czvD>nMUczC_IQ4(G z9ogA`E=gfq{1wL^V`td;`vL+Q8xJ4-%Iasd(Y(Ho+NTD<<`B9Ct?{H0d!ucc+Sb>+ zX0ysARt`@OfBw*3uLS}oo#(z2PD{jkMlPv_+(M7Y{8c*UWs4@P4S)Ecz1v8*9mShp zT9baP_JXA&ymQS4$dNI0>#}b*LrsXTR@1AUqU+D@UJ?s~IMIf9<71)KQn2rU>JUgC z07L__p_B%_2T(!JCU__cAh*~Jh~0B-7>(+COpHdOdYf}l*ID}FkQ@1_?Pe|8UOrqy zOa6KRGr;GgY+gY5+_MBY1-iphLVm=xyrdB zolwNpQyO)?s`}xMJ(1x8J_ojWYB)@#lxPyw9b15&7uFVLRok?Hgo8%ZI<-K+r<$}9 zL<$+V<)?(tz}cm^Ahk!QCB{GsX7k@Irgy)HaP2teOGz^;)5QKnwU*(<7b1-%qhV=y zd~Jt&&|p5DdvPU-PfocL>s0&&&|#-w+o@*(8`{S3cAqHw{H3^|Jp(7+=v$HcZM+qZ z)M|gci?dCuBm??QBwr?G&FiQZ#1vok-j=P^mh8#Su@{yFB)ns#3RWElbvL&Q zqb)X}hOL30;$m3qF)X=?Vn0lSpdK(l4T~!=4@!90I5_e*yH*hZT56wbyF*3eT6rn% z4%wjz3$%H2SZJwi`_PTlRQ4BNe}WG$+E2_8e^If;fVpn`a$}^bgfo<&l@hY!4p5#hRjw@u#!(WZPoe@Cq zvV;~{0%K=T0x|#vGPET1FIR3H8i?f?Ah#Q#+KgI{vy?$+Rof|D<72@)>8G-(76ZKF zHfEfuWu!Uhe~j!|GQJ!Yy=@e!5~;C01XHcJOQc0;C17_Kyp!1Z224ZLr@}hLxF}E+ zl#Z%G`~$*1 z)_!8uZnYBNwi?B>c|PzG5wh->5rS!-@ec#`K3t3>nI5;=gPd++gvZ5!eEXpr*Hn0- zep~TYl#js#(IQm<-|5-_ppV`L6>^0lC*+GTnq-BGu#QRk{#w#rH#F8agDWS`u_(!-3(WOp zUwJw6er7OfrVUxQmiSFdCs_<7)$#%drv8I0f&K8h#m2{5=LYtMYvqccyr14gD(EL3 z5uAEY`Y=chcyHN+;9%Yn%RgDa9|;mfLN^W9M>{|^9mZ~Rs?M1T^FH10zW|xJv7s2) zxd)V_y>`djWHCE}%l9jugMLO|u2CvBhPpj@>f>8m+aNUFbNSb(0KqhJavtamqWuc> zQ#}nw0weqhz%AO)M$ByWrJ}!Rapv!TGfmNlMPB9h}C2in(04@>oiBa&9<*Qm(5R4{fOXyXjt^p z%3`on7G0b{FHVHd{1cYp-LrV8}ol$r2R zS6q^=6M2gMSxYzWcHsP_@WH2e|nntQ<>e#^9?}lpNpgxN1omn|oY@Do|u3 zFfYDAA#=gfWaDf4cSZT6WQRS9n=Z%DOyyAu1de!xnI(LwsmT@R(u!rx%u|u|xBH0{ z@rt5Vu;k(c*=WmRgMnrG)3C0yVfZ#krNe%;_!BYybEdNin`F&LRpZz8JJ`{QKF3$(Z>aOs@a zP`?P5Vxz z;FktH{|6FalE=0(lU8UE-wG9)*|pDUeH8)3gE)k|%_i#92x^=tsP|?YtDnk zErj}-1_y=1f{}8|RySIbbl3-Y1W$S;v7zU*iEMpWD~2%Ef41DfcG@(j6_ylk*pU3; z9NpcvP)Rb>o(*=|xY1wL%~VQ9xSe&!?|ki7s-T#VnUa{#l5M9euVY9Zd^SgnXwDf`C#ChmvzA=f!7D z%z2)F^BsqAHw^-{D&nLtD09rf0mKh3RAE#XcftNWs0C?obJ^Ztx#wrJ$>#+DG___> zjrqryDqd?$KZX^`4k=rVlV&}sWSr6)2Sj(J`Ve~mgQQv4kM`joH|t*iLb!COP3HKW zUr*W1e9@zZ+IKk|(mNwLBHI%?;y`vINB4dbE&0Hthhpt>yUVS6twV3NVZitq0=zpe z+>k@Ueu+)OnM)!@8H)QExn3Qwlh6WtvO-W3yf`d3xS5OSGU`rI%(y{D}YmY z#WK?)u!z@y{|YoVzU*Eu(-5w4l^zJ;*pM={j69=+MmaT(Sg=?BrD4>{Rc-rZ-DLWq z39av!6#^?WM|zh1*SPny{d;x0fHwl2Ybs>H-O@~?B)~SrRHLXi?GdV)CERZ6CU2#Y z*>6_5fww&}%lB2ia}pxEe2%``Js#PFhk{Uw=ek-1d1SS@4i?N%U`Ct^gze70VG6K) z7f|kq-l3{|Iorq9A)RAO-K%HuFBJ=9Vn&nHlh^-Y@;gn9?T?8IcTws^ma_a?Dh0^D z{wNu%BE8x`8*>LB0h~1t3lD%nhLue@?Jl_u7cx_hYv=6cK##AukCfne%3jih>HL)=c9q`OE8q*86Mi|JSG$9ohHbq8xJ)uV zS^LiXup@(}57u0h>Tg>*h%V7;&AL@s<#y}e2-GgYu7Fkx6z;kneO51%v7`#n<0@%D zvNU(b2Z2j6r(8budc0vShNyLDZZ6+vo_`bUL;#c1PIJ(!t`F*Kqj&m6j9|UNQS9M3 z86{b;k)L~z$8l(fYSp%@(L;>_Or@|l7otcBi_&M_960VZ-5#G} z5{RF+dGltcv`-TAxn|N;$tjrwE_o{Vv;>fF%<#9x%8(0Wot{>#8pZ6Zt) zwD8QqQ(0Hh^1s6IGL|!t==bEaR+A252V7mU(!2m*rwEuO;=8E#4bqYz@c~#9ZCs50 zhl{^^{E{|n{eVQ`y1G=!5eAAp3IMmrBX`P7E|uO8c6V4ZHj&UnaDKlC4PBbG=Rfl_ zT)R?l(uHxPfZr)_A%Qt0)F4J8h9}DOqMM1#NS7i^#Dw(qWOKyxvMAzP%{3@zL!Ro2 zsZhe(aJgO(_G?Zro^nxqqKY5UjVJKm7jR+f)w&gq?5I;wn{xtC1S5}R`R+tL71c+A z6xP$zB+IxOyz(pU@J*a%j#KnFV%Qxt_zh#CN)d5x2(ODRK#dGy67Bmx+U!|<-kU0lT&0Tr~LHL{U(+{ zXZTRS85{iU+xM?=zWpgf0E@4f4K{9fiRJKn^{)bN)yRB}{jPU}IqZ9YX`{F*k1na) zr7U!zaSLk~J@CWOC+M)-TG31+urcd`g>bvwbumfI71REiwAeuJ=oiGl`ri}CWF;oGJ zaqT?V6oEoo&{G|=#?KMR5i1RQ1I%=35Q|^Cz-Ktm5n$hytCtl0Z?eD11}I zEcXUc^cWaLd%>F>?>O;2cxQ=UA#$g|A`&n5Fpxis5r|NHd)O%Opr$PHo;Q%xQKw7y zU!r2QhABydMZVRA(Ah&4iXsE}i0bqn8#<0+$n?9=0 zBRzGC!)uo4S+8umxyftg!N+gBw=6|J(p=a7xjGZM3k;E?$T_2#tdaM}=s!v$;yW0H2HJj$5w{)D)D1Ls1dD^;6BxxGk5iaG#9@n9z0nYE4C zsCg$^DIxL-omU8kH(tb7dNg|MkVf(Ti+J%lS1i#ikugSgOq|m{^8o^f=ZcL0o=AY} zsTKgTHiOzTn?`uAq{9NB6S1MpU&i=jJ33wnJb*RyN;=ZhO`10MkmFM|R6ifTf$1i*EydAVc zkNcI^FUd)m6f305$L0Hin2WyF_=vkaQoi2og=6rjzT|UDEtj`ek$n8j%s8=}_^#ki z$oBz3tkorK=&G&5T11NkDTjxXsGhG=1e2qq2Yd%kktvreOU;QMiy6sWT>a&n)+%ZD zn2L${t1iTvMEa9S*jnSQ#Ho!=Vdcb3d&3VaZ^cKNl&Qf zF3gqW*ju8W!v6LYfjV4z%%GYi6QN|J@`TXtvtxv5p(@@BxkLc)ObV-sHk#uR4Xp^L z_zjb$BFxdM4Mlb((Q-$6G|@x*aIg zr*OXge^VG!z#_sVZyZH-3#oM-Xx^zMpn_R853%PvE_Bl&5<&hCgKa&8f=&{5UBaWN zVY@M6kX{eVTxtDM(n)Nc^b)aYh2;3SCcnDrqidsy=kkHsEX!l;uV^!SC|aFFsz?u_ zADn11xO{)R1>Ug_bF<1=WgY66ngppWXmPpQb^BJTKqTKn(53NsTXtLiy{hX?)%Kau ze;4O4)S-H!94Q z$O7#$8;&TMol#TPYeiCD)uX7E$~4e)4PU2WOWz4&JzYejZn#ThPey{q(su2nPEG{z z7#io)QE(_zBKB2yOO~a9d{bR!Qln!0)j@jvb6QyEwmy-F1V?<#cJr;-NRYA5Nwx*B ze+Foez^?Z~aATu`;Ar%Ij$n81UMTX>GA&3fClCm(JKAUYwymul?38W=^5RfUDqO!p z<^rXsf`l2!kE3dF$IQU{6mEYVntLTdcI!RtHekMa+;c#(t#zP#_U35GP=V0wmFXhQ;?wXUBnUngz|N;ZOAGbI!cPFIG-j6_;6tOD$8h>G+;6DY60`>+Ji#S zc~S1BoG1j^tyZ~dkh>9*@oH36dwIFzGGTJCJZbr_27QjJ#4?(TA2a5g*X+G8*VPH^ zzH%hVqp+|-elJM4MCCMqni3#QoU1}}z%W~YE8YDjb&>wHZxq`Tsj0kMv9VX2F5`-mr)PmZt5md)|%J8OtKLzJy4N2h#EOpc?<%Om>{x zxzl#+lnex|xCe&nXv3RE9)Z9M*0J&n@2;Cg%L-W3Tq13_Xu)PcK z`Zk8G;`wtgK)w^s6L#Cow$=Mvxc)s5zDe{VairFTyr}s8!lx_7yabUe4f~sp31Fb6-6c52dsrxKGKuQx8Ku%renO zBVp6LUJzb*g?z@cf@{abEQ+|L0f!$OE;GJ=Iyn{Ni;wB z-|m2Qm(6niWNedTl+qV~IJ6t-zK{X40B0&pLB>0Eyw0t)aa(=eY-SRg-lO6yTzz{~ z&F{_`;~`^|G>y$zCuYKekT&uE?s0Iwh(gq0D&vu}*)Qs^T`Pn3Qxy=8H(IxrZn+ZM zKkJiL0DRFQ(+|T+>^CC4yyy*!j5AR((>6XR4;HbHR%Qwk8__LbgK>YKn5>?(lVv;Wpuj=hP#% z{vBTex|yEsikKHNa!A9>xao+e0%mlH_mJ2UH~MYA*)ibYp5|G( ziXi)55c%4?QK0{UIKJR6R9p-vdS?YK&E7s0BO#(h-E7hyVdhj5{B7Y!F?XZ83RBEl zSrokWerAh(7T<|V&knD&enIy%x9I!*?J;DOk^(6NH;vuy{^fvSF&Z@7P$Yq|#hKnn z47J{sFQwB_Q)RegI{XsAQgHgXn3`~H-w%$nKfm)HmmoZ$*)qj-ghUPxfFnHKvlI** zp3$Xv8$mec1OX*s9owXBe5~#urd43NL&@W}pfl`F*^|5u&0aT-x%89VSslW_AW%6SuKi5pW&RG`_|4w9=k4m6vmA;f4LYNOYOs<{5SLUE+47*E}v z08yTTpa`kJu}O_1Oz)(0lmC<20Y#)^K`5T|kTfK2ds}io>Na`qLHvPi-Z4TWd%B^M z6o`3@A@gTbO*{im5NCgsTgeCIPb;P6s2(Q3Y;t2JwkcKl`Cg|`}mX!2(3(B{95oCDI8pD#RCLWLJFO7%~sJ|!$gx=ljDVu=S?0*1b z>f!46@5sP`Qz_xP&v!S}2!;1(;i@|TPeY50czi@gt^F@+SbW8K7f1GvL~7ZbwqNeP zj$)Bx3R@fKub1n=a~TDkj+m?N-J^3;)KMU#X)_|U^6!!6&v#m1N0Hx#EZdui0)Et1 z8@ya5CMZD6WZiniQ9H*^(KFx8JaPBvz)Lt_W> zUDbgflaY+_8Zz}>2ErKBah?ALz%#UNm*&Dw6JnpjXBXk9c+lDQ({hqt1G zQ?vETynsPug;mYJsxGl;j!TbsPx?8v!p&7JHp!r!R;$$Fp{YD?naN~!6#(1k#Pbir zP%{)s9%4@=jLB8wpsDn_j=9Z`heK7)`lcy5)U|&nu?9@nPM%B`=Gw|qwwTQi4glNp zX^Oy(M64hHH$ce0-MDU15(fJFL;#{RCi)P~dGtiR7dqj80e3lz9fWEq*3td)g{P%= zc6S_ATuh|$yn|rMu&v_9q|GgX=X}vNI{C5WJIj6fRzi$2GpiCSgVA9j8tkkp(&^}l z+m;Vw*-h~?JHC6nVqY6l*tNfeo%$g+fcT_;5%y~$O>JGuCfdrcDylUOLR>vv5uJ3Kr*ieyxpl| zN)ri%`V^=FDI@>a;#9JmB|Lg3Jc#y62|+3Ot%X<*%hxAUBCIV!PSjS24Pun942`*L z4whN`2_O1q7aHS$$OhzHeFP7G7xH!D9Hl7;Cvlqn>bxRvyjgHM(N#O#yNl%HThh7uxk) zD$cqzB`|bW8!4A#tbrySW=CXIuzS((I&9F|2cb(cigLDu}?B%Z=zYa8{`tN(hbh2xkil^tNhe4CeEKJXpr zC6HP9lsdNF(4_?C2=v2$(7Dr%#Z(Nu?7ISR^qgPGDK~I&J+GPhdC9Ht77ytQc3a+Y z`4pRmTtk2(J%Ww<&8hU~X+#{x+w z$@g};IfxN2p`4u$rdaVM)dnKgc4TT*a3VxlLHSTTPgHNPsRNt^hF+DxG~RD&w29pEF)Q>i)U#NIBh7(D-Z7B_ z4+6gD6@1bxUEWz6fJ~QFXC5RJTa3s0vlgvY&KY%fcIS6MgCBAMyWg^Gu(%3}odcAO znN-$z*~k;W_0$)Eb4CEFD`KZ5SV|lPu!k5eO&|QSkyJ1wX(T7t+Ap@y4`h@I35(F7 zvH@DDB4Y9ZO0&BHyLM&x*hqwljY2?VW5KUwC2d8*3(2N}Yz~JkEfX0YHN4*PZK6ET z#9S7YDpz9sEhry5-F!Yl_(6RoN|{rz*q>F5w0XNnM0i-^G$!96f`eP(__R!DXhcjb z1n2&HtB6w?^RTFhg;eDxoUFo4ZAz`9VrtN1n~Mw&mIToYh)t5KoONCCp^fql3@ga5 z)~urvwTdu4bt%1fzT1G|I6`f+6Y{=o0}?fCfBQgVFSB<8Dlro&DTm5BmZ$vzNcjW9*q^ z5|Ywkd+mRe2=c8`z0;@jvk(w0Tx!KwivB$W%NRTeg6TWh2wsc@QF7u6(a|jvYgIv6IzR)@+kJ$4XVqm5* zac4f>@e_7;q-nKvQXfc%nu{<)Ivzsaho68Pu_JDmZ}lhxNuF`3ZafH)_u%&-LiZ17 z5);2(kw!WQ1@-ZBBJuYDQf&?)$8jYDQXfps)#o~3TX|j~IpKN!_^V$#!azUDz_WU5YtAVakyH|4GeG&2s!Q79JVLh}C-ldPVF|5`4>Qb+ms z6}K%`2w#;_bA*gFsz@dux2g z98wygIMYc%h4HcH{2!kilOR@DRXbBs2AlDyi(N+S3lD)dVDZ@(*0%$Q^0RZp|CL(O z6?ddzWS6Obp8}SdJ*&(SBOp+9FK2CP;#Iu7D4Yyy^(rfN82MWwq9-3}nL7OVNvUsq z(P{+t#R^!MCM__Yqx8xq=X&-*o3BC<_+21?;bMm@F`z=&c8j2O6Pi>%27BjnW zQVQ=<^!c}xWD>hf>D6e?bBq^bZPDF##^U3>GKuuOe55D8A-~Eg;V=_{!!4+aTgt!- zo#e5w%^4Qzvz#|HO+U;~^<6P2xlmcHtlB6zMZtqa$Jtg?aByVZcC@mKNiI&bECQq% z7Dn?-bY{dmX<30!QYoxro?C>Wvi;czI!owz15)k}kh7LA)Mb}2vT%6vJF1Y{&to!w zmz&!dJ3S66#x$7}Q998WjCsKv*1X};hcN?%^#7F!Tr1NO%$_(05&{dLe8Ho=u##MN zg<9p*gpMIyu-#r^I&sc31oxpf@N}e zDEa^IjM6plkDS!XIk_OpYb5&T$|UB9gual+q!oyUJ-TOCnWEIO+g@>Z1&EDX|%QER+v0q1+YitS%ACZJilJ;>Rj;QOTVi| z4qF&u_Z>=naRVF(j1PbD*epE+htV)*bks#+qu>T;zV2Bo!)?V;wWE(ue*Z5-x$mTo z{gx1YnG|;tpqt7g%1xZE)4G+6ZUUXKrBa5eZK^Cm(UPtQR3Aa7Z{Ynp3{dNDkBE`B z7-DL&F^FF~>;Htorruk>o5KIZB3lqu_`0ls(MN_fb9^f<(UrK?(mCl+s_^zDWi7r~ zXc4m>D}kw_g-6L1QsgETGHZnvjWb!S6(kax8jTzf7~+TCSdA+R^T^Xyy&0#8!9v0Mtd6R2K}0K4h^E&AMMZulw~q`VQfB zagF078zN15edZ>Dh?AOI$U(!zF|4VZA^V9p6C+o>bT|N~FVI0_ta0bul>#z$y91pJ6C=X{4>fEosg9Uw ze4SdWTz$}rVDy33`pUx$@k|TjtdV>|&#>Tq$Ka&8nyApw`g>IKlb644Qv>CR!TG>{%;ATtNSfpEFBp=^+D z?Lf?fYJNdb6WPO`J7Q@tovHG2yvo4Lg72OFxoxmCPd1Xq%r|`huCFxDEjc{V@BI-K z^637wq}@z{aXX%6jI~snq&~)@ASWnsz(aTH>xrH1s?geI%==fUS)4spb@shq|-=0kmTv*1{}g2e?lbZLOhIKdxc%sjHbLdnMhlp zl(zL5EH{_kY_vXwOkthP+~s_cE_N4@rFFVM+HCSsV^_dtKLB}IQPYFW zFg|j&YZGU!C*1T=JuMZf+*oNx=??It86GDLQ`aX=1YQ4Hulh=cZ3!zY;jXH0$Z_e` zMI8Ykmq!E`OiAR6`x3G$bb4+algRZZLqtR@>V1A1N*c;pBVdcYTq#!t36MxE_hPP~ zZ;}&+wCK=Qln}N-A31f;G`&@Q76K~q@`r}CtIB=~?Yo{9rUHgCklP9GBu&>A##$Q- zN#43LNR^yzA>Z81oOE;tf@2@gSt`<3eS6()y9{^cS~qNGdwHMU_MA2RJ=J9f#-#as z_}15t_l$l!k*Q56`<@(d8(K2{1lK*&^9JWI+lGJw9moeON35O&`!*zYty<${K)fL( zKkLcNVYFv-^H0&ihbEZ(!o;79^FeAve%`B?=wQGw%(mnkJ6D&oRO;+4J!wtQ&md*w zQd$h>t&%c{ySA{$IL7bLf0%YA22oD&($6-s?sbIDhlyN8RniQ~OHjB_pHC0Ins>Lu z&phbJk#;oA!^Z8!S+nfEYd>f<<7m@(Q#A-SIU}w3f~_;<@n+{q$vCXy&>IhP^%q^0 z+*S85;|-Y7p6iKr28fQh-3E(cS#Rmc{Ntc9Cvziojep!sj8eZPuQr$R17%`)q6 zy=vfUo@-D_nn7z8;@k8S)G>24(lV8SctZ%LpA~%PBz17&Rz4V?LDdw=Y2S`1A?7H_ zn<$pxe_U-3?G+{>ZlRs%={j+@vQY#ruh=C8*3(UvOZ^ zuITV9IRw!WD{O0FEB_SRYs7COSzMZazpUqwq6OGz52Ho2=2_hwVxmgV)qhzQDx0OFZ2*RD3)EaJ#hu8%)RAXEjxH=wJ#q$z^3?XWhEokoo5O(&>>l zU(JE5BlXyUjAWmy`249>%JGML{hI8gG|NRw;C+uPCwA+%Uia}rDF@Hpf1mZzz6i=e zhCV7Z+-xvzW}^g1sEQ2Rw0XvuA2ud`_NEzQ=DnBwIM2Xk!Ys(bD!J*V{I3GX0s~JG zMBnvA($4`T27Zs&X_0?JR6PVNi5C*e@2}bk7u*`O`J8 zp3im@8;H%~m8IrEUIKu=KAM1i3Rm?XKKzxiw31Ytt29*Wvf<2;MS(Nt>7GMiw)Y`@yMmsnD9nEO$o`Cxb?b$39{E(u%>$z_E5rx;% z`9w$F#O3Q|N2}?(npg0Dd`B=!qeo2p%kOUGPjrZ0vXjKlzjZo^Lvx^z_ekfbGkH)H zGPg{=lD_YJPwcUuFv#K4RJKc9!o|~^V0^0AWGKv(Pl2CjeEhT>j>e!b(IGr=YB8n} zo{j@~CiHdwl<75l%2OF;j~((=U&tfri(3+g|8hNAGXX^M=k=DSwkjCp^X2}P<3K{q z#d8gIpgZK#WR1+VLg-~M!^llVy0;mi7qU-W-10seTPtL}hQDU#$xbsy5^1a9EosJT$3I(Hp zeN0I>fjlW{FHyUzs*IB@q`;!dndrOg2Gf4X#Z6;QaDQl#}#f(iX&XY_Q-m|D}^rf^*(Z1zH&A?a8Zqv$>3hGLZw z5N#$@4X(%Clh?nGV|;&%8J2%0>xaWbfP|Mt@SH@={c3}+eGZ%?rpn!i>Qye^S?g;Z zX*$d%P;d7@GA;x`uFkLzH@z4vwEb^mg_CwGMC*g?413xy)$*p^v~JHuH%8WX2tMoo zwH|30bcDu>nMXRnJ?rObk2UVwFUFGFGujgX}7i)PNb2-)t2uMmM` zJ+n1Yu}c^;uBON-I>0v?xw<>(zhdu(>rr+=3$#EmDJjtti}RAB$<(%W>?4k+&@yTLU=%8c z$#1AgFT1VLC2Df!AW;t@#zP%6zMsAuYgkj@-aX`d65b5dvsf*wEH%i8V4>ySj34v2 zLjXpgCDuR41Mr6^ZM3d7EU?1T1+l7YE`i7{8aDmWf9$}kT$+i5`G7)F$ERB=Q!_J? zaV!X-0Q3gZyPf~?+g5(_*kfOEmV_wNr&LCR7V8mww?G=7SB5q6q>}zK9jg`oc2AfN z;uDD`82$w^GLtbV2xj8nI&fU&SfK0XyBL?qCW6jcdmt<>c6Ow$9%H!-w*xOgUoJQ1 z;0D{Yo^Tdn&+-d}6Wr>y2Pv7rdQjHRFA;n5G3NpuPhJWi5+#u%Of+VS*O}dlikiG* z@P0twQEN|!gyWHD2fWSt*yAU=q3?mZ=R7oVT7}o7BP@&5B{pkOb^mm7mk}}kae&z%uY(vZyIv(tO zOHVh^+1uS0SQL{Crd^6<97E<40qYd>)P;pXILMLAEKeVudEqz{o>-28lg-C^1UDV(@L}>JoRJC9Bx1Xb;iF;XT{uY-Z{bSiG;tgnsCE#@H-RMSW4}2Z(j}Tg zeVP19|L}V457C4D8v4o4VJoV`*8aAlCUeVD#GY{c!pNHWfh~xTvxm_rIlWRC#huyc zPn84eG<4>S^`!2KNc3;OLp!oYzyTsnzwJ!&HQal3^pZwD>V;2kcxSrJbMxr}LdJmF zkZni(NvrvFD^lfZ0|Dc*zw=NyuSFY+wX}3#g6C#{@g1ekkoR?rEtKQrxpXmW*ujCO zt>bXABRMMJqK=0vP8Vl*pZWfm_Hcv}O#hMDX7e-fnYO#Lq<2ry(tT*h79NexM}e+u=skWn&$C_RKM>I^hMh-sYIcm z9xEY2asZ5lt(MA0U3NtoP4fB2;JpNMnO0g5#7IM6QMeQwEVFK%fS@-V z2BUP^{^2a~77Q!{-Hv`#EexV3FFL=yXyqzE0e(*5U?=x@m?L9VEg$}Dt>D9c) z`&2bBC|)<1wdr~(MofvA#l6OI+Z9C8)tI-K2~U_TyCz&%czibiAnYW89H3n3y`T*g z0nqmQkA^-Ar=uw=E$z(MfSQK?`JAginLBkYo-H+zN-%YxXsUD!Km0#HwfEo)@WDyp zJ$-1e09}^k;@++#>Ye&WCz?{__8WQ3C=wYJ6SImMI%kGvw2CVy+5J-#b|J@T18PGlPMGx&X|@!+7lDF1EXxnwtICO%fK~mdxguc~TqON7i-E z&kb4Hb(tFcG3ydJ(E&p<5$T@G zbEc;hHI)1vj_fbFe4qibdxpZD^W}DjcZzDv1Fd`(>pV2=@0fn&@Oxh!CZ&-#J*h<` z7XhXS;+MnL*xy70WT}%9#)+I_g%TYYxOI}lLNe_x$=>LK=f9W~&?@<$H^q_ysG!Lc zXc>R}oQXbRDOLUjhqTO`cY<#htqaDJ)tD*OoZ2`OY9iLd<>VYPE_a!_NgxOy%5Wck zT3L@->Y4|fdColdSCOk4fIrMa{s}#i=fqq8X#r!Mu zeG`N?No1wTLwJWDGwX8CVlDq(kvs+BZ@sUjUZJRgi4ouJ|69`A54};vRdR)EbhO4* zODkw}{p;eAlv3#Y&b?ANKNuEl>%$-e`0;0g7iq^|1;Axw16ldZE)sz|Sc=2Ikd)XyDw1@`fOwQt+6yDktE9~YoW7eQ-8izDWzMNoRgBeukYZloov3=Fr^*Imb_^U zwBo*sp8ZGT2$OoVidb&gnyp+Ik<_xpSBd}$mS-KhVwpPU7I(}j2}f^_;ztvC(W&c$ z%zp#Bd)mZD!bk=it&L>y(SyVx%A`iZMa?cgy5T%zr@lr>+`@6Y)`Q9>6N4IgSV>R` znU5Kv$15B_0B*N#bsPA|0Zm(2!zznro*?WZkQh!g&53au$ob;b|E-s!-n_@mMUy$A z8Tw`-*`C6QCakyjkk1>gq_=mP|Ja8nGlfCGgq9UizZam;QC(JVFXcHhLDKKhN%wp& z2&A-|Igi<5oBd#vQ+AgHA+z~QUrp|T8c~r?r=&A7%vDFv8vaG}MfE{GnHG?s#qgbw zgFvZKq6pwg+p0f>FBVS3s_pjWWG>EFImeD0gJfx);=V4*aH0lqWy?~hz3leqB+XnxihiW5K!vj)Uq zPUm;FkC9dDIMK;BeH0HEal~=aSkgwz2J)gtIn2wz_Zzovcw=DOg=--Q*R_%-jrQew zt}<0oHkE{n8IjFvjV5PAcA_X=#nQOyBV#vij2)?ti~QWY?bp@IBbbQ^Bi@BZsW|^J z>C*B1+9^`7JY^?;Dtb`0rK;Q-ZbDI_=ksf|nXRvv4}}dN?@~3YU@RyxX37_X$#Dm; z*^YWNSQrJiq{n(vPzP5?KFOw^uXm1j!AH=^ul3 zAkHm107WnYci?K|aDjnJ7-X$ULcci1Mf0ufecY*aY}U``=_l@>lxg**6p60m$DnEs z^(7CRVgXB+MTVgC3`wSQ`YbEaPQ0@6p7I-sFS$C3{QnBSA{?AleOK5RH>rGAML z_eKSBwa)=!B28i^RjC4#By+TgKK1qXe_i=QO6+z!3*Y8ECc4lIo7_}P>kE9k+-kHfwRjtGEg9y`?t={X~U*<%#4%GZ%pbdWE=)?OaVjyKHkxwds|s4on?pj69|pg+i2aNQ{3 z7ac0l_42xbjf0LXvWjwY+>)DO_c5@&1<$Syegk`9D)L#*3hAL#TD|11U!acl zPW`tL#Y${~J}9X2Gt&IiKvor1{zGEGnNfb$Ez{Qz}ZX z=GTW8&6*D?oT^qk`p6U9m+XkhJMp!aINY*KhLA$hs>P*7^5X5k%z^$_cpFYh$MF9# zkS+T}$!LlL-eIgcCTj}Ze+-Qko{ze+L_qk-fazDrjb>?=aOQPn{dJ&zqN0S?I#*@O z%B0$*93q;5#4=6cQPBn=3E=a_MPNLZwYLIWfDae|FpK~w<|t~}XH=`Fqw#$w0k{3S zi+6mJ88JA(NXBqvy%Wdk6+4I6qmR{76Tz5e>o9O9W4pU#o&+|C@W*v=!zoZ(jmVwi zKTv9VOnsQN;FvSyR9W9-TT6j1kn&dsVHc>~c8Wg^$wG$iuxzi^{kq{DsOR)>HI(s+ zH%~7pjNH@}91P_6kboTx*8zaiHB@SFEa;s#YUO`G$uc$|bXf=^blZ?V=$`QrRUMyt zbN^~*(xAHf$Yj%IPakRg2Yhq ztkCp9P&}*gLZmN&IfF8nTj1aSa01(p{O!lH;7)`0)cn|fk_#F{`SC5Iy5gHI9x}+y zl{>2`QuxS{_y#+u@9i##Kmv|kq%=k6>6CCgqvUbeltaqPxrG9k{Rz!^TMz&$v&m#cGxKWVg}ohBuoVtY2T@fx8HJo zAkbKq#{frp#f?Crd=~=4+pWOZkAry*P^4}BujJG__c!6m5$Iyq~2fy zI;(&#B!^0yTH+4T{)8tdjQa=rGAp$4yBtWf*HTwp7Y542vV|<_hS+Lz<$)6Nv_uP& zO(C(~El_R3KJwl4-earZ&n7-_ZOv=huFhN*|03+h3<=^s1dKe`dnL@{SLYsjIKHwp zK02cz^344@C?`GZ6YsYiOrPoqopAU5jk(^ZFZJyO`p~2;u2iH0b~6<%$I=2;8hX{L z{xb~caHEqP9#VK!b{YM(X&hUEPxxc#4CAUY@btM)N>5Rh?nJqGt!)yPcH%XhT}Y8o6Ken@h)@!d4htKj=XxzY{7AI=_w4Q*q7 zXTRxa*RRQjs!Js~0vMsZ?nbq4x3gvZa$`wO{))ZF-TUYSAZ+QxTy`KlZ?nGE1`k1s zL%UReRx-SQ-2Lf)knDhfr~F;#zj-AlL=^Kxi8GLl;TgfODtev(Y;H$&^1-hjoiy(N zbCMSJLZFi~_8ISq(b9#iS?xv26k?NL*%An?ou2Ftw{Z)Fm9fcUA}Y|)qLCjVYGH+i zDE9oIN1;fEhb7_Ex$m&OsAiRMtt`nAhtwz&nzvo$n-+#Me7u|HPbnRq(8egq()`NC zE<`p+GQa!3t5-8V84e+~A^a}Et5)WGrkFZMJ4~9|>bfzkp$mWf)7+JxpRj68%eZCS zf_EE_xg)V3O~JEb(HLb9?dYy&Crquzi(9xS!crP`<0>ksQr86$G3qa2*q>3()oAs1 z2>o@8E=U`Hs-zF70Uy=Ny|~q;D>n#OJ#fX!&{@oTo+F=BK>I8G3vNhfQGp%lRTSGK< zQ{9ieUiZ=i8e3s1dM83%Q~}V^%F(i_89GFqOV!F#4m;oC;x6XH zS;n%v*uL&TuHy2XNSmPhx;&E$`8W($(7C$vtN{2-(Y#DmMRD}?t)MrUk(82)Jf?< zXUrSx|M7{qs(d6PnNCI0c2AdWR=FSDb9U8Bwqxb`dj$Q%z!%TI>5*eM*(p>X)&6p7 zu+>14H&*BB=GYTL@9j@cYfKTzAv(wnHap(iE)*s5VL;#6!q#9?KavUdR6fH;i{uZWH~P2LVE7pwcg zS79&Y4@_XS!B}_$igTM3?>au26q6Un!wkrTnyT&V>>klg%1ciK6CA6{Dq%$My!(ZO z28tR(VKHP0Uf+9jlh^(DHZ>Kk7*0v?OW)}Poc?nVBO-G)k67uVD@oPnd~z^2%J97o zGb7k+s~?Eb9sY4K#}%pwrviiaTL07;)RPN}rww(Ed}oI~BgvNr>4fjh`BSKYZIN z76+uBX@CJJn_qsy5;k~Y5aKR%e!i3lSHp@z*A~gXDb$e{n)nHkG8{t|QAw?KZ9g6F zb#q#gYU0inU9~(6-u!Y&Z2j&(NP%lxko<}n1(qpo6{pqpm%Lb99{&@X;@#!nA1Yj0 zJl*lOq8x2WQ{bT~7-(9(eR@z>bn)RNwPV=fF#StR-IiA9m*a4?XD$zXa6rRFY<29HiN+9!cFAIy^lrPU@!*mwr8FT zZxY)c5|@UpZvECg?#u4)m^FuxlV7uQp-W{E()1yUhkbl1eGe(>_dT4JN|o*xAGdu_ zxu^@G(G{6ZVB=njbWX+772wQHQ~rJemc=8skG_p;tyhkjlTKF1b=E9YQ8ofzoB5LkyI5UZzW5 zy?;TEOFWX}+UY{;)(>_6S$YzD>u68t&xrx4LGFyO_^S6Xy?#q^_7Y#*N2Nc}iRhJ^ z6r&jV(1oQJuQI6;|I^yxnNM$%Wt4pR3Xoo#84gbm45fIQP9S4{yE`ljIUV@F!p}gm zQ8dj?jQZ`t`z3(<$c}nL98ymJ7WwL-NP06RTT8a2R0J1~Nn2*SXIrETc`(IQt->_^ z@_S`-YV;^L2_5YPdgfthmG2%kUpke zxej-;GbTUM#031H4bZMw7k=MF#o3j5L2T#^Yu~P@zCvbnD!fu_V|v5b4Dpfx#zo-O zaW`3(rMIJnm5mfjc+ znzv^t*I#(&uz=T@WwcTpWwA?*mcF4Qf;A4_1^1ze7;$$W{Z!-2jSts)b==O-&G`eb zk8$j94 zg%y(gD6Qa1DxUh*7QhSOlf$`dK-2M0`FQ4=Pi$0j?od;cGT2#VqHYVOgK*A3vm-dRlcx+CpAfLT&*peY7`3vf_z-{9^A z%}6J)aqJ3)ix^)KWY&0un7uH5@RB=}IHj37ixWh1u8GSj_l$DzJ{pl*#%m9Yz zaB0EB~ddm?@*@b?lC4^>eW8gqu@ zxX}R=9H(;~<5o`Rg#$T^{xC?sT4uQ#B(Q~>kO%lqXg>!C9a*O>m1_r~&|;|?D{N&H zjdWqvFO+V?)10Nz5mZ(@a#>vDivcPp>J0h;JOCNX7%=3*DPGb#>@KYB_IHxXqECCR#%}*kuHSX^MzcK zx5gDRhAoi2l|}%z+TW;1uiO*jkoC>PD5I_dJN!ribSOU1;vC-=7xx38pCu)ytOs6F zm8^g2e1UTC*V9_96Vw>73k(Xv*M;p$bNR`1U8I4in6z+0WXC7Rq@u+;iKM5-ZY^opicGSt=MT^n9VHvFS6)Rt3Gpl_MAafDNYe2XxB>uls4+YQ4=3mv!G= z5y7r>bq>5-7QZ3<0P+5^Rzs=b7$A04rTorBppqb3fY93*67~{+eU~ufrbur7$M2*H zd2G3tH5tVpi7zvU1Vn-3mVi{!(EH(_`Y{%nkpzE8^Z8oyw=#-Q*S+eur&lAZQH0;r z+{qE(93yU8A{EDT1SEI0s(r7T_U~amhW1m;!&bzMNH&ehbiMe^>kI$LF=-r~=hV`? z=t3+_7(j&kap<1L;UBB1!)UgOR$`9Ve-raotH>q&8_y=7N@c=GuQN7p;4p1CBt}4S zQod5B(uuI*dGdNj-Wl-)ZHzETo28``3`TX>x+n@4d5SBynvyS()MX-t?}#t5a^R|> zv*ODdNHd$FD77qHsY}XF%oh-Sa%F{xX@QxD+s*~~QY|WMq{%Kcn-4F*zwF)i9YxkF z98^_sCjNp%^o(OX0gHvW#7dGncJ34wy}-{F<>y@j+kD;|v&i#p9iFL1&OeJ0eKL{( z03!-PySB*NIJCmtQ;@s`s3L|Qz&>HGVaS>o(DF3?1n6WhTmOD9P79<+W+!%hzY#rL zRD@qFySy0@8mEo=SXsax0mmUfb5%j&SPCQG?)55JmlY?DjBoQlJ%#%{9b(0ii9`I_q0xv59l?m$550DVt4mCm1?WKo1SMYuGt@Pt1$Tb8eTL z5F^6OveD@P;2tghksix2C!X1E$bLUt|36x?9gX!DD%5m(zkB^_Pc2r==x_xPSlf(6 z*y>dZOE2$1+uwakF_RofRyztASqF;t?tBVepLpnPA>fb(k3QA`INZ7zQS(J>8G^8c z_At4oEwA1|oJM7hd&+-jc(|WrnqNyr|9&y7+{h5%m|2POQ(9;{n1V!iNnB19fSG!e z7i30t21e%XRTl40NNs${TNJXp;h0$tW)!FA<2B6Yu|_AE)aOuU<@ zy6mdYIa6;9dG~dB7U|$W!LMzH-{xiC<|r@}uJ|>^r^YdgjhpEs?CPm-e4G!3bc-X` ztYlPZw|Cl0VRT=1uV4q+MEzsXEh6agAKfKs7S#d~lYnCVa&Ya6Vwse{8YxdO|5MHN zl&M^GZn~}sWbfDnU4K?91i~h}%!p+fdya)dnlPp!&64;Z51hq>XHPnC!6$3A#DqnP z>V@2SRm`Zq@;=0YK@2kAC(`JtP9a*U+g5NrnhA8};JFv-Wo@b9jD z*J98hw}(|B$N_$QpA4@LJK*xqu80Wso5F-GrCx__(75qEq3H%=h|qF~qma$KV{o7^ zaC{9#56i?zweu<8kdSgYtp*ib@ZaPC9YAyB( zK*HpH=7OE&Y#u76QK_o@l^7a1Qbh^5UCb6L9lRC)RT&gW^l+#Mb+9~7U%PN|>W&lXd;dHFC z_=*o*`euGjkJ+n59ofgLrEsOxynq`5+UeYrsE^R9>E*YaSU$-AaXQ|U1;(Ei2E`45N_A$jz^qAju{>g7L{hEH64o@l)TiBdC zrfbAL+HDn9{uZ5O#bW+Xhc@->;J|k^DbZGUnKR6tdNJ?cYku-F)41Uh`#GCRHOXMO zy8CPGm5gRBP~UDRKwIg}&!$b-=ErP@Us?mJh0GDVN&10M^vlGaaH zX*yw)aXY&84$XgFy_hs6Xv8x~Qml6ULG#oghS`c-nQ?JhSO%nWnFgOJY=dvTPNjW? zXiR_-LBu{Jbd^2smT%`|PG2&Q^tZ*+-Hc((NGfBm&b=Fh0G9EAkTHQ^J}@|t)8(HA zrpN87R){7N1jhT*6Oq|bhqdG3wbX@{x!fxkDN+v8-NiNIBi(#j(FuscT*z|9etD)?vB7SmNUytK*O0{G~VNLx{b+OpAa6O?Z$wp#oP!?o$73r&+6)9;3_;)35R88t~>Hs*zPz$;t`u~jqIy6|T*DQn% zDiUTJt$_8bKId**`yisn)wRySPp)75x%R;Ujx`kJU;aCfB#_ztX_*UNpijQw2B~@PEuKe#;m?l&kvYyw09rib3B(ZgeH-VL79!Nf!8dpL6 z7}f=EiHWJ^Y9VEsO+Rib{ASO)hHq#ZfBEa$zW%qgZ(w!SuqR2W>np;n9ih|Hc)G{f zy9qrqrnfmbBB|t8;_gf7FFgmdoTG3FgBs+&q>_8rU5wZaW^!wlm2_~j^NfACANt== zo?i9R_YWc1B(${Eme$f5&K;Otr4uc+S=a&!P$0`Z&~8eCmA@aDJSX?KROeYhuJqCV z9{asEZVxS@1g|U_Qk!hwANEfbGA}|ML#B})%W?t0b)bl;Uu>Dt70>u~ zhrhYE$s@Bo<%(ToB5=mf@#iv{!U*hE%PX zNa4!7b-x5<$7qIVkp;J=%a0B{>}gY}Bjwh;!+j7|uFG?RySFLU+ogJuTTts}DTaJp z7+7tfXDoz#r6Clxr{WRE=hijpXgszxgUf&m@JDdrro1lmvyqn?G$+W&1|$9{57Xjd znl*m7M*Eqdy~eUY1bkifFAkOZ-ix^WS1Pa+aaYI|Ozqnw911Jx{@QS8Q4v7t6;nn= z60nw^FtT}E)B~GpgWDiip^ZBSDrsHih~!Y1jRYzFF82|t07AN+rrj+|ecn%((3XWwEGdERMx)L!&Wv_G6#Ty7m2gv3@y_is3S= z$U-4UXt@8?!3tt45R*G#)Q0VfHFw8(v42yexFi}2Nc`lN_7dmZ6kXo}sjOZ`H_OxP z^e6fc&JR17liTSIp^u}PaW1aoCPxEvaRO7YCQ!a13WGd4){_YX_^e#=2{pkOoHr0* z%D6Qcr=%*q!GP={!I7hi2cs}_IA?E@t5b50c@v6Rt7ho7?>^i>N#+XOw1;~|>E40f ze&t|1XZ|rsBCSPwjPx9lMVtw2eFW0DFqXNg>Y;`8GN)%v9G@hZ6Uw z5AH$ih#jUX8)&udRg38@x>Q48KGyLg|2J64_9#>yV%T^Mcc~A+7Q15e#SLj@GS!HlzBG7XZ`5)x>05_0P}3I zk5S6Ia(=&)?Hi4-5YN_%lLd=-S(+QtllfR!<8?Nj>i_d0TOSI-ZMDoi8ApWiL!f(4 zKA68>j-dyEIR1#hmld@pYFe0W5IBafBO6}68-n@9D%~gOE|dn&S@6mBIJ9L zqU6ig5a)2n6uIg>9Q8Q0mHl5Q`!f7^tuHf{lHZp(zv0c|exJArf^~(jv z>3tu`aYIOa)*rD&q9-nNM!Thq;P!^nf$nV(*vnQP)O3{7&`t?&_maCMRj5d5+6p-e zsR4giJgkaUDMwv%_~tqK-n#l%(ag$LPiJW%xo_tW3hPoO`TumUeC34t@eK(U-#QWY zl@d<;@O)LfdWoUXEFmf;x-i{3p?0ap_?Fd@Y!96iThK)7aB@ZK*o9I1s_ea6j&cVF+5CO}^=b@3dmw}1x{ZYZky zn&Sd(43x6i#dhs)Xdhg%N$xjaIuNwZ6J}H<>X1}aWM_!0F3B}UGl@#i(}*dNy#1Jj3!`Q`$MVQ$MI60|fh=KQWK1*{EH0%V=m2Gb#3n0Q17{TX z&2mW5D;0Ce+qlRJ34kX<2b4@J`h3quZkTCfW))ywzUL#0Rz7@G%v(=AMRwiOo@aRS zYVI^sDp8--uI9Wj;qNi_Kdp6@V0jKHaQSv-!Al07AgjKixRL}HVHSUps`ZWg@nadM z9luPACb*7)!SI&xuYZi~X-9ErYODSKGe*Q{mT_m@t5`oXL0iYGrD|<^rAG^e`RtMC z?}40F_K7V>YkITae#{6fOpH%ct_Plld99+%tA6VWOzx(bn{NAi=TX<6^I}1ia{gEB zm~SFD>!sO8L}3RmN*R%P_A;pVx=ga0$XTE8cIbI;bc-m#WNiRYk+OR{NG@M8Df{&U zKjqdNf%hAp%0Y_(yh?{a;Y&^{8HU~)DWPrMVgl+|iSf1SA9&N5q64%iPk>b~zU2d? zc*hle`HEr-vSX)dINnBbfpcJ@HjEh%UinyasVDHLn`9-{rzay5;rRP1fP`yRnEq-T z03Rk?f`=8;&lq~@AMQ`3%8z$Q6kk6&uIC%9)(D!1Uve0r2F`-peo=%xYlKuHvM4DK zs0D8(S+Br6>S{=g6#Y(B#=3Q~?rUAJNalxRMRzB0Ab5*@Bf!vBq&i!!i+@e!-wc$U z)g-{jGM}SZJ~yWtgDq64G%}lMcJIg~L>)f(t9XNO;B`kmnw5G%7;<-4_I{h_$5wh1 z2akjeDNZ33J+eY?Jfg-XGD4v*YsBPxK$wq*S z5#SO$M=UeDL{kXhduVSmrS#II8I%F}iNOtR#DqXtM)+C<@>K~wLA%N)#DxmBhES+K zKSQ2ynNEcts3tXm;pq-d--?W3x;1q0taWJPE^;#BXjMS5$8;4e%@eCF2)WgovFIf0cDpt1}ztZhZtA(2`fTTHz>EcFo<}V zcjm)t{ff7?DAQ9)-AlT$TSh_&_~m(Br5P`Z$W6?{>^l*!o|wjI!3mAGR(=e;dOa0= z=i8hfX~%mn#JZJapDvTu-!Og07^R=MMHY&;BV@31Ci zqU}<2FTxx@uuZb-3xbn&;1+q6f40P^f0?rmrHvaI-32nG0+)l&6hEO!iPU3Q$!;6E zg|8x>5`J4J4eaHK>YfJ6)5*z#M0-kHnykvB_A)1yny@pZQ{nf}rjFKsPp?G--KmR_ zu>z_O^vFBIpe_zUbGG0Kjt2 zkuP3M8xJySS|=1_0e_fHxKz2$^XY@JLH$5CMdF3Wm3F|L&a_*Q|3ap&$Ho)nlD^Vq z!{`Sb9WsTl1a<@vhTNZ9c5s)O471Bu>kQyg8mcX#GOm*p58ZJxi|8Hr^X%8x*!S_% zT#2F-a~^H{DEdvp>|5dMI^%As_H&Io;u0C zK759IH{sOZwmxU!hWK#BP79=KOu8Y*aEQ0UilB7+z`~XNO`*1d&mA7zR@U zu2QrYr?$u_UIZ8juc1YEt(wO;Bg(3YG?CwegRZZg(*wU9s@@Z5l~*Fn^hMxEXAL)Uxq~!iG$GV^{`P zqV_k;Fki~%_~rVr@9Oj4FzRo;w0BJoDE1JY%RYnD1KdfCoiKkDj`xHA#N4?2veY#a zSjOlPl*jC4r=7gzd}He%{wia0>=XUQdX08 zZ^wz$49fNOm{zs{%N{@7;y|aft6EIoK1>2{3UO?Usr2#nGP$G%d)`?_^`7jH)WDoP z$LL=eKD|Ca4KMRK46&RVJb+L5WRaN^eGw#=WB94s@#%ha_?OVqvu!H`)j5xD=d=AO z8N$`T?+>`zS1lj--7cB!R|j@=ln+IE5u`-qV)hXsAtELklRIZ4>~Q1J-~F=5u> znH*MzGZpihru67MAz2rTZYS=fhJMR${e?Cr%hg(1Ya4xlHpy)zaU~=bt`N&;f0+q| ze3<=fRc1fUfLpsA;hATQ)YT!tjOgH}GuOyebt@_6^bYtJct48O%UnhagN9)+|Cj?C zL8`Q^5fD93?C2dHC&)XV2s92VilGh-VIzvC#WR!Q%NfPL>eO1?Kl~jF4Fjrtht#Hk zN=kS;!FNnQGf{ixd;Kx!1dyo79!9hpp#Z~5)U^gXC2GIkpk@@1l|xmJ8r2t`ffnK5OP zNZwHDS&|=#?v)B@L5`sn)anw`k6Odoy7``>Fy(zpy6Pd+w)~;fu(yd(_>pmwd~%C# zX(S8}$7v>+U}y`GWEDfxFgg4$*&sWs%<6DNt*xTyWN=A5@(902A@-6E6-{_6Z5^&8 zcbi|b05x2+q_<{hs3v7uA9!2z(lyt4Ps~4Q@@zE?H{6z0x`l8e0YvBw8APzRMGX1{~gVWuSI_%&p^=@ z_*34T)QLflAGcaTiU~HR$NqWIr_3wk z#f~4%J6{i(uWwvjfx3fHK+I}5S*9b}hh~_@cEzz%1y#9sciyWmf$zjSBb8u;X*x); zC`c6qU`e{Hsq{Xr0j;sQ0OlcFH}1VXN*iNKOhneCdse+^)w zmbMD|(N_kB+D(^Ct=k(W-Y%;Qt&Gfdj$AfwCPA#rvaH`&UeWAc^vd@lLi4Q#e0wde zLZLAg#yKUO|DE*<4(c~P%fG`NyA55(>wp)eS4=ThoC3+Yp%ocK-S*d7pG0zkP4&|e z$M0D#{ZoV&!U?osML2WTkAXjq+ueBf=I-_vZA=?Tu$N89LTN;4O#VtgPAnXBBYOPh&FpuvHJk}=evMJfzZWMAbvG%H$+gS?L+UTAU@L!6f|LRa_ zVZZi=KvYa{fe*=H0f;18xs5FB;|(gPP{$sN&s!i>^qRy&*hJH+P3J34>3rxE zE%eN=dPPYRS&z4~$Wbso|96s)tb)EzqG!A4n>w;pxftgzTR>M(#SN8PjO>HC-zqw; z)_@m*L zziF}}16go&e;qHE{S_8e>jCg0#vz{Ge6pRKH{N*uHzx8DBS97s_$Pyi_O8`Lo}V09 zC2SeFC36{S&SPs^#)8*OtA4A2!zMm+`CdHGDT5^NK#i&MDwaAy|GX6n{7I$M68%nQ zPYC{)XXpQr$`{c6uBd3{@L%076*LaHyQ}Q|N$~8A59&}A7Q|o5RH!%9``62vzleUUkrqwslBE?;)D#qC1qK*MYEO*dl>I&lJ}HKV7}IJX*@ zWrvO}b-f#Kzk~33D9*3~qdKG+LDWXWw!qGni%!fxeqDa|6~`AN(7+ZtTBG=ALyXG{uJx2Fj^{^gdHeQNUuhH8Y! z9p{zB$N?b_Mdzs&Q|1j20oM98W$byu>U7zYdm8Z!*|a{*UC6*jZ!R}XTyfx~4Dc_| zgFn$!fGq8v`%gy`zm?+h+ZX!-8=C<cnw59wQoFP+$imYaNQ)DRL4;u1MRH=@agu?~^#L>_ z_2g3SIZ-<@Tb`l?9tQkc5|KoESjSQsQ zqoM21l7m`DZW2Ek!U=wV{72OJw^0}FWtVvGy}UF0;FgO<%_E94x$#IJFkX%#&!xM) z?66UbvcWWaWj^V-G<3=#YQqLXX*2sDK#TGW7IxA058hy?N2{9r9rk@%vpUkrWTPC| zL_oUD10!j=-Gyi9VdP**TIDVS1ITy^dcFHo_{wvxP)cWDCwmCXfFD150EoDuMGhMg zV#1hhm6D;V8%l#5URFC39z_iB&bw)VfSrF{{~RrPy%9a zqBt&B`dD3H?txTXx+m;KX9F!GZ84;u{uU(qMjA{Up2Yx^xZ)*k4~#(>!aFpdW$Z0P zUm%gp`A*EZMz<`4H^dFZsB^0dfwD8l*eF+!AwN&S3$IH-G~BC4ctHeG37LK^5MY@? z(^%EzvBS|y69iw~s8G7_Upx&(c{vvbaWYm~2Fk{yM&Uhp&`Zg9F)g@ z0(@JGp&l%T?LH%ysW5r2L$N9|^wAkeAupjP4AU;~g-PH82XTog7n~N{%O#Um3z39z zgHNNv>RbL~G!Ef$+ua8u*SkMbTA@rQbtX0Ta_sN`4I7Aal$vWL$Yla<-UY4GrpO&A zyFoq=HjcABU18v)z~x~#{h{(v{8wL<)mIGQ<&1nPk{4TJqaX{UzpNUX57rHmqa(tJ z$&o8>rjG-EaY{hBD%d84QW8&>V#pq#ug3hhpmQ!((}uND*C?J*(hY&tM;Fg;2WC@r z^C_ACOna(ft-#y6ZISZLC_^E?0JOH{{y?t+J5CfG%S+h=NH~?9`V9)L zdPBq$eGgQo@MeRt=vw(blBdqjZybK)DZWxd0K^5^%zi@WH+yR_v69gkddT8Tmk^bQ zcrbe|C)PNhsiJ`rk1#+C#_R7AAN56~yIhDgjgqkuMy#O)OA~spGA=qAVc}`ftIAq5 zo`QDY`F1WYzm2XsxQ3wd}l;=iR)|ZS&0+5c>A>OwA{jOYmVQ6}2pU@`A zRsZDu2KHbGhKWa_?6eUivr)7SG7F7RSw9}PW%zI_;zN3or`U;jK66C^7KeZ_YLJn` zSXhID5m$spg>m7zKJ5WP2(oAavHi;$u4!f)+2;yShi$3VEzt`pf}OCI!Z)pJ;8&6} z#|#KMmrlmJhX?wTnv*YIAVkAyn34CD`t(N*-i(Y%Am2w2t96N$@pwoyXZ&V<9g7!t z?r_{uF1cKXG70#;k%ysEo^5XG)QY?XBg|4mG@|cFVkNh00}q<#!3n3iTH(A4!ZRR~ zf-;KR91!4`gLWcHglTR!97u@(J~YZ91;x}U*4E2C*C57MS_h`EFAfXZ43DO^Uu0TH zvvOsZLe4+E7ym<~>J$id>J)(Eb~ZROJsWdYVXeV;-Sv(*YGKZIbr7gKQxp_+9oYe*d+qVVlk1DN7 zMHCrGv=ZEGq``}%bKENev$rLx1`e6XqgYU<4x1Eva7~`Z{%S(^XZ2LfXV4QywjH-A z8Q2i|)|Lhn+OnhQ%Pg4#EmkOJRgN~O1~`J&n3R(+Wl%ZFF#ISP@8XHK8)8!Smj34X z%xbCsl^Do0`~+rP*#&wI8*=tBxYNoMM9*<6RTiz*dn)pFw0<)%#RkPBTjW*WEXaAK z9?*4?6iZ$7x5i{4K@f+BZ2QU7dYpaDO~&G{`*3*G0)Zy305aMAndPJuz;Ba*yw-{rM2=@OTLOc#yoWhWBz|Q>Dxcz-a6530VLx~+zkmZ%l@kj|;do3U;CXzU zoE{)z^&bXy$5vJbNJ)8yoCSi=%~(ov;)^pJ;{+PWW%s-l0N{h#X70Uz(L2g#(0YPn zPxx{zlby5J^8qm_KQ809vx?nVQiN-EV>Q(pZq)PeJT?Vt_#j4u^3L)2LQ|+o2ya0S zv1P@A2urt&epRiD7R71x4`z_q;8jul7WnFCaP5MWnP&A{GmKFwB0fK z@LqA#)d%qek?T}5JPDizje-s6zf6VTwYI(APyS5)#?!5DmDEvc;GY>OLSciq^?Ko8O>DeOP55RMouXkpHBgQmQO31ICi!7}&DiQ8y z+gqLe(1eHL`#^6;h}AM#1Ot3Yy4sqmqWB{Q=40i32h~ut3mvzxshfVF z>Y)1a+rXIh@`Y+k@u8jaq8Cz#*Vh&_5_Sm{uO&9*7BWR!VFn_L=b%nxa*?5e!RzD6 zdKZTH%q{R9KvSr^%+{674ICx;Mh43%g6rVMgpp7WY{x$zBNwMwC>QrvZ0@=!Ev7Td zlHA{Dy{(p8)qd^wZe6dW9vBDE8f*_XaC`@XEm6Ptl~O{v*GsLaNr)oem%k+rh?e9p zu<+@`+EurBzX`h!j>evi+sK1a6#z|g3FV;jp4QFX`mt9X7~IfbC#(sY=}kMH6Df=H zmok_1ewh45XRA;@4<3M~_$IBobFTKv%-ip&@b3-d2SAFAE6V+XSj&2Gcmqqg0X&#m zqDwpb^~C&P$*D>)NHy<}EOAKt9E(HeH6P^tdx&YOv0Q_OAcm5D_YhYVl}Zle7#M^Z zq=a`*Ug41#Q4kZbT5=iRWQ!JOFS$xv+xzD8(L*2f{d&645+sI6+ZtvPII-jlWjQMF zttU0ukrc9&Vk83k8n_8%v*LGQ0RR$@qlp-bWg1Xw#(NS9`g#AN^g)5Vu(@GLYqjMf zFo@@NcFS)Xo!DXG%YAKMRP9&BDJ>ew6SBQtj4JOcYOjsc81h8Du|h;nCT;Op?phGRAxj5 zqAXwj&$B%0e)}jv)mcs+UZ!~Wy`pZPTs~aj27y%r;gljPJKg zu6p`0(HMElXFQ!FfrPX`Eyok=j7&AVUhxxT9%PEhdGl@V8A0j-K&)n9qpag>{Hz2+ z^1_;O#>wT8e6AE~C8FB@xF*_5YDs7S90-q7GSMDTK%@ltqMo}Qm61*oDqWa)AbDd{ zKvR=O(~4;8IICOcb^!7{QL7(W61DJx^Y$@lB7wq2eTHZ;JR6?%!rXvOAt^Qidi@lV zdon^|=FX40Tda^6AiGu24^a|87I6MGPy8OR@PKwMGB?Z-0Yys!z{#4|z(=mP+bJSp zX1BZ!f7F&$F^PxXrC_9~fcJPfkZS`dJnR+Uq3VG!d=xu^BaC*P`1*Z{S-`3NGN<&8 zXWm85yNYx*&*EhhQf8#8>kU-LEs1%dDHRb?G`xbJE0Kj0{?*okf{OL_{u?j}vt-Y< z#O!n_N%_0rTem*k4pkj5UBR8+@$Nd!sju`(irbbSR$US!Lmr30CKEc?}0^zU=Zq=6~JlS;7S*;vZFU1M1g%fLhG<+bUTA-mW4Jox$j zs+Xa&R;mW+L(9{FAdkL?>Ukc4z0L@x4pM zp1q4&S7x7BYt~y_Bi~w`Ph~3iclfyfGFJIx!-%~hvS~zjS;9t7gdL7pnOB`5i|FTb z7otrm1C3)#7C6~#dUI(gBwjd5gN$&i;;!s1$)F73oYlNHPKFvJ^O{b!b6SxuQnif1 z#3;w6W%S*>;N$O5dRike$c~yFD|>DGY$-XkJjAP^$Ph9&us)!3HO$C`-a=0P{D^w> zfJMgrvSCz@BNX@!3tP-E+8XV3jiPMoKT>JyS4DnG4HOLs506t z(x3qG2O>M&j`a&dgfL9t^7pk?+iW@o14Clkv%QKe6zza_4CVn~N#J#RS;&&;^HUI@~laQ6SzgSns>pU$}k;0P7VHM&yXT?Q?cCTM zLL#%6{odqSH}aUp$W2RAp59pR%=C5P@UIr*GFi^BVL};=*V9iUr@+uC|F`8!DJm(5 zl$lYb3s2uHadUn@cWyP@$P<2!(;h-fqIoB4PjndeM}xQ-SeR<4Lb2_Cet2=v*G;CE zi5SFT+1bGQz>Nt(6Wn%tT4^(PD_)v4D{ECCXLQ=v_f&z;D~G7=ub6|;>-<~~9>39z z-LafaXx*?FI|DBjMEVO(#|yPWZL$F+SKV=MOE)bU;|T(+x2peSRms>oEuBW1$&;36 zBg}vroorC76;Fq!5gjSXn6M`iFm;e0Z+Cd;(1LI;-=beSXEncx-{G7ZDWzXmfj&0b z_OpZvW=s+JN+jLqi=e4~Z>G=`@%$9I>|`?T+mzKDi%5O!y8qkY)Bg=8aE-ybDfvO7 z-jT|Y_%NRbSZirpOYf&9@3ag{(8Xi`Ew8Ln>;v3SOF8lP)=~ejdxJwv`r$bxd+3zc zyXLH~9TWF-b@0AqV(tLAXEd6C9Z4t0(K+di^@(TcVdC=O#&6rK8QzxnVHwtzQ}M3E zha%#6G<9fBGoU5rGiK(G_#0Q%V#`d=gD+lY3s@2R#&L2Q5gB#kNnS;YwxHdkGkaWL zxCI$K;2@jwtT!s?rK>H>E*j5}r=qa5DB+6*k99Y~Rb4O7*!EqoAlTjM=`k^4nU6X~ z^QY3WzX=WZ%$3pPakCpHC*$6lW^}DR(VCp>^gZjL{uA!IJ<82a6UONk64Gg`no*6; z^UPB7`i>Yrqxv54mNb7jvNZ%2RKTYf*pnbV*E^$h%}7WHM*Hi~=*4tN@QnrXIrJnM zh(EmAhk*~RsAY4yf7Wp%j^@{mcV3EWS|0yoN~Z}^&S+o9WjEEEi%Y8kTpK&9yfCde z6i>D84{-~sDNw_bTuVgJ5?Hy0OQoTg3G|(S;|rFzq02p6szI?rYdDj)g6m8*v7;5Iz6%@R7ZeYG*N{pvDH5gUYfDmIy4p$n=_Gb8T5;~4l_%yJ z=}bChowoMO3{jWh{qcB}{8ygC#(#5WBcnYxMsObG@|p7Qz7O_805oMf_1|?CI_z^S zEgv=x4<4_EWZyFW!N|=nX1PevloAj*;5OHGLp8O4S3~xaAj-uq=DO8C5Q>zA)z0vY z%Rj3VFPGFvM{o8*>wE+Gs!)>oid~9(Z>$l#N^Bz|ch7DKKSw?&=d^s~U@!P6)p-<$ zPoA7-FZulG$1TmB-T(8)3oCe@4@5D(mv`Hb?d=rd2psBc!LTkgBBpmZkCDZghi(3o z+(49m5gFs=ceOgra4x6Aa;(^h!Wt4*S1RZx_(tTYLrzM18u+fL$V(~>u*3Y+%Vb(V1q(}T_ zs1fZap0tYUuW6CoGFskxk-FW}R~i`d3{gWpD~K6q>3yl&so#r467>{27A5&)>+;BL2n8sdEwvFm89NB29A zQEPk>0-nlP&d<~_3*hFO2^E9gSbXTEw}uk-WVy7poOO{jI0NK`v)dk!I)sg$C*4wbUb zJ(1dt#L%HN&jG{2Un+yj$p?~_jUw6mb6}tR_43D*4#o&@U!u`G1l|LH3aX0yHPabd|Jz&W_ftHB+1Gr>v(>IdKsimD;?CXy4$p#G~aY{ zTd+UPY9JuuEEvpoh7w7wKJQn=9g_>Tm%v6{gKfIH`Zh-P8>Lb}R?oo>fGiZ z2i7#l_+`vPg1MIbh^R29m|=UEQQ?(pqaT!Z$+DfA9|laH##1pt(ffrrETVUpk2fzq zFs0ZqcXx&L0SVXg@N4m)HaIS_^eRMP6?O5al>0?1`p5RbuW4A2|=g);9K50x@N?x$DYp z0o8m1qP7Y|c}CoHTjZI-gHPA)pt4EI={926Nn}kJPDko?h);r&bl5P_R2o(w@}oto z(*=cs1WR2kwqQ2^LTO7f2`u(}Q?tx6*rQ)6s{=H@mi;#P zg!9(DPUAfS#b&@!uas9(K-J>;#zH+yyBNZfo*5QSb;;)KUHkuT_&9lELwrJv@^b+U z+=dMj(MDy+M;esh6;3Q#o1kP3s&xWDy8wE>VqFAamn7_^k(W9i>(1CvxI${x2o-mh zT50;p;1D!+?M%c`G|G7zO6kJzH;6)&4tF7~GmsFo?JE}ZKHZ@ZFNmMDnj>UR%P8OH z&s$>5+jsfhQlt+3NZ+c!;2U$6O54E6=7O@LajV!%+! z0^J2jw%kaaamfFuHxX$7rgLKS5-$bmCMMOvRy*sL9l%!MY6)VCnSKG1n5*FU6E(QjOP6zse>zBmtObnrl5{3J7+@`EK*mCZ=f&1F6 z#G&V%a9x5VE+M%I_SqB{kHH$Bcu3KtjX*s=K3EEYsV@Ytesw+lffegj zTNE!uGo|TQ9Nj!DhuSA~^PE=Bf-F+qG4apM%{edA`nTD3IgqXhR?uhR_K*F@-M2L5 z?+&%3mF=cRQyo3t+FT2<^oN+rAf1&HD@^uDGn9QQ`uLw$N)Ik!yEj!n9XaqpBYJ~G zk$Wsa*4Z=R*M&szmN6fBJ4=zC%GJfcS$T1<{-5;XWvi6V3K_Qc;V1P5V(QXCF|!w+ zYyZGTz2MHNhaN_E3bIg>LnAv%tIFZ%j%T`sq!H8{9am`3xP^5Z_0PKpN;DZDVQA0w zV7eivY5Hgd=*4{gdZ3sYa#*6p)5K%+@`V-m-25tI&hm|2j(OWXxdv=7Hi1u;mQNyj zx%j*)(it}-)K19jtJMapc9AsG1P;^G<7nFa>}j;Oh?GJW9rX}Gxk~_RYe$oL zKCEUUk8OCddM&yL-5mN;jrJ2zW;-MvBr@uaV$&LFl#pUP=wzzG4L~UB@Mh+B5FpH! zhBvd@9QDYGpFWg!9tG_mvixkv=)y<`f(^PTq39cd*mGv%hbt?Cg2n>z6#+t`^Lk2h zoQaL?Yuw`=&03$#wC0$Y*-6z0D_wWEWolu&fl|o)b@h>XfA#j!8yG-pcHn2cVM-G! zUZ)-$FjN9c&qJbO&*RNaOJd!wSg`|#`3!A)Th~*3+`RkupI)8Df1o-eXw04^yqXKI zRD%p7ZP%tvUhFeT6{q&R^SpDh;g@t~bd{}OvcXmt=j&~+cG{+uH74!Z(Uki!{B2v; zAnXQKAlyRP%UQ=IFZ*BrO|Po!s_?*-u-yYVGJu59R@u-j^*~3+bAD8FAd0lR;#KCb z0(5{WNaN?vWuqaAskH>h*&9?gUHsTYiJf`<9JvVjl#<-LlGO!Jbrc#!OOSw5~8ZDQ?Bml2{-accy`QW?~W*; zlY-FaPcrkLBsAe6AL)w$cuqT+R{vsZ1eqOdd<>}gU|Rsig3b)kRK&wHT`y32h@jV( z+T04w=q%+*bE?iP7!Pv7am7KK;r0sR2*N^@yooO+alfhZe_Vv07v^w$edY8F6?Igr z;uZ&dl#acQZpE<~3#%sH?K$Z=lDPy4<|WiSAqmN%JCG=Wr1&8tQMt!!*NPK&kr^F4 zqN(=fU~VOM3G7HvEQz8DEF%ZxakBR#^682-1E=Alwf_?Ue zd=J--nL|G-B`cZ<4Tm4|Kx;{=i=y{RgNUt&Z!6g2YT&pWmDCX z(X$wsrcS(0M~Zg!S6(Y!)_*Db*R@5uFRgT=HfDfoXdYh^#uhCFR^uu4N*joXnVoVK z1ZZc|e7aSGPHw~h|79k~hA{da2q^W`OXvhO(7WW5{6co%^UiG#gVc}0Onm4}#>!fi zcJ(hh?Lx(Hq&-Kz9nyHMSoJ%Khxz7K2>eN-DCX%}!Piv!=NtH5Uc7d-QyNuC6X)vU zRFOAr4`K|(At4Fk#XeODC*};rp`#S7zfK$B%|ev%)F4-gOP|QZb0 zC@M2p&Vf|~-cd9;<1o8wH3Q>pc!|lZQ2%CNoVJI;n?w}{$W>(x^ywKOmw7|yANeNx z+re_K%*a2B1LNet!J+aZ7XQgQmK&tA9x7wX&*t;WE6*Piv3=EZm&unSEX!FR{Q zGO7N<9M_-gW4Xwg!mJ&*Qk(xc6Ev8a{ryUo-}m*;VT9^YKfoqRMQtgl_J$vxS!zAvrggIk4kRa=VsK|ba{*diP#01r zvUlpc(vxw%0L*j2p8l*%%E+)rZ1UsWYZH&-H+Z{K_>m$GOx7SzKqz>N9XEcdNN@GG z|D_CzCMetm`A0bAAGOj{2ps=xsQ}D#9+vI2u1e=PEd0Y?XXt%Tt!_@C&yn|DPmCGn zgIavw=`j^yN>TD;dNu2Ng8`NChsfIWgQAqCRx7=SJFdngHQi4{(0MMFg zw5faYw_lqh0^e_U07kZ=h7^ZP>V|9&;3MW>ib3v+XQ8bXAz82C(H6Dg(rNFA4Icnh z_7N60gUFSClMu8xH-~L%*o9(`6mVdfQ|v9e*txl6I!6BztjVyQiMxga+r$!({#}^g zp@lC*JUIjijPl%R9co+ncWREg=MmZcmes_?RrrNn=f@<>N9&TKxElVKM}F!?$BVyj zVZQ0v+gb@i^Yyx~0=aY<7|DvsBO*6n@;0uZs}oTbga2T3h4zG!+yec?XObP2!+7H~ zz1Z7K(`PHr)P2|@1yiKnv7l0^pbEs+?1m&EQKV{^m0+I4B1k=6@&E4{WDc?K@m@~6 zUa+gJ;KVqOve>%e`VIpX(PsLE>oCC+XQU{SvEP_t1tBS~+X?1f}Of77~uCw_7m{#z_L!-``jnb?A6{C}Vk5yMK9Z~pujdZ;QO zB_Kt4kji5EB#_3_KU$$JC7eKmFeIvxzhLCY#}c3+(B`-v(`O?$?~x+$wFFH6rj#oqdSbO*`q*R*e`;}zG!NXeoWXKuHZZ##`OtrG_tu4#9e8l*6DS+>7$aP zY>KsE2!5OvjBHJfNyh%_Al(bkmX~28gq6Ma2@6YdNra`}zwxj~nxSy~ue2DP{=aVt z$(V*{4Dc=t;-)glb<@(OIKt%!9}$6jNO@bwEC)^J(j;2!j6x=I4K^Vc~=>bUmm6~z$uPWI}~%Kz;GGFrixgb0!5BelGIOF0^` zPnLKjg=`*x#aADjEyor5Q09CVFRK?lIL#uy)Dy5^G>2=0ptp2W}(e)2rYA&%5w1u4xlK z!f~k{b(9s{$Z=R5pJ&T#&x$5sey})G} zr4yyYhNYUa-Ibh&S(6yz<5ky6t6TQQtG`b?8w0f?#E`k)+uG9xb4a`IR2Hsy_#4fM zp9$NW#IatwvtcU+h;|&{fGI(tm%sXGm|}eRI>^S~JpIC>y#MG!EOv`S>jOfmuE=+q zP;*hdc*T^&nJYh)eHDpoE%mI(0a^XNzs|ijlEoq!9mgm;)?8Fv{`NL!L-&)cdRC@c zB?Y@j)vJwd@mT>d8E6TR21Pd4Y^&gkHoks)#I~R$4Y%e-0nBodbv=j{NrkL{46wlI z83h)t(D?JnVrWd;(p-8;zHuo<9llY*;3^C{C&1)jt{^(duWmA$V4*OlO1tdmLt$CT zw|<mKMXPF4Lf-n%1x{!$1cbWxtbOuG>%Is z2~+EuGOuN@Pb-RF2EWcq8dmx)yOMnEb~>u*g=e=g3tKYGS%~R-W|Ax@u?&2;qKc(d2EcoTW0kpUZ? z@7J^_eFy@FAiTlpB#%yvHhpzC=JWit{}qk*%-wh?w_2kS;zg$`$*p$-bxR%I`O#f} z?%H+P>yZCR>kNYK<+cRn7;_^IP$7^Cna(4`F;Q=BI)KD+7Yk+e-V*)1n!|lzCS1xq z%d**G5(4`(WHkzqX$q<0t(CuixN0J=fYoyVg}h6fSoTk6ofD3beJd21lO(7+(YwS; zv_@}G1SQN^rI3EirxE*t{j6`{`KlWidiKM^O%l3T>i`P_-iRMiZM5DON|x`^Z(TWd zWZs|OyFy20i|rA>ey7u0t}*}=h13@-qdp@WPOub^iC2nSM&gS4OB0&IdZrUcftvJZ zThyXceoQE&GCg(02@P($w!8V4ky;_AN$P_l2O;} z-UlAy@5`R?_hxE$$cLy29@D>m;0U~uCXX#ipv!nP^Ddo~^xc1NqJ}9V0ORf{#NsLh zo3jznw5sZ=u-_Hcz#Y9(TpqgtO;yJX3Q#@Qw}slHIHpSoB~z;ob)K+@?4YrQeGdj{b-4+^_L$uucAE0*p@!jG0fH18Lhwyx#6|t9w?}5x zy~(*BMDmFEP*gFgg5HC%U#cc*9y4--(hJ&OE=~)sZa{1$hFK z{OcQn)U{9ct@ZPj2>4lSXa;5-2%A z-xEVS0)8>KaAhe6KxO=1ox;slf7rHu1wMCbJ+cHW#+Pa#_VM1$Dzi+aKL{sC*{yo% zeBw4EOweAO=|y4QunK4xA>tQJVWoM6g)_-w&??ra-l8V|(#!8eAZ|pu!Er@qJFkee zJ*N;lnaPjE{|r-f6$y?urv)L;irsi9A?~JcuNLmq_92ur9kw5PSi)Zb32q530eWKL zdxR6!t#K)>SjTn|Tb1c^nP&p!w|_WiPtlQZqFcp@9#6H|r)`wgB;&bFri<0=;gf9L zkCyWMZn4#>`j7uNRnDEwF0ok6?mR@lizN*yW@-T?sLhxT(JbY!my=Ctzo=Y~lT8$C zEkt9&fsF(eQexU_u4tlvo`y_O>!iHMdyaphq2@<*4U*DdHoW8Spb1thVC70YQLzG( zqkA;ycK5O0Xv}9n5g~Ie zOG^~>m4+J~zX>R8!6%z7H&sv~F{ftn5RNGh5&uV6d6iU2bJDn*tq`x0umhHcm}19k zovc}-6xn?V`2vQ;AD8*>f^`tZ_HnZ*Ug$>Vd!Af`zQ`upHEgo6@GA-$R+#%o;m3{9 ztaimuk(YT6(Y~9RW=*}yNkR1byXUAHWEbd)O1oxc6gZ((78~P5T@iiJcQX9cl;JY^ zmmno`6^m;G^=bX>y#m_)zsry)m7EoykD1l*7^zPC!kz|~rC*I%Nxw77?ob8A!?b5t zpYA6(Fh0>yW0zdn1>=`hTtf(FfjRk(^mgRg&#tTKBX@J!-62ny9G9$%m(84qy}nlw zsfB$W4ph4)35fzrK#wBQS@~f{{e$kOlqI@?br!J>lA9g)u2dR@-;yo%^4vS+b|^=C zC}h$~0hYvKpe~x`w*d~qV|8$YCF>Uf*u7u(#>S1o`16hUPv>}n2-@A1fG#R@E~NK4 zQcdEJ82awt_XPODtGpKz%?X&g$xgp!V7V%uke%(v1R@!4A1X@DQ8C0p2(5n-uMYG4 zg_~=B)q9q{Ic*RZO-rm!1S!&Q#(`Yab&BEZM?W0e9Q83X+zg;an^rAyzNh0S2~b+w zP1JpST~~y_YtotazqmafDW1x$;aijoX0)Vi?{yU`A`AlB_h@$_^;rd`1@KGlczc1g zP#v{nfC6WVzB6O<`V^?(*tyUbX()im4C2fs!#dL-kCCPa^luH<8_9ZC?Y$Du27b(l zq0(+wbY4HExc3#b&xVGLgZl0EkZFd@6|FdY5yvcSxEp5ow>S%F=;;b-0JMu?1XdJlWGK>zOHiY3#=xoj6%uFHO~^m<|s!+yCJ}0 z@O&|BqEi7D0eEmx>sY=Eanhf~9I>X@r%iVAYA%^={N#)Ez6Q z-s;CBmxqD{MDDWHlY6P*ZV`UFL*V@E$iw^t8+h+M6&$#GOcKPQ6nB32VotjsG>Z{n z86{ACK!2$Op-LE&1erw!Bkt>qyV`N`3oTk(UFc^8iq}!I+3v>;qe5U*f~-VQQ#Lygu*<`t__?Ygx zN*-Ofmpg(s%(PJyw5Ifhz;1YXnYYh_wmTTzZ7=8{WyNmI!3uok-Ax+B18{)t53NU2 zLObq2iG;I`jegMOXM~BLs~R(t<7Xf@5=i`RtajFyN|rOkLzHOE37YE5`>e}Rvp~x0 zROXsZah|t$Y6cf!Fe-UqCu)Bv)Fh7=#M48mfR=(u**bIuJ+u;PZjA%A26z;@?nKx$|ht5$1ebh+sgT-CH?$AedDsHo@&m5)gvcdXByA`5!{&pT-=m-XJT%ocI={^bUOw!N}iRUVVPwpOJ$EP5b< zihw#QwPmN?hV9NdLT5MJ3wTg{zh>4^Ns61H*ol8x0Y3tQA_Rm~A!T9SYgpG2hj{l6 zb`(BzLWMZldj4v#F z(KZly-jwcOthO!BbM#R+=M}f@Ko@+ z=1H4+b0$h&J)RYmA$WTQd;ylaXc_N@qNbHmnw7C(h4j{t-io$q zMQ@p_D-P!I480Q~t3*=CHe}(urU*r8k&%vc0lx3KL2%mYiBlcht^eeg>!>YbEJzCVb-QCRVr>`HA@rLGFy3u`)pPkym< zc^(>en`egx?@x7E%+qK!ho{gK{gl!gAzmM!o7s$RLn(t*ty{^G_?n)99#)^- zZH-6|0pWqz;3sLLJu;c}Uj1E^`-{dmk%Zp89vU?MYImbhAeDu?g%B*qd%5ErLLp*! zH+9aJtg3JDo@zADaH~=;4h3(??+XQg>}k#=#trL}M3{!ovAS+fw?Ni`-&gZ6q?;FV z67n1&tZh$^w`)KX#iiLw?)Q8)sVoWrD)f;kpL=rH+CSjNTEa5lkZ+MQoL3VQfpygs zRz{NVgNm|t6%jLYlPzgW6Lw)WTQk)TMT4J%>{0}|zqevZx29-C%ttJC4N(gQB{I4a z4EKBG9^H-9H)Zzi1_ioiEZHI*Gze;wVQEE}c5;AEQK?Nl8U-ggpg(TT)c-6PNrl%I zEY9dQ7vmQ+aTKK~Y;@yzvYVdAbH!>9ae$`B9K1Q9?=)8EWBXxClOwu;R)&;lYRp+%{HpJ?$?;uf z5jq{~S6$s8?c};VpS__+FI{qNTE>5x1mZHY%*a5;UAN^6eeQli_{_InSm?_$mdv7t z_PhEw_e^aI^|;GG47^?EnQ#lclVo$N zwq7}Z=JY=iUhGXHcT=jnJ-6+%G9hd3T96m}3Nwtq&Ns_1B$Kt9#a;E`g>07-gVCkyE=yS?LZYTnSRDvQvGqmCQkKKYv!K z)dEu~lz6#i#bSS4OQTZaS4tyD(^c~vQJ)BX-23+5N$@H>b*6}=Zt{o*pkGYuXv^(!Aza13T($xRA9O&s;`)HK@uurcVc;VvTs35vtb&RKHOEC0o ze;vVre8T#6nRT;`Sn>9CU(##5yK%{lWq%#BW4z1Y>0ouETDhC`U#Fb$*vg~f%)TbI zBn)&(*&7N0zZ}u#30=Dv_e*w!+_Z!YGZlR&@;9T4Y`ZGG@yrbucb&wu<6YxUvmS}3 zAVCw0E&Xz>1UtB$UMI5&DNYi!roQ1ja>t%CNu!7)I*g~LNxcyuwpO*+y!1z|>)qxy z{>CBuTRnNgz;Kc`*I7Rhx-fNoFQR&UEgi2yV}XFVr>~b^N8UqbSno*fB5GX9c=M0U z?{{48$e1PiML0?A@79V^VvSU=5))^Vh6O!Y8D*Kp6RWo~ZMEcQ_jZoP29@t3;0Y0S z;$mROrAG5+CJOHjV)xW~Us)Do^!?kT@jJhH1I;C0sdqkMX$L}}p zTkSuac5pfcgvN--4q6*zkw`0BUIVr2+G?LgKI? z^P5+qDG4`+ds@NN2+4-1lSEPx7?2~6IKF<=u6H5wOiwJO%^~EYxMn@8yIhbsw35)} z_dLC3(77O8lrV9KN3>?AC20W(MdY6P8mz}2)n&*wNyPMZV-Wu{h2BoRTb157Uz*we zt0>EXtguRJvO};cY0@f+)5y+5B`3~~ey6ErNr_CtvQs3wZ1+~|6#0+{vtw)v3 zi$I21v~}wqHjm|;ufC&C!gub^A;8OMF8c|E+#@QLMBsdK#S$ z5xz$%-oTxIL#j}_xQvjo;L>X2sRmi9W}5-;?90S0X?9z!mL9b%+K6scI~%H(Ksxdi zo+~-YXLKzkY1&pLal4o27GXr~t5RhVR9vU9rvl+FKIf4IM2M5HNMz4-Wf4Zpaa@T^ z!y{5l%!V9#f(H}Dv_t!xRox1zHi%$Ce_l)0u$Vb{zE#!7p!B%HVv8na)pS*MbuW2w zYdmIk1F1h5jAa7$PmtI}wc7<%xOAlH%)^n?LDih7vwp*XFefdSGKvyJKdNh@qDvsv zCn@0!hoQ)?``D}&-a@tzfXXwPD1FAQy$xt!R24x=a-#m9qj_+#C!pQ^GZRUmA zsEW{At~(_hBZ8n#xI^j?)u~q6>Y#*bgrKihjjIN`ADS-Z`DdW(>nxqMpe&v z;oO!<&y{u&ttCP|=gD`xlUYw|x(wR+EK1h#E8=HvK=!PH)z_G0}%E{_5L!7lZJ1xdJGgnG@4kDT((lw}DwIdmpvV=N$uxot9 z*VaYZbM+ULi9UWEJ@@5$@U8?_L~{+YL=?0A$kPlPlRO$$QW=Au0XjwN zodmOVdA`e`cXqGra!5`=@1Z46%vLK8zg8$cqE5dRv}O_S;iT|hxh(rwwgf5#oeE{C zQdxNl-pH8NZO;N}<-0{Yjcr_KZ)@ALl_-vd_QH?yhBKKJ)>pZk3M=?iK5?i#AfmH8 zNb<_%GjUR7bY;Vx@Yh8<&QA9WVkNZ!v>cZbwN>6NHUpDq7!wgVVf00XszA*bcCR`7 zZ$?-yL^qQ)xo16~F>b8NHoEEFQw^I6v5!3+GG$$PULx{*m&x=ALu>?<@m<-a?Brc^ zMx`}%_T>=-P+?~yHK#4;;m}F6`YI4Sr8CHpB35)tB*ditXw~hD z3VT!{rcM@mjlHnyMOwb_ck+CbZ12ER-ci7Cvv{f%&h@R-BlUUH+Ie*|xatiJ#tPw@ zJ~awh(ndR?Ni~gH%_-f@DtXi^N?p6&iF>?0-t|`G$+Nb8rbX{mbh)DL|1vZ;Wl@}l zVYz}l#c9KBQDBW3K!=si&tz?PvT=a2Z;kM5(z=+4tyNywrQO_ozx z;{+`TciI$k$ao?k_Ss@T!dj@iHIi6A3acAvMczZ)*YfQE8O?cXBZIT?>33XlC@T2^ zN7ZTz+^8&fq|Hldkmw4Lhekh3v@iiB6sK=$34r%x5XFS!pM-jl&O`U;DjGF#sv&x< zfUWuCu>s)~8!4HEfY2>-EYO}MDTg&~-Yl)w4zk?1yH8s4M~tl763qj&&+4y4thYIu z>1=OBA{E+s@mZy^xOZHAH*GCxKKX|GXkV`HT`zr2k|F=qb))#2Eaf+U46_6+$<=;V zmwdaX5HhnDj*WAUlzDGa>!khCm3QtX1j9Z#R76t_oP>W?yHL3ht-{B)m+XSI!zjt8sJXM)i6Rc6;UQ+pXsQT0k`TJ9#nP zx3{&IxSdK(Yxk(XlEKNDXa}g_)C{t*;BhGFt&xSc*Gjz_MR6mPA!{wL;(j1e0~*K8 z5y^xAi2*NA|tA$3+u zJ|jAjo%K$_Xqx9dJ68inHt`@q=T%+J58tIv^L+5_G2ia2>>YjC)fiHE=~lFe7ym(0 zMBzY0Njx>Jl(q%OMYa@)*041CBCVrM)C>+YtZ}tpmE(Fpz#lyC0brykt#>48y>kX!DIC^NUg3!B;yAwPh`0|=vRL4@UNnG6T0U|? ze*-$NmEI<##TH(Y_y}NxBz{TU_Z94jrwl13X{v=(33|fjN+O!X3=l%Tih7P-8;llz zO)UloEo+?irj;62Nt7gwz-}!i&yLsX8bM!(U9ItLIk@9>9E`nUaY+@b%RJ^ zq{ptdj3F{5g=baa9_PHbj3)%IOnEys6+N?b_iXj@pX)-7N09S^YWt0}$&s`;)9imvlT06__G@dnQqVA%yS{rK=ro0?$ zXxU zMS~YSkI{gHr-%{<h!H`QKwr$gNi+#}kCch#auHeW z4b%dc)1OrfB5xACv*77$Me;Zzf;B?(^xl=x1H+zSufd$a|}rl$4v`>E=g# zP>uWWZIqf*_G+uzP9t0FB`muaA{J@X;e=sUsiq{(E=3^TOALrYd3X`IxP|u75oxjj zOlr8#Y#MPoJ7K|d&PJDjzzH>4_CyQJ=-+$F!w)|rK_g%jC}^D zDf%+dYU6mS9EkcpEZr>a-_8`%riXKBct*`VB>CFA%LLP;@b_%|sd$(c@Lt^2kDf9+ zPP>=hzGTrF2lp=5UNqgKGDzzy@id6~6ln#ncmk3GtuX+Nv#Uldh?zS<552y(qLwIY zrPB)*|2)z=9+6o!ZN52;5JlEYi&OB~&}6Nxtk<*402FJoP!=5!JA$Vx?<8%v^w11S zXNINc%G7w4`3eDb6_y zvm@)Rfn@`#h{zr1t4}=6cyz0Msd1*82t`kZhFvWN{{-n_(WL9F=heH z#lWeT2*;txs)&ZOs8H5xc^N5KUq3@{RV&h?nuXJ&%DuQO{tw&bk9+%8p)bw zXTFk=nWVxmJVl|qPi~ASdhfvd5?N4r3WtQ7w|}$-&@1Ii4$H1m!LGh0lGCr~C>B}G zWH(fHMQkKH;Y3ioA)!tqGPZ_iyxq{nqZMajMOaHE$L8;NOGm-8Pp60i7P4{`n~4i6 zi@4+_Q)UmGbkQ06k;GfeC7R#w(7>}uS>NI`TN6grPD&~~02{0lvL4DKt2GEQmF&vW`3l@2# zeGMySQ$^L-Nwhq{Wm;?YX;KN%g#|jJDwH|D%e5gWW$F8obU$heBJZMEj%Cb7EF%_b|6w8Ppuq;{#CK>Nv3Mq zX#xxpqtQl=s z3)&@JX{I%dirTGhkyULG_vcj=J)=sRcOcPrHR`X-ST#fo5+dRI0A*So?~8cJ)KYBs z2ponL8qM2;R44+rSzc*rR}w;p_F}t9u7!BBw)7c7{|B;EHD;~PldD!mk(CG1c+ZfP z(izgg0VPmlyz4Gj!BNy#6jcQ(RY(n5ku;U~Ok+`{<)Cd(n6%W6*3D=#OXTBQa7+Jt zjJW!U?N|+`-a_=9r4&*tT06SG@b=oqw{2LphT$V>XeIwqH|WQqUx zgf~1Ec4W)8;V6D3DVhgPr8n7-*cFS2W@1(?*AA;x!%R~RY0%lAE917{H7GOy>sI6F z4&LA=|1d|~!GC)Ph*kojv)FNbQj#TA=%R4B353;C8c{myufJeCDs*xS%laBds39`h zi~u8%1*bFb`N9&Pj$Dx~k~|FQmU z?ypFo_SLXSQxH*0S;g<|6uAZ-e#bo<)S(8dc*TcOJlS?*3}(mM59ey@JzS_`SiBa& z9*g_e*4SpSkku5laBwgj)pI(Y=Eu*+GaP>~oNMM$yuk5~!?nx_*{`g&ZehW%&(81I z#1iQ2Z_L;3TF}Ei{>Rpr*9~B#j{5wJ=lx|n#t8m_erL;^AT>H*qLat>ouEGVUNNvN z%ym>MO+VdIk%5kZo!_yECD7U5n6F`zyC#Zj;@p3zsoT=+10ywM)9jvvXvY}AKRVy< zY_XdYpBf#uJ7u#e$*vHZxs^PzV&J=E$uLnzrOcOTU0L$*@sjtBI^X8CzoApC%l<_s zTvvmuD!dG?+2I-%u4BP#hPJeU1Fl=a^(%;^FTZu`rtSJ+oaSZS_T#+n=ly;F2*C)7 z;RH$149oF?D9MVd>4s_9j_dhB7{y7N=LcaFCux=!WmPwA*AL?~FYC4+=XF2t_X7YyUJqc z5J_YTl}2YUS!@oM#}^1iVu@5HS146#&GWoUaOnMH|8=PCNT#JskbRJeVh$xf;e-UV zBG8hMY{i8TWjD&zv(ugvpAkbBO=mu>k1_LrtJP9|jW6t^gx}7=Zxgt#IP#kUJ0;Bm zR{&cFhA=zw{?60T`31i-JT2wLx(5H?uut+MZ$*JFrN-DDEN_r-T=VdOE<-BYWQDRnm1?(e0V!Q(|izN^hpPPZ(FV91U@P?#zC>@AzjoztyaV*&!Sjq`wi`)y^Ji5DMVV_f#KXEMmH4} ztZ~1L0iTHDDE-mVnxjFQnq;wHGh^1frrEXQv-qMDkdOk1^A{v*&Q0@dbw(mW>Ds3Hy&4nGP$-QxSM&7nW1#H~K2RgsFX42(M{90=%Ol zOpnY}+8`~Dr*I|!q0@)ikwZ1N-7ygvQACIKwLTARX36<#QN3cuTzPS;z=UtfQtM}v z^X+?~#N^E~e1tQcOAMj&ON>bIumr#Rxy7;%^NEp3kCrL|J`GU5# zK-Zh`jW-1bGbm1lujtVcbu-SRf2DYiX~la=B5Ww2S7$j9_Pm#_NYGnk(xymb#zSGb z{WsavJv^f=%WIy|eT7*Zp=h0B1$6Vcme-{?C$wU_7LE00D4D;REZQ#hj&*}amkwQ1 zoswg0J#L7gev$u{*63T_(y(Nk48agkisD*?tiZ&4VQ}}1p=>*0xwaYeRml+-m+c;! zQ$VTDgaDx6Jh)Kx&jKx5!M+7wYel4>Wyi5#*JaKXkY8io?sCz3a5;luD=sRO1#k9O z)H@}|{Lg`EU7w)pLQs}I)5m$H{xT~DM>Z`6bnONqjG*9TkV5__=7)LM%-*Al4^`&Nd9(0W5m1=ARc`A!!Dm4@s9*QdHDl+F#&uv1~A zqcy6+#ZD`h__+0e*2tzctm{l(xEAS#){te*KWH>_aA@sCpnpMtt}!6mApV7Rdj4Ba?2{f>%NYO)L;=0SRT za*4B+(FvvD7FAiaB0>DxkO{r96eNWRPhJT^XclSFl0*8tao~uUMoqgxlJnJ~Zsg#c z>6hn%*hGstd-g~nEU##qI9EeUr-7Rg1Oxz3a2{MNEV;mMh5jp%nk)JZ<-(@BT%-AQ zc%Y1EI;#5ob}osfO2~rtq1-bH*dgeUi6p#XC_iIXE*e2CnSH>>K zvCrd!YJ$wj>daWCs+T2UZ(K8~s&P zw8XB}TMLqP?-}J5Vho?M1$-u}<-~kpJa4y!?`Ncd(rl;W)GQW{8Ejc`^o-?k&pz;2 zQuy!xUVqKIOVRx9+u9mQ6gvc23FD^QJt&LC*am}AZe-{HL286zAi@zKpMv3e_8;KH z;^YeESGr+jn4I%DokwzS*fB#`5l}`p&UF#&Ora?9IE=b!DPHV(lA`Nrjk{;0XlFO2 zcGrl)iD`Nusus(JrRGaZpFlWxp(0uT;Jy!L1amDsR>{O&*n7DphgJtEp;Z!oWf|Gw z72U`ir-=l*P{`uFR#1Qi3v~)yj2R=uL$7)>k_nY6rsGvccF?2)l0Opk+-x{fJXB9&1hc=7DvU|0hvVPQXiM97AQ(nZ<+NFESvqI zWgo28blLWGeX9o{DBAUkfMky71wj#iYznUGT9BgerwCo-Ox$onYZ%U zae?t+SUOu0Uy!btnwX(3n$$sm`h+K{0n1oZhCAeuOX7yM3LnebvS;-Yv-RwZl88%! zl&O6qprlAx^#Pgt`}xpC3PeS5G4oG3y+o>XUwl|6n@80+C#+T`=^2#UT#4=w*mBSq1=s-K6vUCh)Bz%ywbsM20hChf z(3Mw2hgc!n^F9x~08(N`zcoeb`5sc#=m}T75 zn_qzz+$O2u{Q_%#3bquVRu8GMoQ1*GiuMuGeO!VMs@N?9ma*NL^K<~Gq%X|o`d`I?3-cs`?dXu>iJQE$U!oxk}6doQR5y1fPo+QY#t$gBd> z+vvP-)B*}ltqI4_V{@4k4zLl2@Q%~`kEr5YI(=mVeD7utpjNP>z|XSD)?Hqz*IFH5B6oq7i~Qt1OSuQ!8vFh>s$SqjhPKP;R42ScZ2D?RC3Rg;1m?oS>N@vp5Zb{CC zbIs|M`U;v(-Nc6@ruafRhiGToA=DFRzXIsmIJ@8=;su*1`PyYg)pS2h zsNry$u6DoWW5Y4+s<|;6N-Z6Z>ynEJ`w(=%j5IVChIs7PS(_@-g3^DKWrA;#XR9{j zZR$7&m_p9d(O0^j=WnfqceL6d|2Ys#V}SHIxR~`X@W>H;VBN%pDC5W1F%VM?2)uy$ z4s}9w>Tw|3;-Ug#{0#cjDh#5XV?pN%VY@_AL&P*QSiuo0Y6Cfg!E%(7Q47;6kp9oCf93J#oF#$vu6X{E`I~Mv}K6t z9Vtwu^Hw?4AcCsUhMo(e5Z`wDogG;%od<=W9m$rsZU)+Md>i6@yQ7TaPUu?3%dcOD z2;SME%JI;_t5rlD-=P^#$}Mcp5QNtcf+dQWqXDPP+mS-4g43cnzsXh><0@VT5T-f+}@CDvK~A~J^h*$ft@(g_|5FF5-^ zhz#E13vaDbx+l>p(RVz7VJ+UX8#Z}jFdz}>nl8rh_I_wKENf;7=a}ae48UtdO z80+!}l|F=EXMc}_7dpY)sX4VlQH1>xgbxd+ANmP<_Lg%+=}maYDe_xeQU41OymV+u zr_1L2#bF`QKtf~~8}8DEAvn=O+ujahE_%o5SYp$DEf;2&!nj%P)!OQ`5ClFx5a&4w zqo5qORW;VCm6^!__0uE^M8B&hl{)60p;4yf+VT0Jb~}ti6QMT@W0u8UZq&&vJ!s>& z$LGptYk|z)ZDkr8 z@~1N&Y@{Sxe4b6(`<%oB!4s9QJG3JYH+hCd%OBm|y)}AQoM9jA%^(mVscnL{ZwSK= zT^g*9_((%Ebfdk5?kPHsp#fUx+VNSU(h}QQt0wHU5WMDrVq*wQ5?pu?^|A>fIpHBx z7EfxomJ7s1r00!=mQE51Wjwy_RmD7aL)QRDMN##6T>Vx+7JgyEyAm!z$_k-udZ9|R zb0X0}of^K=)LnhTsevsN)6qXr+q#OND+cV0%}AM5QU^@!uG17ZY(Kcod%SHo3OdY! z^Et`a_HY>%?Fe{9Gp1$!oP(S*dUFhmT-`7ai60%r0y|I>&OIxF!lTP`g}D?ib{?#X zRl;f0vg{M|#1W0 zL=5{Si6TkYJ;Dro3{XUF-@XcRidp;?`iLkJ+YZa(d>_|JcoSFoW0|>L___%oQWSlG z!tSf(RxT#tDJra5O`=*}ZC7HYb>WQM_lIapIw_E4y__CdnD!{lmu{4^`>u_*YrE^7 zOJuvoLc|ef@#(6lb*uhFDA1=)bzD0wLHLwZ72AVG7F8|K1lfw&noXu0B{HpUm-!W` zl~Qw(Y(<>#@NkKzpiXYyN@ikCf%R>2wmgJ(bqO6%m!+A1x=ik@|F=`D#kHsZzn8Oj zTZ(k6iVq5vOmw-E3t8HWs=&o66>B3%9jCQ@F09NQAc4Zzs(%Cfr$;so@4yHk(@#L6 z+79Zp5X(|bc@y-CIU7fQLBmcX`Xfq?{QER^Zyed9_W0iW z>qrjhH~S9YL~xK`pAlmP#DbKsvg?2RKGK+(CJWzRs+#T{8+ zV`WBLLQ){jb~po3o&V3FNZd4Q<(o*@!v>_&qSqe0Jx9H-YFBpoDY`CDeON761w@tKespw+f;#*^14 z!9px3N(;y3+pOMa6!$l?0LJR!>E+!&WYg$Cd*RkMf1S+dL81OI@Ehxe5+S*)r?ql? z#uUMNuz>bJJ}usOsul|nxT4_6Z<+1Rc1MXG$OW^7rB{Xeq6Bxm2F&gz%L2F?Ta##F0pF@pu6462FeJzMRR0{@~6+8Q%m$q8uC$?<(}A>FdT z^mQ|;9jCy2qtHNj?qi1&o9+NuJv;nVVF^k{}#b6p9=n!Rj!b%sLp7xe1&LqmZY zeUdy-2u7o89e~m1)Jl!nLoj!;DV`d{i_!N+rmGz!=bF^Y@fo5qzJ-Kq5y-?t>7l1y zdVAB!kIY+wb=!h{PM~9yRI55H*qOTS3OhcCIn+bH?{+B^#Ta~V8o<&9rYD-kOm|2I zkx>4amQpVp{g;I)TIhCqzLp^{v`xKkYfIQI}t6AS@2A@@oPoF zV?Wgm!4kjTD-_W7`M~yKLWlpOU%zs0jX+V?@A-^eF^EIMhRow{Z_N_8W9t~&9(Zi0l*@`}sU>_WDP%jrV*Qij!Ra z1-|nm{xWqojuQ3ARP1*<&jjf%v8QdZ*hiK2V7+P ztz=n;;7lpV>y=Z36*Ix)h=uIlr~v-(vLO@@zy2GFl{mdYGOII7lg2NIWJiozEq&LN z{t{4h*>99b1}*x$8=M)L&+Y9gnUw@zt^5>;56Od1hLoBxO$esCSBJ^1F*KoP3bkQfD-yuc!6mj47eieiztdc-X>`K{bwZK4}215d)QyZcIX6m?wSgW!=S+B3kQvu#{KY%_J-*_xgHwjhzVL zsM<6yNxvhn)TPqX%7{<93Tmeupu_9@R%9U#N(+0=p*-8K>8e9Ofe+s)>A$g*fxGfAz`XDJ_R=+zv=TGjcfhN zKxgU$07Tq^^+v*5JQZyH$8=KRwDI?Hpvk|(N|6%N!~K)*OiEwtH!hXnR|(y7m`zO} zw?oUCRAqIE$UghZiI2sT&lAGqmf(ZSsE=OQ0ZU%VEvoxjc)d~hEvvOcVQbw!M1dNL z2MMHdhP+VLyLQDa&WEA2@$4;HA;^wE0rOee`o-cG4(sITRB$b$$!w=Ac)wSDBro=ouODlEP*-5@=uxKHS#gOtVt%3c2=hxCBtWE~;$ z-AsBr7bUO&LFP?647O#JS5&5=Dd{OaUA0A~PvcsY@vt5K$K>2$Rbz>Se?}^sIJiD`PWgnmFki??>(1WCps`Y?sJ~J#!8f-B| zQVjs@xhjRuL(u&_-YxE^7vxc*ShehUVX6l99i^>M56xI@hYw*Ogu5M?xjiLQv>`2A zzdk1~;tF{PIMn14kWKOIB(h#OFrDfOk?H2XR09RWlrnk=Q^koXuo1gGLrCp@g(w%f z;b`Ydpp;rDtpuNB+aabh1tE0%?daOUduBp1ZF-ED(Y@5b`4SdEwJ~XlR`!bQ7zTc^ znAmf<>GN_uds$#X)jAJ~`cp3Gry^rZp+RSdP`F`Xg$3*FZYI6iGuOES+1fMcDA28M zg$kzi^}7arNh)|+byFfO!?K&6Joe%7J3;HT?1&Oy1zJ_~d;9O`ZSulB9{WjTDfrdB zy1Slibz(7!U?y^nvx=~sC77PkQXMNA)x0^tT+wxB+`8BSj+RtCP&UavdbChAn07P{ zZ$?gFaebQUlw#&w+hzW+4p>u)268$EZM8d{3)2)%31x@=1qb7hjtR~6xbiv>>=$)& zqCF>UaC@9sK~vfU_PIXMZLsTnt8IqzOy|{d!kTIs=S#5RV3yeh> zfkG$%2Rh%v)kFv=jg$DdKh~%sug-1TO}0)l8?WiEns4Gj()*NM7QKkVn+@tlAi47c zmLJqP=^EK|#V>D_-T{nLn-e}V?OH2j#*{QZ6Zgw*u|`MPY6qa0$E?j%u#8rXb1yX4 z!PTh9hdc4U4q(T-WI{l;fHPTIOGaliUreC^g`Ug4fvSw-`P4o5q^LV@%usvocci~o z%n)8tS!&ont(X7hybCw%Uy4o%vf@8h{B!*+1BHJ({aRbC{LeKQ>VYA@;_M-GNRRo+ z=doD(eeGpY80@(0&w=EkYA?_ADhh>y2LF=XmluOlaS!@(b zOHGZ>1p)~DI}1|8g@m|e;70^sCt6$7AC^s6#jLC>a_*ear4%oe>3!?Nd1c;;|6ZW| zp^aMyIRrsf=X7>gne(yVZ7)00aTbIySdfks$?cyZ5479kC`u z0UChlB>}|#t7+;IPU^Y_L)rDavlF@Xe+yg2=K|@a2Hb~E$p<)xrR0?*G^zb!WPRw2 zY5e?a7)AtdIKFrXLUPU$|9S8-5F`1jYO$0}e@auIF@XjJL5|P*r)XL+mITp)O2^$z zQV@c!h_=VHtiFq{H(sjYHiqZcIASAy(}9pp6a9l`b65|!Oz;7*-meRML@TXN7zJtuVMzpW94rr!N8nyJuh4eYky3$`o zuzC0!rZQ$L{K@nDEfE^`k}~iW{tCNg34B1eR(0A!+eUwTuzkNu9>5okUo$ z@6XZ5cf5crNMYnSh}j6=9e!`(+VOdpwwoDz-3Z5tQC&pq9&#GA2nPvLhA=gS195crr>dAFq*$U=~rRd?JmUTo++3$K%fUu-G41)si7xjBkNw0B$Bn<9Y%db9V zx%#J?#(bzo5s`C1s34}bng{M8z!&X(8u1xrVHzU~Bp@3TFX!F?ikL;-0O9MW79>gOpx6U-zGkk+VRRbRNRX^G5{ zsbpZyN~% zdOQg8DcyIWz+j8*&DO4ILO`2)k0w4Kx#K zLb5{t<89O&p=*Xok)H$<{28Olb7Q{$&7^zze7FqAli> zLv@l`+Oy1mRu9u2@p1(7$Dtoa^p0cNg_T|Yz%%9RuKcn8(hkY>j}^_!1(OM7c0C%W zP6{Z_{^}dr89{hC39oNSr-dlHEpd-CpI5)UL`kbY%xCmSI1Gf`j*oZzdD>?>Vz{TD zB%$gC{0&=5KEdZBg=_LE9HLFI0=yL9R~( z1zlmoMroI|mu2y?f}gCYd(8yY#jIp(#M#Arqu1A}gX0D^HD=p7e_cvUKLZaUm|7E< zvKeN$ogw zF2CeZq|?b}0FKCTVC#bvXLVh;#S0l35C2LT50w7uAG60hQ!^oyVL1*M4QY0kLLc$Q!sX&%+bC3iACMRUO=Y8+b=Tv?C@0GprUo&Q}sKJVma zDj!OHzn7hBsi><_Y4W+AUH;H zUh{$> zB&_d{1J)gsU|MwK(qCCad8(h4bX^W_zv5KewYhJpyI6F;_}27!9TSE%p0pN+s~f%- zPZpQZF> z7s}u)VH}Mx_-0+(zsKiY>&6<@;sl04fT1kvI9R_OyPU?(6N?6vgZ0x?!{If_@ocib zYMOs^KyWZlIwK6NMc73^GuZ{JP+*&A2hQvxq&0j`@Q2hl_P#(^XI!Fd;{mHHb_^;X zq-HJ_T@5Zj=yPr+zyZ9gn@Ak|)`uAaKjVe@gxroEl-?nt+=5IAx*0gH5wctdjaF9eZ}%ZGf|jA-ZAOHWeb;K z9y|e5s}KrLVoG;mGM7Q%=I2eG5g zx7a~i-K^zkdsnp`5SVx7)FO=c3jRY{nao~lw$*GdH!V5h!99naanV-L9i#A)t zi3z(4>#ofr-WGFp9bmW!QZx}6jZPRilbI-phh%#$_SJp4A)z z^Gn>#%O3We{yKu`Ht0w*D7sr!2+ylqKDL1)K3ub#1{>=zEJX@ZQ=<3bYYWR9BIE+% zYA;A3K6af*J261zl&0#|ndjvz@6pPhQ4}ahv9D|$1B!ibb5MYp4-@d38K&G>D)7aGw1hs>EJp})EF6l* zcS!8q*lia`3FW*U3i%e;+7swanZZOY;P#vA&RtmFx;AW*{*BdECi|V>JvH6|8tN0M z%TbEl*uRwx-^4iay$<>v?hWbdE$k!6Gk94|Hs>GlGsY z*%V?)o!-8B87$@x8xC}J1%8c$rTpanx{L5R++q|B`==7K#)ofBeX_x5&`q5V1Vb6W zC~Ry?-$)ZvsP;2%iQX=Yj}aRqesp3AqV_3E?wfW1itSS~_`L&FZzr_>;ht^G3H!*WxW%F>>}r z@KV%AMx`avJ{Arq`})3ti^2v>wiVSe{5Fb!5T6Kdk5y;F@*dK31sE`QYEg9R^Y6Ib zmKr_!PbR9+!{3P9R?&#hG<>%-HUhkl9h0PC|9w@3pod_|(~(lei~&W+3M9B~g{kPc zJxM~ip>tn4h;`2g{!y3wK6F06*wsL7-80x4f3ZVvz3Be<2=0B>bxYzjaJ*Hm=a!KI z-EO{BY)Q@!SL6ds)>xVRhG&DpEFjwi&n&OuoFt|MoS}UNy3iYM&OZe1fhhs*s>T>t zU<|HN=SQD#ii}X==1n3@AoR(^duV)9b4S4f07SPkrr{uXodY$yIR+M-f?0L0_EOT> z|Bkt1)4ufBa8-n!8_c+gWdO|McntxNCZ{9O&dQdn`WEg&AfLtH-MBMile$=lcMj(& zA;MEfPJ)?YHgBJ_!2^?R&__f|xA2NfHM^0ol7CEQrHpC|e2Mmv2YQ9p)?Bj@a6wy_r z-{14fvo<^#>4(VqZ3t@#$zzfD?(69sVZS}YDuNHhD4=i#bTr`L%iu|&d0e6srWcn6};Ofg+&t#AlV8JfRR5O2`n;aqr}lU>tc z3)ShC=o~o5oVFh}ka8Bk%O}}*va+iCb6Rw^2oj+^fkb_PUAyvtrLDe`LeaKsUlM6c@eX>K*RlLJd zX4E?BG3q($HR|2*L4yna^pdxlbFyx<0loZir_QfcpAbmmMIDIiW{!mJd+wG_`E6d< zBa>4ZCpxLaop$(gW6uy5f}fapqIu7+yX)M>I(~+&VBbN~ImYMm`k!8A)PwVMeQe+&6dH&fMw%ag(cqO4!|0RC`*2{H|=nE>WE8yGgGfe|)Vo0kRB zg&EWO(HYk3Bko7T5%9>s|H>DRBqf&v*j- zA^qRZRc1)2xWV5c-fvk+3w{`#T3z6QIv?DTbd2YuK&J6NT8KO3@)=OI!ib8gFD^K0 z5~0;tAGA3=+xob;P!U6QP$YHKEea^S(SK1T!GfKbHXL9xTXPsRjBH(tTOhOBXmQ=N zw2iqO%P#i5aLPhTSeXl_wFIQ|7kj%r*avxR6w85Tc+s6W%ULc^JBH(DXcBbs9?Gb; zT~GVomUX=#M5O!PFYA-b#bc?0i6LBg*hUU=c4!;_f5;_o*1Q*&BH+(uD__3K4+`5k z*N)E)gh>H7b0wx;wE;BHw?@#Mct1RoL0Q5uc!j~VnOq5!9Xu;Y-Y;e;6>!eifsWPT zjtBh2KhTI+r#-0vxg#3F?5xpw$h25%C+9NV4^-}(@V_=nMUe5c7{^{7v1lh+AHrhv zx#don>*$pTTQgm0xRTDhVjY{hK8cY30viu1LM&D{5eN6zJqa4Hb(c_>FWPYDBoo=< z6E;82ud9Zua_}u&JQ%m=xF-{_+ItBwj(~N{OYfeEWqYOGaJEcuz;r>&VUwFc#Rw)I zQn6SqTCn-h3>UJ{mgC1KqvYt+z0_0Am!ts$YLwgnPV%fKS-w1qS&1m1= zH#jWu;B=oj6{w`wL4qJ2VJvC`lMqs|npHULAeAkD96-V3+_MqOzW?xZ2Cvqq%_Kb6 za+q9rYB*3c_5X%>dnKLVM(EPX;m+U>h46AV8dNbL-mTPypID*mJ?3iA7z&`VIm%*r6QJFwpvk!NODA zLB_&BGZ9X3TW0bCao~t~VMn_zw(}FF{lRi4edLFpn7_K23pTv*=&t~?_KM%=g5O#8 zaK7>ec1bcL=zOLDdEmWPc{}4e7Tke>x!${8S?QAv=LTSl9_CkiYi=M!@LWZDw*`c| zQh3RD=cKrtP$aKSQAuCz$||aA>iUT#QVpHD=Keyl@C7o;(LAScM%yK zkwnkHjgg68?#wK#Z0!7zDO3)goV?EM64=LYh|38@@(S7%mGsrFtfH!>uAf*U)zGQy zG0DDLEc0u_0K#l&dQcPa(y2~+V2bL#=VBNAJ|p1ryG+C1)rekEcc?HymD5Vh{nE+t zj?O5=FIe61h-l~3jkL6x)!)bwrB`qGw%i-V2?%=3U6A7e6kx8HX%O2>=%)LXsT8mm zi381R{__A+x0c-3ET8>#UF*;}CbqkWa?9tX&m8vf;9zZs7SOw*2QD?uI2^PE$6>P-ui{ zOZr*ZS>RD6oa(whydE%#y@2JIKiNP6PnulZ<&;U*UpH;{_e|IhO5ml)C zF+ia>GF|ctVzDOXi_<}6y{%x^gO-dr-D7~nt?w1bK4;7BPBC}&C%X2`VwdF4Kt71H zp7PpZNG{qDGM;(`S!3>R6hogatc=_#Sz z5NbTyWUFmmlU>_q;|W};GqWOuxW4wpc(XqZP_Z5{M<=h3@E)F{$FA43bi`Hs*tPHV zk`r_-)bE5zex*S|JTn7CxOv612jrBIV+%$2?g-McQc)ilOK#K#>k$E+g1wdE=5?*!IqsUozgI|R?+b#w(Vouo8`WSpI)2wIa(*{~4+ij2=Ie@3( z@-~wM-aZx!}-)Z1{VGbgr+QAL zo;;_t(PHi|JZbvUPq^cy_NV)c-#^)xyvB@G5;EIFH-UdQWA5??VhCAO$}|p7u5(Yk zPuauqI*FT(=~~!H-A^4BOAMY@{NsckNqc9}e=-E{(*$8ZFfa5Ru9fC*LbAeR%{Tt9 zSuA{CXtnt&W(`FkD~Y(hB!Tt#vPWp#${aZ2h4`56WM zT%)%$p>+HY`)wtegWkC38O6zRYn&yL&WdUPL>6v`)We^BbvpQ4vWO!{hR1OaK4? literal 0 HcmV?d00001 diff --git a/public/assets/css/icons/tabler-icons/tabler-icons.css b/public/assets/css/icons/tabler-icons/tabler-icons.css new file mode 100644 index 0000000..6f2379e --- /dev/null +++ b/public/assets/css/icons/tabler-icons/tabler-icons.css @@ -0,0 +1,12031 @@ +/*! + * Tabler Icons 1.112.0 by tabler - https://tabler.io + * License - https://github.com/tabler/tabler-icons/blob/master/LICENSE + */ +@font-face { + font-family: "tabler-icons"; + font-style: normal; + font-weight: 400; + src: url("fonts/tabler-icons.eot"); + src: url("fonts/tabler-icons.eot?#iefix") format("embedded-opentype"), url("fonts/tabler-icons.woff2") format("woff2"), url("fonts/tabler-icons.woff") format("woff"), url("fonts/tabler-icons.ttf") format("truetype"), url("fonts/tabler-icons.svg#tabler-icons") format("svg"); +} + +@media screen and (-webkit-min-device-pixel-ratio: 0) { + @font-face { + font-family: "tabler-icons"; + src: url("fonts/tabler-icons.svg#tabler-icons") format("svg"); + } +} + +.ti { + font-family: "tabler-icons" !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ti-123:before { + content: "\f554"; +} + +.ti-2fa:before { + content: "\eca0"; +} + +.ti-360-view:before { + content: "\f566"; +} + +.ti-3d-cube-sphere:before { + content: "\ecd7"; +} + +.ti-3d-cube-sphere-off:before { + content: "\f3b5"; +} + +.ti-3d-rotate:before { + content: "\f020"; +} + +.ti-a-b:before { + content: "\ec36"; +} + +.ti-a-b-2:before { + content: "\f25f"; +} + +.ti-a-b-off:before { + content: "\f0a6"; +} + +.ti-abacus:before { + content: "\f05c"; +} + +.ti-abacus-off:before { + content: "\f3b6"; +} + +.ti-abc:before { + content: "\f567"; +} + +.ti-access-point:before { + content: "\ed1b"; +} + +.ti-access-point-off:before { + content: "\ed1a"; +} + +.ti-accessible:before { + content: "\eba9"; +} + +.ti-accessible-off:before { + content: "\f0a7"; +} + +.ti-activity:before { + content: "\ed23"; +} + +.ti-activity-heartbeat:before { + content: "\f0db"; +} + +.ti-ad:before { + content: "\ea02"; +} + +.ti-ad-2:before { + content: "\ef1f"; +} + +.ti-ad-off:before { + content: "\f3b7"; +} + +.ti-address-book:before { + content: "\f021"; +} + +.ti-address-book-off:before { + content: "\f3b8"; +} + +.ti-adjustments:before { + content: "\ea03"; +} + +.ti-adjustments-alt:before { + content: "\ec37"; +} + +.ti-adjustments-horizontal:before { + content: "\ec38"; +} + +.ti-adjustments-off:before { + content: "\f0a8"; +} + +.ti-aerial-lift:before { + content: "\edfe"; +} + +.ti-affiliate:before { + content: "\edff"; +} + +.ti-air-balloon:before { + content: "\f4a6"; +} + +.ti-air-conditioning:before { + content: "\f3a2"; +} + +.ti-air-conditioning-disabled:before { + content: "\f542"; +} + +.ti-alarm:before { + content: "\ea04"; +} + +.ti-alarm-off:before { + content: "\f0a9"; +} + +.ti-album:before { + content: "\f022"; +} + +.ti-album-off:before { + content: "\f3b9"; +} + +.ti-alert-circle:before { + content: "\ea05"; +} + +.ti-alert-octagon:before { + content: "\ecc6"; +} + +.ti-alert-triangle:before { + content: "\ea06"; +} + +.ti-alien:before { + content: "\ebde"; +} + +.ti-align-box-bottom-center:before { + content: "\f530"; +} + +.ti-align-box-bottom-left:before { + content: "\f531"; +} + +.ti-align-box-bottom-right:before { + content: "\f532"; +} + +.ti-align-box-left-bottom:before { + content: "\f533"; +} + +.ti-align-box-left-middle:before { + content: "\f534"; +} + +.ti-align-box-left-top:before { + content: "\f535"; +} + +.ti-align-box-right-bottom:before { + content: "\f536"; +} + +.ti-align-box-right-middle:before { + content: "\f537"; +} + +.ti-align-box-right-top:before { + content: "\f538"; +} + +.ti-align-box-top-center:before { + content: "\f539"; +} + +.ti-align-box-top-left:before { + content: "\f53a"; +} + +.ti-align-box-top-right:before { + content: "\f53b"; +} + +.ti-align-center:before { + content: "\ea07"; +} + +.ti-align-justified:before { + content: "\ea08"; +} + +.ti-align-left:before { + content: "\ea09"; +} + +.ti-align-right:before { + content: "\ea0a"; +} + +.ti-alpha:before { + content: "\f543"; +} + +.ti-alphabet-cyrillic:before { + content: "\f1df"; +} + +.ti-alphabet-greek:before { + content: "\f1e0"; +} + +.ti-alphabet-latin:before { + content: "\f1e1"; +} + +.ti-ambulance:before { + content: "\ebf5"; +} + +.ti-ampersand:before { + content: "\f229"; +} + +.ti-analyze:before { + content: "\f3a3"; +} + +.ti-analyze-off:before { + content: "\f3ba"; +} + +.ti-anchor:before { + content: "\eb76"; +} + +.ti-anchor-off:before { + content: "\f0f7"; +} + +.ti-angle:before { + content: "\ef20"; +} + +.ti-ankh:before { + content: "\f1cd"; +} + +.ti-antenna:before { + content: "\f094"; +} + +.ti-antenna-bars-1:before { + content: "\ecc7"; +} + +.ti-antenna-bars-2:before { + content: "\ecc8"; +} + +.ti-antenna-bars-3:before { + content: "\ecc9"; +} + +.ti-antenna-bars-4:before { + content: "\ecca"; +} + +.ti-antenna-bars-5:before { + content: "\eccb"; +} + +.ti-antenna-bars-off:before { + content: "\f0aa"; +} + +.ti-antenna-off:before { + content: "\f3bb"; +} + +.ti-aperture:before { + content: "\eb58"; +} + +.ti-aperture-off:before { + content: "\f3bc"; +} + +.ti-api:before { + content: "\effd"; +} + +.ti-api-app:before { + content: "\effc"; +} + +.ti-api-app-off:before { + content: "\f0ab"; +} + +.ti-api-off:before { + content: "\f0f8"; +} + +.ti-app-window:before { + content: "\efe6"; +} + +.ti-apple:before { + content: "\ef21"; +} + +.ti-apps:before { + content: "\ebb6"; +} + +.ti-apps-off:before { + content: "\f0ac"; +} + +.ti-archive:before { + content: "\ea0b"; +} + +.ti-archive-off:before { + content: "\f0ad"; +} + +.ti-armchair:before { + content: "\ef9e"; +} + +.ti-armchair-2:before { + content: "\efe7"; +} + +.ti-armchair-2-off:before { + content: "\f3bd"; +} + +.ti-armchair-off:before { + content: "\f3be"; +} + +.ti-arrow-autofit-content:before { + content: "\ef31"; +} + +.ti-arrow-autofit-down:before { + content: "\ef32"; +} + +.ti-arrow-autofit-height:before { + content: "\ef33"; +} + +.ti-arrow-autofit-left:before { + content: "\ef34"; +} + +.ti-arrow-autofit-right:before { + content: "\ef35"; +} + +.ti-arrow-autofit-up:before { + content: "\ef36"; +} + +.ti-arrow-autofit-width:before { + content: "\ef37"; +} + +.ti-arrow-back:before { + content: "\ea0c"; +} + +.ti-arrow-back-up:before { + content: "\eb77"; +} + +.ti-arrow-bar-down:before { + content: "\ea0d"; +} + +.ti-arrow-bar-left:before { + content: "\ea0e"; +} + +.ti-arrow-bar-right:before { + content: "\ea0f"; +} + +.ti-arrow-bar-to-down:before { + content: "\ec88"; +} + +.ti-arrow-bar-to-left:before { + content: "\ec89"; +} + +.ti-arrow-bar-to-right:before { + content: "\ec8a"; +} + +.ti-arrow-bar-to-up:before { + content: "\ec8b"; +} + +.ti-arrow-bar-up:before { + content: "\ea10"; +} + +.ti-arrow-bear-left:before { + content: "\f045"; +} + +.ti-arrow-bear-left-2:before { + content: "\f044"; +} + +.ti-arrow-bear-right:before { + content: "\f047"; +} + +.ti-arrow-bear-right-2:before { + content: "\f046"; +} + +.ti-arrow-big-down:before { + content: "\edda"; +} + +.ti-arrow-big-down-line:before { + content: "\efe8"; +} + +.ti-arrow-big-down-lines:before { + content: "\efe9"; +} + +.ti-arrow-big-left:before { + content: "\eddb"; +} + +.ti-arrow-big-left-line:before { + content: "\efea"; +} + +.ti-arrow-big-left-lines:before { + content: "\efeb"; +} + +.ti-arrow-big-right:before { + content: "\eddc"; +} + +.ti-arrow-big-right-line:before { + content: "\efec"; +} + +.ti-arrow-big-right-lines:before { + content: "\efed"; +} + +.ti-arrow-big-top:before { + content: "\eddd"; +} + +.ti-arrow-big-up-line:before { + content: "\efee"; +} + +.ti-arrow-big-up-lines:before { + content: "\efef"; +} + +.ti-arrow-bounce:before { + content: "\f3a4"; +} + +.ti-arrow-curve-left:before { + content: "\f048"; +} + +.ti-arrow-curve-right:before { + content: "\f049"; +} + +.ti-arrow-down:before { + content: "\ea16"; +} + +.ti-arrow-down-bar:before { + content: "\ed98"; +} + +.ti-arrow-down-circle:before { + content: "\ea11"; +} + +.ti-arrow-down-left:before { + content: "\ea13"; +} + +.ti-arrow-down-left-circle:before { + content: "\ea12"; +} + +.ti-arrow-down-right:before { + content: "\ea15"; +} + +.ti-arrow-down-right-circle:before { + content: "\ea14"; +} + +.ti-arrow-down-square:before { + content: "\ed9a"; +} + +.ti-arrow-down-tail:before { + content: "\ed9b"; +} + +.ti-arrow-fork:before { + content: "\f04a"; +} + +.ti-arrow-forward:before { + content: "\ea17"; +} + +.ti-arrow-forward-up:before { + content: "\eb78"; +} + +.ti-arrow-guide:before { + content: "\f22a"; +} + +.ti-arrow-iteration:before { + content: "\f578"; +} + +.ti-arrow-left:before { + content: "\ea19"; +} + +.ti-arrow-left-bar:before { + content: "\ed9c"; +} + +.ti-arrow-left-circle:before { + content: "\ea18"; +} + +.ti-arrow-left-right:before { + content: "\f04b"; +} + +.ti-arrow-left-square:before { + content: "\ed9d"; +} + +.ti-arrow-left-tail:before { + content: "\ed9e"; +} + +.ti-arrow-loop-left:before { + content: "\ed9f"; +} + +.ti-arrow-loop-left-2:before { + content: "\f04c"; +} + +.ti-arrow-loop-right:before { + content: "\eda0"; +} + +.ti-arrow-loop-right-2:before { + content: "\f04d"; +} + +.ti-arrow-merge:before { + content: "\f04e"; +} + +.ti-arrow-merge-both:before { + content: "\f23b"; +} + +.ti-arrow-merge-left:before { + content: "\f23c"; +} + +.ti-arrow-merge-right:before { + content: "\f23d"; +} + +.ti-arrow-move-down:before { + content: "\f2ba"; +} + +.ti-arrow-move-left:before { + content: "\f2bb"; +} + +.ti-arrow-move-right:before { + content: "\f2bc"; +} + +.ti-arrow-move-up:before { + content: "\f2bd"; +} + +.ti-arrow-narrow-down:before { + content: "\ea1a"; +} + +.ti-arrow-narrow-left:before { + content: "\ea1b"; +} + +.ti-arrow-narrow-right:before { + content: "\ea1c"; +} + +.ti-arrow-narrow-up:before { + content: "\ea1d"; +} + +.ti-arrow-ramp-left:before { + content: "\ed3c"; +} + +.ti-arrow-ramp-left-2:before { + content: "\f04f"; +} + +.ti-arrow-ramp-left-3:before { + content: "\f050"; +} + +.ti-arrow-ramp-right:before { + content: "\ed3d"; +} + +.ti-arrow-ramp-right-2:before { + content: "\f051"; +} + +.ti-arrow-ramp-right-3:before { + content: "\f052"; +} + +.ti-arrow-right:before { + content: "\ea1f"; +} + +.ti-arrow-right-bar:before { + content: "\eda1"; +} + +.ti-arrow-right-circle:before { + content: "\ea1e"; +} + +.ti-arrow-right-square:before { + content: "\eda2"; +} + +.ti-arrow-right-tail:before { + content: "\eda3"; +} + +.ti-arrow-rotary-first-left:before { + content: "\f053"; +} + +.ti-arrow-rotary-first-right:before { + content: "\f054"; +} + +.ti-arrow-rotary-last-left:before { + content: "\f055"; +} + +.ti-arrow-rotary-last-right:before { + content: "\f056"; +} + +.ti-arrow-rotary-left:before { + content: "\f057"; +} + +.ti-arrow-rotary-right:before { + content: "\f058"; +} + +.ti-arrow-rotary-straight:before { + content: "\f059"; +} + +.ti-arrow-roundabout-left:before { + content: "\f22b"; +} + +.ti-arrow-roundabout-right:before { + content: "\f22c"; +} + +.ti-arrow-sharp-turn-left:before { + content: "\f05a"; +} + +.ti-arrow-sharp-turn-right:before { + content: "\f05b"; +} + +.ti-arrow-up:before { + content: "\ea25"; +} + +.ti-arrow-up-bar:before { + content: "\eda4"; +} + +.ti-arrow-up-circle:before { + content: "\ea20"; +} + +.ti-arrow-up-left:before { + content: "\ea22"; +} + +.ti-arrow-up-left-circle:before { + content: "\ea21"; +} + +.ti-arrow-up-right:before { + content: "\ea24"; +} + +.ti-arrow-up-right-circle:before { + content: "\ea23"; +} + +.ti-arrow-up-square:before { + content: "\eda6"; +} + +.ti-arrow-up-tail:before { + content: "\eda7"; +} + +.ti-arrow-wave-left-down:before { + content: "\eda8"; +} + +.ti-arrow-wave-left-up:before { + content: "\eda9"; +} + +.ti-arrow-wave-right-down:before { + content: "\edaa"; +} + +.ti-arrow-wave-right-up:before { + content: "\edab"; +} + +.ti-arrow-zig-zag:before { + content: "\f4a7"; +} + +.ti-arrows-cross:before { + content: "\effe"; +} + +.ti-arrows-diagonal:before { + content: "\ea27"; +} + +.ti-arrows-diagonal-2:before { + content: "\ea26"; +} + +.ti-arrows-diagonal-minimize:before { + content: "\ef39"; +} + +.ti-arrows-diagonal-minimize-2:before { + content: "\ef38"; +} + +.ti-arrows-diff:before { + content: "\f296"; +} + +.ti-arrows-double-ne-sw:before { + content: "\edde"; +} + +.ti-arrows-double-nw-se:before { + content: "\eddf"; +} + +.ti-arrows-double-se-nw:before { + content: "\ede0"; +} + +.ti-arrows-double-sw-ne:before { + content: "\ede1"; +} + +.ti-arrows-down:before { + content: "\edad"; +} + +.ti-arrows-down-up:before { + content: "\edac"; +} + +.ti-arrows-exchange:before { + content: "\f1f4"; +} + +.ti-arrows-exchange-2:before { + content: "\f1f3"; +} + +.ti-arrows-horizontal:before { + content: "\eb59"; +} + +.ti-arrows-join:before { + content: "\edaf"; +} + +.ti-arrows-join-2:before { + content: "\edae"; +} + +.ti-arrows-left:before { + content: "\edb1"; +} + +.ti-arrows-left-down:before { + content: "\ee00"; +} + +.ti-arrows-left-right:before { + content: "\edb0"; +} + +.ti-arrows-maximize:before { + content: "\ea28"; +} + +.ti-arrows-minimize:before { + content: "\ea29"; +} + +.ti-arrows-move:before { + content: "\f22f"; +} + +.ti-arrows-move-horizontal:before { + content: "\f22d"; +} + +.ti-arrows-move-vertical:before { + content: "\f22e"; +} + +.ti-arrows-random:before { + content: "\f095"; +} + +.ti-arrows-right:before { + content: "\edb3"; +} + +.ti-arrows-right-down:before { + content: "\ee01"; +} + +.ti-arrows-right-left:before { + content: "\edb2"; +} + +.ti-arrows-shuffle:before { + content: "\f000"; +} + +.ti-arrows-shuffle-2:before { + content: "\efff"; +} + +.ti-arrows-sort:before { + content: "\eb5a"; +} + +.ti-arrows-split:before { + content: "\edb5"; +} + +.ti-arrows-split-2:before { + content: "\edb4"; +} + +.ti-arrows-transfer-down:before { + content: "\f2cc"; +} + +.ti-arrows-transfer-up:before { + content: "\f2cd"; +} + +.ti-arrows-up:before { + content: "\edb7"; +} + +.ti-arrows-up-down:before { + content: "\edb6"; +} + +.ti-arrows-up-left:before { + content: "\ee02"; +} + +.ti-arrows-up-right:before { + content: "\ee03"; +} + +.ti-arrows-vertical:before { + content: "\eb5b"; +} + +.ti-artboard:before { + content: "\ea2a"; +} + +.ti-artboard-off:before { + content: "\f0ae"; +} + +.ti-article:before { + content: "\f1e2"; +} + +.ti-article-off:before { + content: "\f3bf"; +} + +.ti-aspect-ratio:before { + content: "\ed30"; +} + +.ti-aspect-ratio-off:before { + content: "\f0af"; +} + +.ti-assembly:before { + content: "\f24d"; +} + +.ti-assembly-off:before { + content: "\f3c0"; +} + +.ti-asset:before { + content: "\f1ce"; +} + +.ti-asterisk:before { + content: "\efd5"; +} + +.ti-asterisk-simple:before { + content: "\efd4"; +} + +.ti-at:before { + content: "\ea2b"; +} + +.ti-at-off:before { + content: "\f0b0"; +} + +.ti-atom:before { + content: "\eb79"; +} + +.ti-atom-2:before { + content: "\ebdf"; +} + +.ti-atom-off:before { + content: "\f0f9"; +} + +.ti-augmented-reality:before { + content: "\f023"; +} + +.ti-augmented-reality-2:before { + content: "\f37e"; +} + +.ti-augmented-reality-off:before { + content: "\f3c1"; +} + +.ti-award:before { + content: "\ea2c"; +} + +.ti-award-off:before { + content: "\f0fa"; +} + +.ti-axe:before { + content: "\ef9f"; +} + +.ti-axis-x:before { + content: "\ef45"; +} + +.ti-axis-y:before { + content: "\ef46"; +} + +.ti-baby-bottle:before { + content: "\f5d2"; +} + +.ti-baby-carriage:before { + content: "\f05d"; +} + +.ti-backhoe:before { + content: "\ed86"; +} + +.ti-backpack:before { + content: "\ef47"; +} + +.ti-backpack-off:before { + content: "\f3c2"; +} + +.ti-backspace:before { + content: "\ea2d"; +} + +.ti-badge:before { + content: "\efc2"; +} + +.ti-badge-3d:before { + content: "\f555"; +} + +.ti-badge-4k:before { + content: "\f556"; +} + +.ti-badge-8k:before { + content: "\f557"; +} + +.ti-badge-ad:before { + content: "\f558"; +} + +.ti-badge-ar:before { + content: "\f559"; +} + +.ti-badge-cc:before { + content: "\f55a"; +} + +.ti-badge-hd:before { + content: "\f55b"; +} + +.ti-badge-off:before { + content: "\f0fb"; +} + +.ti-badge-sd:before { + content: "\f55c"; +} + +.ti-badge-tm:before { + content: "\f55d"; +} + +.ti-badge-vo:before { + content: "\f55e"; +} + +.ti-badge-vr:before { + content: "\f55f"; +} + +.ti-badge-wc:before { + content: "\f560"; +} + +.ti-badges:before { + content: "\efc3"; +} + +.ti-badges-off:before { + content: "\f0fc"; +} + +.ti-baguette:before { + content: "\f3a5"; +} + +.ti-ball-american-football:before { + content: "\ee04"; +} + +.ti-ball-american-football-off:before { + content: "\f3c3"; +} + +.ti-ball-baseball:before { + content: "\efa0"; +} + +.ti-ball-basketball:before { + content: "\ec28"; +} + +.ti-ball-bowling:before { + content: "\ec29"; +} + +.ti-ball-football:before { + content: "\ee06"; +} + +.ti-ball-football-off:before { + content: "\ee05"; +} + +.ti-ball-tennis:before { + content: "\ec2a"; +} + +.ti-ball-volleyball:before { + content: "\ec2b"; +} + +.ti-ballon:before { + content: "\ef3a"; +} + +.ti-ballon-off:before { + content: "\f0fd"; +} + +.ti-ballpen:before { + content: "\f06e"; +} + +.ti-ballpen-off:before { + content: "\f0b1"; +} + +.ti-ban:before { + content: "\ea2e"; +} + +.ti-bandage:before { + content: "\eb7a"; +} + +.ti-bandage-off:before { + content: "\f3c4"; +} + +.ti-barbell:before { + content: "\eff0"; +} + +.ti-barbell-off:before { + content: "\f0b2"; +} + +.ti-barcode:before { + content: "\ebc6"; +} + +.ti-barcode-off:before { + content: "\f0b3"; +} + +.ti-barrel:before { + content: "\f0b4"; +} + +.ti-barrel-off:before { + content: "\f0fe"; +} + +.ti-barrier-block:before { + content: "\f00e"; +} + +.ti-barrier-block-off:before { + content: "\f0b5"; +} + +.ti-baseline:before { + content: "\f024"; +} + +.ti-basket:before { + content: "\ebe1"; +} + +.ti-basket-off:before { + content: "\f0b6"; +} + +.ti-bat:before { + content: "\f284"; +} + +.ti-bath:before { + content: "\ef48"; +} + +.ti-bath-off:before { + content: "\f0ff"; +} + +.ti-battery:before { + content: "\ea34"; +} + +.ti-battery-1:before { + content: "\ea2f"; +} + +.ti-battery-2:before { + content: "\ea30"; +} + +.ti-battery-3:before { + content: "\ea31"; +} + +.ti-battery-4:before { + content: "\ea32"; +} + +.ti-battery-automotive:before { + content: "\ee07"; +} + +.ti-battery-charging:before { + content: "\ea33"; +} + +.ti-battery-charging-2:before { + content: "\ef3b"; +} + +.ti-battery-eco:before { + content: "\ef3c"; +} + +.ti-battery-off:before { + content: "\ed1c"; +} + +.ti-beach:before { + content: "\ef3d"; +} + +.ti-beach-off:before { + content: "\f0b7"; +} + +.ti-bed:before { + content: "\eb5c"; +} + +.ti-bed-off:before { + content: "\f100"; +} + +.ti-beer:before { + content: "\efa1"; +} + +.ti-beer-off:before { + content: "\f101"; +} + +.ti-bell:before { + content: "\ea35"; +} + +.ti-bell-minus:before { + content: "\ede2"; +} + +.ti-bell-off:before { + content: "\ece9"; +} + +.ti-bell-plus:before { + content: "\ede3"; +} + +.ti-bell-ringing:before { + content: "\ed07"; +} + +.ti-bell-ringing-2:before { + content: "\ede4"; +} + +.ti-bell-school:before { + content: "\f05e"; +} + +.ti-bell-x:before { + content: "\ede5"; +} + +.ti-bell-z:before { + content: "\eff1"; +} + +.ti-beta:before { + content: "\f544"; +} + +.ti-bible:before { + content: "\efc4"; +} + +.ti-bike:before { + content: "\ea36"; +} + +.ti-bike-off:before { + content: "\f0b8"; +} + +.ti-binary:before { + content: "\ee08"; +} + +.ti-binary-off:before { + content: "\f3c5"; +} + +.ti-binary-tree:before { + content: "\f5d4"; +} + +.ti-binary-tree-2:before { + content: "\f5d3"; +} + +.ti-biohazard:before { + content: "\ecb8"; +} + +.ti-biohazard-off:before { + content: "\f0b9"; +} + +.ti-blade:before { + content: "\f4bd"; +} + +.ti-bleach:before { + content: "\f2f3"; +} + +.ti-bleach-chlorine:before { + content: "\f2f0"; +} + +.ti-bleach-no-chlorine:before { + content: "\f2f1"; +} + +.ti-bleach-off:before { + content: "\f2f2"; +} + +.ti-blockquote:before { + content: "\ee09"; +} + +.ti-bluetooth:before { + content: "\ea37"; +} + +.ti-bluetooth-connected:before { + content: "\ecea"; +} + +.ti-bluetooth-off:before { + content: "\eceb"; +} + +.ti-bluetooth-x:before { + content: "\f081"; +} + +.ti-blur:before { + content: "\ef8c"; +} + +.ti-blur-off:before { + content: "\f3c6"; +} + +.ti-bmp:before { + content: "\f3a6"; +} + +.ti-bold:before { + content: "\eb7b"; +} + +.ti-bold-off:before { + content: "\f0ba"; +} + +.ti-bolt:before { + content: "\ea38"; +} + +.ti-bolt-off:before { + content: "\ecec"; +} + +.ti-bomb:before { + content: "\f59c"; +} + +.ti-bone:before { + content: "\edb8"; +} + +.ti-bone-off:before { + content: "\f0bb"; +} + +.ti-bong:before { + content: "\f3a7"; +} + +.ti-bong-off:before { + content: "\f3c7"; +} + +.ti-book:before { + content: "\ea39"; +} + +.ti-book-2:before { + content: "\efc5"; +} + +.ti-book-download:before { + content: "\f070"; +} + +.ti-book-off:before { + content: "\f0bc"; +} + +.ti-book-upload:before { + content: "\f071"; +} + +.ti-bookmark:before { + content: "\ea3a"; +} + +.ti-bookmark-off:before { + content: "\eced"; +} + +.ti-bookmarks:before { + content: "\ed08"; +} + +.ti-bookmarks-off:before { + content: "\f0bd"; +} + +.ti-books:before { + content: "\eff2"; +} + +.ti-books-off:before { + content: "\f0be"; +} + +.ti-border-all:before { + content: "\ea3b"; +} + +.ti-border-bottom:before { + content: "\ea3c"; +} + +.ti-border-horizontal:before { + content: "\ea3d"; +} + +.ti-border-inner:before { + content: "\ea3e"; +} + +.ti-border-left:before { + content: "\ea3f"; +} + +.ti-border-none:before { + content: "\ea40"; +} + +.ti-border-outer:before { + content: "\ea41"; +} + +.ti-border-radius:before { + content: "\eb7c"; +} + +.ti-border-right:before { + content: "\ea42"; +} + +.ti-border-style:before { + content: "\ee0a"; +} + +.ti-border-style-2:before { + content: "\ef22"; +} + +.ti-border-top:before { + content: "\ea43"; +} + +.ti-border-vertical:before { + content: "\ea44"; +} + +.ti-bottle:before { + content: "\ef0b"; +} + +.ti-bottle-off:before { + content: "\f3c8"; +} + +.ti-bounce-left:before { + content: "\f59d"; +} + +.ti-bounce-right:before { + content: "\f59e"; +} + +.ti-bow:before { + content: "\f096"; +} + +.ti-bowl:before { + content: "\f4fa"; +} + +.ti-box:before { + content: "\ea45"; +} + +.ti-box-align-bottom:before { + content: "\f2a8"; +} + +.ti-box-align-bottom-left:before { + content: "\f2ce"; +} + +.ti-box-align-bottom-right:before { + content: "\f2cf"; +} + +.ti-box-align-left:before { + content: "\f2a9"; +} + +.ti-box-align-right:before { + content: "\f2aa"; +} + +.ti-box-align-top:before { + content: "\f2ab"; +} + +.ti-box-align-top-left:before { + content: "\f2d0"; +} + +.ti-box-align-top-right:before { + content: "\f2d1"; +} + +.ti-box-margin:before { + content: "\ee0b"; +} + +.ti-box-model:before { + content: "\ee0c"; +} + +.ti-box-model-2:before { + content: "\ef23"; +} + +.ti-box-model-2-off:before { + content: "\f3c9"; +} + +.ti-box-model-off:before { + content: "\f3ca"; +} + +.ti-box-multiple:before { + content: "\ee17"; +} + +.ti-box-multiple-0:before { + content: "\ee0d"; +} + +.ti-box-multiple-1:before { + content: "\ee0e"; +} + +.ti-box-multiple-2:before { + content: "\ee0f"; +} + +.ti-box-multiple-3:before { + content: "\ee10"; +} + +.ti-box-multiple-4:before { + content: "\ee11"; +} + +.ti-box-multiple-5:before { + content: "\ee12"; +} + +.ti-box-multiple-6:before { + content: "\ee13"; +} + +.ti-box-multiple-7:before { + content: "\ee14"; +} + +.ti-box-multiple-8:before { + content: "\ee15"; +} + +.ti-box-multiple-9:before { + content: "\ee16"; +} + +.ti-box-off:before { + content: "\f102"; +} + +.ti-box-padding:before { + content: "\ee18"; +} + +.ti-box-seam:before { + content: "\f561"; +} + +.ti-braces:before { + content: "\ebcc"; +} + +.ti-braces-off:before { + content: "\f0bf"; +} + +.ti-brackets:before { + content: "\ebcd"; +} + +.ti-brackets-contain:before { + content: "\f1e5"; +} + +.ti-brackets-contain-end:before { + content: "\f1e3"; +} + +.ti-brackets-contain-start:before { + content: "\f1e4"; +} + +.ti-brackets-off:before { + content: "\f0c0"; +} + +.ti-braile:before { + content: "\f545"; +} + +.ti-brain:before { + content: "\f59f"; +} + +.ti-brand-4chan:before { + content: "\f494"; +} + +.ti-brand-abstract:before { + content: "\f495"; +} + +.ti-brand-adobe:before { + content: "\f0dc"; +} + +.ti-brand-adonis-js:before { + content: "\f496"; +} + +.ti-brand-airbnb:before { + content: "\ed68"; +} + +.ti-brand-airtable:before { + content: "\ef6a"; +} + +.ti-brand-algolia:before { + content: "\f390"; +} + +.ti-brand-alpine-js:before { + content: "\f324"; +} + +.ti-brand-amazon:before { + content: "\f230"; +} + +.ti-brand-amongus:before { + content: "\f205"; +} + +.ti-brand-android:before { + content: "\ec16"; +} + +.ti-brand-angular:before { + content: "\ef6b"; +} + +.ti-brand-appgallery:before { + content: "\f231"; +} + +.ti-brand-apple:before { + content: "\ec17"; +} + +.ti-brand-apple-arcade:before { + content: "\ed69"; +} + +.ti-brand-apple-podcast:before { + content: "\f1e6"; +} + +.ti-brand-appstore:before { + content: "\ed24"; +} + +.ti-brand-asana:before { + content: "\edc5"; +} + +.ti-brand-backbone:before { + content: "\f325"; +} + +.ti-brand-badoo:before { + content: "\f206"; +} + +.ti-brand-bandcamp:before { + content: "\f207"; +} + +.ti-brand-beats:before { + content: "\f208"; +} + +.ti-brand-behance:before { + content: "\ec6e"; +} + +.ti-brand-binance:before { + content: "\f5a0"; +} + +.ti-brand-bing:before { + content: "\edc6"; +} + +.ti-brand-bitbucket:before { + content: "\edc7"; +} + +.ti-brand-blackbery:before { + content: "\f568"; +} + +.ti-brand-blender:before { + content: "\f326"; +} + +.ti-brand-blogger:before { + content: "\f35a"; +} + +.ti-brand-booking:before { + content: "\edc8"; +} + +.ti-brand-bootstrap:before { + content: "\ef3e"; +} + +.ti-brand-bulma:before { + content: "\f327"; +} + +.ti-brand-bunpo:before { + content: "\f4cf"; +} + +.ti-brand-campaignmonitor:before { + content: "\f328"; +} + +.ti-brand-carbon:before { + content: "\f348"; +} + +.ti-brand-cashapp:before { + content: "\f391"; +} + +.ti-brand-chrome:before { + content: "\ec18"; +} + +.ti-brand-codecov:before { + content: "\f329"; +} + +.ti-brand-codepen:before { + content: "\ec6f"; +} + +.ti-brand-codesandbox:before { + content: "\ed6a"; +} + +.ti-brand-cohost:before { + content: "\f5d5"; +} + +.ti-brand-coinbase:before { + content: "\f209"; +} + +.ti-brand-comedy-central:before { + content: "\f217"; +} + +.ti-brand-couchsurfing:before { + content: "\f392"; +} + +.ti-brand-css3:before { + content: "\ed6b"; +} + +.ti-brand-ctemplar:before { + content: "\f4d0"; +} + +.ti-brand-cucumber:before { + content: "\ef6c"; +} + +.ti-brand-cupra:before { + content: "\f4d1"; +} + +.ti-brand-cypress:before { + content: "\f333"; +} + +.ti-brand-d3:before { + content: "\f24e"; +} + +.ti-brand-days-counter:before { + content: "\f4d2"; +} + +.ti-brand-dcos:before { + content: "\f32a"; +} + +.ti-brand-debian:before { + content: "\ef57"; +} + +.ti-brand-deliveroo:before { + content: "\f4d3"; +} + +.ti-brand-deno:before { + content: "\f24f"; +} + +.ti-brand-deviantart:before { + content: "\ecfb"; +} + +.ti-brand-discord:before { + content: "\ece3"; +} + +.ti-brand-disney:before { + content: "\f20a"; +} + +.ti-brand-disqus:before { + content: "\edc9"; +} + +.ti-brand-django:before { + content: "\f349"; +} + +.ti-brand-docker:before { + content: "\edca"; +} + +.ti-brand-doctrine:before { + content: "\ef6d"; +} + +.ti-brand-dolby-digital:before { + content: "\f4d4"; +} + +.ti-brand-dribbble:before { + content: "\ec19"; +} + +.ti-brand-drops:before { + content: "\f4d5"; +} + +.ti-brand-drupal:before { + content: "\f393"; +} + +.ti-brand-edge:before { + content: "\ecfc"; +} + +.ti-brand-ember:before { + content: "\f497"; +} + +.ti-brand-envato:before { + content: "\f394"; +} + +.ti-brand-facebook:before { + content: "\ec1a"; +} + +.ti-brand-figma:before { + content: "\ec93"; +} + +.ti-brand-finder:before { + content: "\f218"; +} + +.ti-brand-firebase:before { + content: "\ef6e"; +} + +.ti-brand-firefox:before { + content: "\ecfd"; +} + +.ti-brand-flickr:before { + content: "\ecfe"; +} + +.ti-brand-flightradar24:before { + content: "\f4d6"; +} + +.ti-brand-flipboard:before { + content: "\f20b"; +} + +.ti-brand-flutter:before { + content: "\f395"; +} + +.ti-brand-fortnite:before { + content: "\f260"; +} + +.ti-brand-foursquare:before { + content: "\ecff"; +} + +.ti-brand-framer:before { + content: "\ec1b"; +} + +.ti-brand-gatsby:before { + content: "\f396"; +} + +.ti-brand-git:before { + content: "\ef6f"; +} + +.ti-brand-github:before { + content: "\ec1c"; +} + +.ti-brand-github-copilot:before { + content: "\f4a8"; +} + +.ti-brand-gitlab:before { + content: "\ec1d"; +} + +.ti-brand-gmail:before { + content: "\efa2"; +} + +.ti-brand-google:before { + content: "\ec1f"; +} + +.ti-brand-google-analytics:before { + content: "\edcb"; +} + +.ti-brand-google-drive:before { + content: "\ec1e"; +} + +.ti-brand-google-fit:before { + content: "\f297"; +} + +.ti-brand-google-one:before { + content: "\f232"; +} + +.ti-brand-google-photos:before { + content: "\f20c"; +} + +.ti-brand-google-play:before { + content: "\ed25"; +} + +.ti-brand-grammarly:before { + content: "\f32b"; +} + +.ti-brand-graphql:before { + content: "\f32c"; +} + +.ti-brand-gravatar:before { + content: "\edcc"; +} + +.ti-brand-grindr:before { + content: "\f20d"; +} + +.ti-brand-guardian:before { + content: "\f4fb"; +} + +.ti-brand-gumroad:before { + content: "\f5d6"; +} + +.ti-brand-headlessui:before { + content: "\f32d"; +} + +.ti-brand-hipchat:before { + content: "\edcd"; +} + +.ti-brand-html5:before { + content: "\ed6c"; +} + +.ti-brand-inertia:before { + content: "\f34a"; +} + +.ti-brand-instagram:before { + content: "\ec20"; +} + +.ti-brand-intercom:before { + content: "\f1cf"; +} + +.ti-brand-javascript:before { + content: "\ef0c"; +} + +.ti-brand-kickstarter:before { + content: "\edce"; +} + +.ti-brand-kotlin:before { + content: "\ed6d"; +} + +.ti-brand-laravel:before { + content: "\f34b"; +} + +.ti-brand-lastfm:before { + content: "\f001"; +} + +.ti-brand-linkedin:before { + content: "\ec8c"; +} + +.ti-brand-linktree:before { + content: "\f1e7"; +} + +.ti-brand-linqpad:before { + content: "\f562"; +} + +.ti-brand-loom:before { + content: "\ef70"; +} + +.ti-brand-mailgun:before { + content: "\f32e"; +} + +.ti-brand-mantine:before { + content: "\f32f"; +} + +.ti-brand-mastercard:before { + content: "\ef49"; +} + +.ti-brand-mastodon:before { + content: "\f250"; +} + +.ti-brand-mcdonalds:before { + content: "\f251"; +} + +.ti-brand-medium:before { + content: "\ec70"; +} + +.ti-brand-mercedes:before { + content: "\f072"; +} + +.ti-brand-messenger:before { + content: "\ec71"; +} + +.ti-brand-meta:before { + content: "\efb0"; +} + +.ti-brand-mixpanel:before { + content: "\f397"; +} + +.ti-brand-monday:before { + content: "\f219"; +} + +.ti-brand-my-oppo:before { + content: "\f4d7"; +} + +.ti-brand-nem:before { + content: "\f5a1"; +} + +.ti-brand-netbeans:before { + content: "\ef71"; +} + +.ti-brand-netflix:before { + content: "\edcf"; +} + +.ti-brand-nexo:before { + content: "\f5a2"; +} + +.ti-brand-nextcloud:before { + content: "\f4d8"; +} + +.ti-brand-nextjs:before { + content: "\f0dd"; +} + +.ti-brand-nord-vpn:before { + content: "\f37f"; +} + +.ti-brand-notion:before { + content: "\ef7b"; +} + +.ti-brand-npm:before { + content: "\f569"; +} + +.ti-brand-nuxt:before { + content: "\f0de"; +} + +.ti-brand-nytimes:before { + content: "\ef8d"; +} + +.ti-brand-office:before { + content: "\f398"; +} + +.ti-brand-ok-ru:before { + content: "\f399"; +} + +.ti-brand-onedrive:before { + content: "\f5d7"; +} + +.ti-brand-open-source:before { + content: "\edd0"; +} + +.ti-brand-openvpn:before { + content: "\f39a"; +} + +.ti-brand-opera:before { + content: "\ec21"; +} + +.ti-brand-pagekit:before { + content: "\edd1"; +} + +.ti-brand-patreon:before { + content: "\edd2"; +} + +.ti-brand-paypal:before { + content: "\ec22"; +} + +.ti-brand-peanut:before { + content: "\f39b"; +} + +.ti-brand-pepsi:before { + content: "\f261"; +} + +.ti-brand-php:before { + content: "\ef72"; +} + +.ti-brand-picsart:before { + content: "\f4d9"; +} + +.ti-brand-pinterest:before { + content: "\ec8d"; +} + +.ti-brand-pocket:before { + content: "\ed00"; +} + +.ti-brand-polymer:before { + content: "\f498"; +} + +.ti-brand-prisma:before { + content: "\f499"; +} + +.ti-brand-producthunt:before { + content: "\edd3"; +} + +.ti-brand-pushbullet:before { + content: "\f330"; +} + +.ti-brand-pushover:before { + content: "\f20e"; +} + +.ti-brand-python:before { + content: "\ed01"; +} + +.ti-brand-react:before { + content: "\f34c"; +} + +.ti-brand-react-native:before { + content: "\ef73"; +} + +.ti-brand-reason:before { + content: "\f49a"; +} + +.ti-brand-reddit:before { + content: "\ec8e"; +} + +.ti-brand-redhat:before { + content: "\f331"; +} + +.ti-brand-redux:before { + content: "\f3a8"; +} + +.ti-brand-revolut:before { + content: "\f4da"; +} + +.ti-brand-safari:before { + content: "\ec23"; +} + +.ti-brand-samsungpass:before { + content: "\f4db"; +} + +.ti-brand-sass:before { + content: "\edd4"; +} + +.ti-brand-sentry:before { + content: "\edd5"; +} + +.ti-brand-sharik:before { + content: "\f4dc"; +} + +.ti-brand-shazam:before { + content: "\edd6"; +} + +.ti-brand-shopee:before { + content: "\f252"; +} + +.ti-brand-sketch:before { + content: "\ec24"; +} + +.ti-brand-skype:before { + content: "\ed02"; +} + +.ti-brand-slack:before { + content: "\ec72"; +} + +.ti-brand-snapchat:before { + content: "\ec25"; +} + +.ti-brand-snapseed:before { + content: "\f253"; +} + +.ti-brand-socket-io:before { + content: "\f49b"; +} + +.ti-brand-soundcloud:before { + content: "\ed6e"; +} + +.ti-brand-spacehey:before { + content: "\f4fc"; +} + +.ti-brand-spotify:before { + content: "\ed03"; +} + +.ti-brand-stackoverflow:before { + content: "\ef58"; +} + +.ti-brand-steam:before { + content: "\ed6f"; +} + +.ti-brand-storybook:before { + content: "\f332"; +} + +.ti-brand-strava:before { + content: "\f254"; +} + +.ti-brand-stripe:before { + content: "\edd7"; +} + +.ti-brand-sublime-text:before { + content: "\ef74"; +} + +.ti-brand-superhuman:before { + content: "\f50c"; +} + +.ti-brand-supernova:before { + content: "\f49c"; +} + +.ti-brand-surfshark:before { + content: "\f255"; +} + +.ti-brand-svelte:before { + content: "\f0df"; +} + +.ti-brand-tabler:before { + content: "\ec8f"; +} + +.ti-brand-tailwind:before { + content: "\eca1"; +} + +.ti-brand-telegram:before { + content: "\ec26"; +} + +.ti-brand-tether:before { + content: "\f5a3"; +} + +.ti-brand-tidal:before { + content: "\ed70"; +} + +.ti-brand-tiktok:before { + content: "\ec73"; +} + +.ti-brand-tinder:before { + content: "\ed71"; +} + +.ti-brand-topbuzz:before { + content: "\f50d"; +} + +.ti-brand-torchain:before { + content: "\f5a4"; +} + +.ti-brand-toyota:before { + content: "\f262"; +} + +.ti-brand-trello:before { + content: "\f39d"; +} + +.ti-brand-tripadvisor:before { + content: "\f002"; +} + +.ti-brand-tumblr:before { + content: "\ed04"; +} + +.ti-brand-twitch:before { + content: "\ed05"; +} + +.ti-brand-twitter:before { + content: "\ec27"; +} + +.ti-brand-uber:before { + content: "\ef75"; +} + +.ti-brand-ubuntu:before { + content: "\ef59"; +} + +.ti-brand-unity:before { + content: "\f49d"; +} + +.ti-brand-unsplash:before { + content: "\edd8"; +} + +.ti-brand-upwork:before { + content: "\f39e"; +} + +.ti-brand-valorant:before { + content: "\f39f"; +} + +.ti-brand-vercel:before { + content: "\ef24"; +} + +.ti-brand-vimeo:before { + content: "\ed06"; +} + +.ti-brand-vinted:before { + content: "\f20f"; +} + +.ti-brand-visa:before { + content: "\f380"; +} + +.ti-brand-visual-studio:before { + content: "\ef76"; +} + +.ti-brand-vivaldi:before { + content: "\f210"; +} + +.ti-brand-vk:before { + content: "\ed72"; +} + +.ti-brand-volkswagen:before { + content: "\f50e"; +} + +.ti-brand-vsco:before { + content: "\f334"; +} + +.ti-brand-vscode:before { + content: "\f3a0"; +} + +.ti-brand-vue:before { + content: "\f0e0"; +} + +.ti-brand-walmart:before { + content: "\f211"; +} + +.ti-brand-waze:before { + content: "\f5d8"; +} + +.ti-brand-webflow:before { + content: "\f2d2"; +} + +.ti-brand-whatsapp:before { + content: "\ec74"; +} + +.ti-brand-windows:before { + content: "\ecd8"; +} + +.ti-brand-windy:before { + content: "\f4dd"; +} + +.ti-brand-wish:before { + content: "\f212"; +} + +.ti-brand-wix:before { + content: "\f3a1"; +} + +.ti-brand-wordpress:before { + content: "\f2d3"; +} + +.ti-brand-xbox:before { + content: "\f298"; +} + +.ti-brand-xing:before { + content: "\f21a"; +} + +.ti-brand-yahoo:before { + content: "\ed73"; +} + +.ti-brand-yatse:before { + content: "\f213"; +} + +.ti-brand-ycombinator:before { + content: "\edd9"; +} + +.ti-brand-youtube:before { + content: "\ec90"; +} + +.ti-brand-youtube-kids:before { + content: "\f214"; +} + +.ti-brand-zalando:before { + content: "\f49e"; +} + +.ti-brand-zapier:before { + content: "\f49f"; +} + +.ti-brand-zeit:before { + content: "\f335"; +} + +.ti-brand-zoom:before { + content: "\f215"; +} + +.ti-brand-zulip:before { + content: "\f4de"; +} + +.ti-brand-zwift:before { + content: "\f216"; +} + +.ti-bread:before { + content: "\efa3"; +} + +.ti-bread-off:before { + content: "\f3cb"; +} + +.ti-briefcase:before { + content: "\ea46"; +} + +.ti-briefcase-off:before { + content: "\f3cc"; +} + +.ti-brightness:before { + content: "\eb7f"; +} + +.ti-brightness-2:before { + content: "\ee19"; +} + +.ti-brightness-down:before { + content: "\eb7d"; +} + +.ti-brightness-half:before { + content: "\ee1a"; +} + +.ti-brightness-off:before { + content: "\f3cd"; +} + +.ti-brightness-up:before { + content: "\eb7e"; +} + +.ti-broadcast:before { + content: "\f1e9"; +} + +.ti-broadcast-off:before { + content: "\f1e8"; +} + +.ti-browser:before { + content: "\ebb7"; +} + +.ti-browser-check:before { + content: "\efd6"; +} + +.ti-browser-off:before { + content: "\f0c1"; +} + +.ti-browser-plus:before { + content: "\efd7"; +} + +.ti-browser-x:before { + content: "\efd8"; +} + +.ti-brush:before { + content: "\ebb8"; +} + +.ti-brush-off:before { + content: "\f0c2"; +} + +.ti-bucket:before { + content: "\ea47"; +} + +.ti-bucket-droplet:before { + content: "\f56a"; +} + +.ti-bucket-off:before { + content: "\f103"; +} + +.ti-bug:before { + content: "\ea48"; +} + +.ti-bug-off:before { + content: "\f0c3"; +} + +.ti-building:before { + content: "\ea4f"; +} + +.ti-building-arch:before { + content: "\ea49"; +} + +.ti-building-bank:before { + content: "\ebe2"; +} + +.ti-building-bridge:before { + content: "\ea4b"; +} + +.ti-building-bridge-2:before { + content: "\ea4a"; +} + +.ti-building-broadcast-tower:before { + content: "\f4be"; +} + +.ti-building-carousel:before { + content: "\ed87"; +} + +.ti-building-castle:before { + content: "\ed88"; +} + +.ti-building-church:before { + content: "\ea4c"; +} + +.ti-building-circus:before { + content: "\f4bf"; +} + +.ti-building-community:before { + content: "\ebf6"; +} + +.ti-building-cottage:before { + content: "\ee1b"; +} + +.ti-building-estate:before { + content: "\f5a5"; +} + +.ti-building-factory:before { + content: "\ee1c"; +} + +.ti-building-factory-2:before { + content: "\f082"; +} + +.ti-building-fortress:before { + content: "\ed89"; +} + +.ti-building-hospital:before { + content: "\ea4d"; +} + +.ti-building-lighthouse:before { + content: "\ed8a"; +} + +.ti-building-monument:before { + content: "\ed26"; +} + +.ti-building-pavilon:before { + content: "\ebf7"; +} + +.ti-building-skyscraper:before { + content: "\ec39"; +} + +.ti-building-store:before { + content: "\ea4e"; +} + +.ti-building-tunnel:before { + content: "\f5a6"; +} + +.ti-building-warehouse:before { + content: "\ebe3"; +} + +.ti-building-wind-turbine:before { + content: "\f4c0"; +} + +.ti-bulb:before { + content: "\ea51"; +} + +.ti-bulb-off:before { + content: "\ea50"; +} + +.ti-bulldozer:before { + content: "\ee1d"; +} + +.ti-bus:before { + content: "\ebe4"; +} + +.ti-bus-off:before { + content: "\f3ce"; +} + +.ti-bus-stop:before { + content: "\f2d4"; +} + +.ti-businessplan:before { + content: "\ee1e"; +} + +.ti-butterfly:before { + content: "\efd9"; +} + +.ti-c-sharp:before { + content: "\f003"; +} + +.ti-cactus:before { + content: "\f21b"; +} + +.ti-cactus-off:before { + content: "\f3cf"; +} + +.ti-cake:before { + content: "\f00f"; +} + +.ti-cake-off:before { + content: "\f104"; +} + +.ti-calculator:before { + content: "\eb80"; +} + +.ti-calculator-off:before { + content: "\f0c4"; +} + +.ti-calendar:before { + content: "\ea53"; +} + +.ti-calendar-event:before { + content: "\ea52"; +} + +.ti-calendar-minus:before { + content: "\ebb9"; +} + +.ti-calendar-off:before { + content: "\ee1f"; +} + +.ti-calendar-plus:before { + content: "\ebba"; +} + +.ti-calendar-stats:before { + content: "\ee20"; +} + +.ti-calendar-time:before { + content: "\ee21"; +} + +.ti-camera:before { + content: "\ea54"; +} + +.ti-camera-minus:before { + content: "\ec3a"; +} + +.ti-camera-off:before { + content: "\ecee"; +} + +.ti-camera-plus:before { + content: "\ec3b"; +} + +.ti-camera-rotate:before { + content: "\ee22"; +} + +.ti-camera-selfie:before { + content: "\ee23"; +} + +.ti-campfire:before { + content: "\f5a7"; +} + +.ti-candle:before { + content: "\efc6"; +} + +.ti-candy:before { + content: "\ef0d"; +} + +.ti-candy-off:before { + content: "\f0c5"; +} + +.ti-cane:before { + content: "\f50f"; +} + +.ti-cannabis:before { + content: "\f4c1"; +} + +.ti-capture:before { + content: "\ec3c"; +} + +.ti-capture-off:before { + content: "\f0c6"; +} + +.ti-car:before { + content: "\ebbb"; +} + +.ti-car-crane:before { + content: "\ef25"; +} + +.ti-car-crash:before { + content: "\efa4"; +} + +.ti-car-off:before { + content: "\f0c7"; +} + +.ti-car-turbine:before { + content: "\f4fd"; +} + +.ti-caravan:before { + content: "\ec7c"; +} + +.ti-cardboards:before { + content: "\ed74"; +} + +.ti-cardboards-off:before { + content: "\f0c8"; +} + +.ti-cards:before { + content: "\f510"; +} + +.ti-caret-down:before { + content: "\eb5d"; +} + +.ti-caret-left:before { + content: "\eb5e"; +} + +.ti-caret-right:before { + content: "\eb5f"; +} + +.ti-caret-up:before { + content: "\eb60"; +} + +.ti-carrot:before { + content: "\f21c"; +} + +.ti-carrot-off:before { + content: "\f3d0"; +} + +.ti-cash:before { + content: "\ea55"; +} + +.ti-cash-banknote:before { + content: "\ee25"; +} + +.ti-cash-banknote-off:before { + content: "\ee24"; +} + +.ti-cash-off:before { + content: "\f105"; +} + +.ti-cast:before { + content: "\ea56"; +} + +.ti-cast-off:before { + content: "\f0c9"; +} + +.ti-category:before { + content: "\f1f6"; +} + +.ti-category-2:before { + content: "\f1f5"; +} + +.ti-ce:before { + content: "\ed75"; +} + +.ti-ce-off:before { + content: "\f0ca"; +} + +.ti-cell:before { + content: "\f05f"; +} + +.ti-cell-signal-1:before { + content: "\f083"; +} + +.ti-cell-signal-2:before { + content: "\f084"; +} + +.ti-cell-signal-3:before { + content: "\f085"; +} + +.ti-cell-signal-4:before { + content: "\f086"; +} + +.ti-cell-signal-5:before { + content: "\f087"; +} + +.ti-cell-signal-off:before { + content: "\f088"; +} + +.ti-certificate:before { + content: "\ed76"; +} + +.ti-certificate-2:before { + content: "\f073"; +} + +.ti-certificate-2-off:before { + content: "\f0cb"; +} + +.ti-certificate-off:before { + content: "\f0cc"; +} + +.ti-chair-director:before { + content: "\f2d5"; +} + +.ti-chalkboard:before { + content: "\f34d"; +} + +.ti-chalkboard-off:before { + content: "\f3d1"; +} + +.ti-charging-pile:before { + content: "\ee26"; +} + +.ti-chart-arcs:before { + content: "\ee28"; +} + +.ti-chart-arcs-3:before { + content: "\ee27"; +} + +.ti-chart-area:before { + content: "\ea58"; +} + +.ti-chart-area-line:before { + content: "\ea57"; +} + +.ti-chart-arrows:before { + content: "\ee2a"; +} + +.ti-chart-arrows-vertical:before { + content: "\ee29"; +} + +.ti-chart-bar:before { + content: "\ea59"; +} + +.ti-chart-bar-off:before { + content: "\f3d2"; +} + +.ti-chart-bubble:before { + content: "\ec75"; +} + +.ti-chart-candle:before { + content: "\ea5a"; +} + +.ti-chart-circles:before { + content: "\ee2b"; +} + +.ti-chart-donut:before { + content: "\ea5b"; +} + +.ti-chart-donut-2:before { + content: "\ee2c"; +} + +.ti-chart-donut-3:before { + content: "\ee2d"; +} + +.ti-chart-donut-4:before { + content: "\ee2e"; +} + +.ti-chart-dots:before { + content: "\ee2f"; +} + +.ti-chart-dots-2:before { + content: "\f097"; +} + +.ti-chart-dots-3:before { + content: "\f098"; +} + +.ti-chart-grid-dots:before { + content: "\f4c2"; +} + +.ti-chart-infographic:before { + content: "\ee30"; +} + +.ti-chart-line:before { + content: "\ea5c"; +} + +.ti-chart-pie:before { + content: "\ea5d"; +} + +.ti-chart-pie-2:before { + content: "\ee31"; +} + +.ti-chart-pie-3:before { + content: "\ee32"; +} + +.ti-chart-pie-4:before { + content: "\ee33"; +} + +.ti-chart-pie-off:before { + content: "\f3d3"; +} + +.ti-chart-radar:before { + content: "\ed77"; +} + +.ti-chart-treemap:before { + content: "\f381"; +} + +.ti-check:before { + content: "\ea5e"; +} + +.ti-checkbox:before { + content: "\eba6"; +} + +.ti-checklist:before { + content: "\f074"; +} + +.ti-checks:before { + content: "\ebaa"; +} + +.ti-checkup-list:before { + content: "\ef5a"; +} + +.ti-cheese:before { + content: "\ef26"; +} + +.ti-chef-hat:before { + content: "\f21d"; +} + +.ti-chef-hat-off:before { + content: "\f3d4"; +} + +.ti-cherry:before { + content: "\f511"; +} + +.ti-chess:before { + content: "\f382"; +} + +.ti-chess-bishop:before { + content: "\f56b"; +} + +.ti-chess-king:before { + content: "\f56c"; +} + +.ti-chess-knight:before { + content: "\f56d"; +} + +.ti-chess-queen:before { + content: "\f56e"; +} + +.ti-chess-rook:before { + content: "\f56f"; +} + +.ti-chevron-down:before { + content: "\ea5f"; +} + +.ti-chevron-down-left:before { + content: "\ed09"; +} + +.ti-chevron-down-right:before { + content: "\ed0a"; +} + +.ti-chevron-left:before { + content: "\ea60"; +} + +.ti-chevron-right:before { + content: "\ea61"; +} + +.ti-chevron-up:before { + content: "\ea62"; +} + +.ti-chevron-up-left:before { + content: "\ed0b"; +} + +.ti-chevron-up-right:before { + content: "\ed0c"; +} + +.ti-chevrons-down:before { + content: "\ea63"; +} + +.ti-chevrons-down-left:before { + content: "\ed0d"; +} + +.ti-chevrons-down-right:before { + content: "\ed0e"; +} + +.ti-chevrons-left:before { + content: "\ea64"; +} + +.ti-chevrons-right:before { + content: "\ea65"; +} + +.ti-chevrons-up:before { + content: "\ea66"; +} + +.ti-chevrons-up-left:before { + content: "\ed0f"; +} + +.ti-chevrons-up-right:before { + content: "\ed10"; +} + +.ti-chisel:before { + content: "\f383"; +} + +.ti-christmas-tree:before { + content: "\ed78"; +} + +.ti-christmas-tree-off:before { + content: "\f3d5"; +} + +.ti-circle:before { + content: "\ea6b"; +} + +.ti-circle-caret-down:before { + content: "\f4a9"; +} + +.ti-circle-caret-left:before { + content: "\f4aa"; +} + +.ti-circle-caret-right:before { + content: "\f4ab"; +} + +.ti-circle-caret-up:before { + content: "\f4ac"; +} + +.ti-circle-check:before { + content: "\ea67"; +} + +.ti-circle-dashed:before { + content: "\ed27"; +} + +.ti-circle-dot:before { + content: "\efb1"; +} + +.ti-circle-dotted:before { + content: "\ed28"; +} + +.ti-circle-half:before { + content: "\ee3f"; +} + +.ti-circle-half-2:before { + content: "\eff3"; +} + +.ti-circle-half-vertical:before { + content: "\ee3e"; +} + +.ti-circle-letter-a:before { + content: "\f441"; +} + +.ti-circle-letter-b:before { + content: "\f442"; +} + +.ti-circle-letter-c:before { + content: "\f443"; +} + +.ti-circle-letter-d:before { + content: "\f444"; +} + +.ti-circle-letter-e:before { + content: "\f445"; +} + +.ti-circle-letter-f:before { + content: "\f446"; +} + +.ti-circle-letter-g:before { + content: "\f447"; +} + +.ti-circle-letter-h:before { + content: "\f448"; +} + +.ti-circle-letter-i:before { + content: "\f449"; +} + +.ti-circle-letter-j:before { + content: "\f44a"; +} + +.ti-circle-letter-k:before { + content: "\f44b"; +} + +.ti-circle-letter-l:before { + content: "\f44c"; +} + +.ti-circle-letter-m:before { + content: "\f44d"; +} + +.ti-circle-letter-n:before { + content: "\f44e"; +} + +.ti-circle-letter-o:before { + content: "\f44f"; +} + +.ti-circle-letter-p:before { + content: "\f450"; +} + +.ti-circle-letter-q:before { + content: "\f451"; +} + +.ti-circle-letter-r:before { + content: "\f452"; +} + +.ti-circle-letter-s:before { + content: "\f453"; +} + +.ti-circle-letter-t:before { + content: "\f454"; +} + +.ti-circle-letter-u:before { + content: "\f455"; +} + +.ti-circle-letter-v:before { + content: "\f4ad"; +} + +.ti-circle-letter-w:before { + content: "\f456"; +} + +.ti-circle-letter-x:before { + content: "\f4ae"; +} + +.ti-circle-letter-y:before { + content: "\f457"; +} + +.ti-circle-letter-z:before { + content: "\f458"; +} + +.ti-circle-minus:before { + content: "\ea68"; +} + +.ti-circle-number-0:before { + content: "\ee34"; +} + +.ti-circle-number-1:before { + content: "\ee35"; +} + +.ti-circle-number-2:before { + content: "\ee36"; +} + +.ti-circle-number-3:before { + content: "\ee37"; +} + +.ti-circle-number-4:before { + content: "\ee38"; +} + +.ti-circle-number-5:before { + content: "\ee39"; +} + +.ti-circle-number-6:before { + content: "\ee3a"; +} + +.ti-circle-number-7:before { + content: "\ee3b"; +} + +.ti-circle-number-8:before { + content: "\ee3c"; +} + +.ti-circle-number-9:before { + content: "\ee3d"; +} + +.ti-circle-off:before { + content: "\ee40"; +} + +.ti-circle-plus:before { + content: "\ea69"; +} + +.ti-circle-rectangle:before { + content: "\f010"; +} + +.ti-circle-rectangle-off:before { + content: "\f0cd"; +} + +.ti-circle-square:before { + content: "\ece4"; +} + +.ti-circle-triangle:before { + content: "\f011"; +} + +.ti-circle-x:before { + content: "\ea6a"; +} + +.ti-circles:before { + content: "\ece5"; +} + +.ti-circles-relation:before { + content: "\f4c3"; +} + +.ti-circuit-ammeter:before { + content: "\f271"; +} + +.ti-circuit-battery:before { + content: "\f272"; +} + +.ti-circuit-bulb:before { + content: "\f273"; +} + +.ti-circuit-capacitor:before { + content: "\f275"; +} + +.ti-circuit-capacitor-polarized:before { + content: "\f274"; +} + +.ti-circuit-cell:before { + content: "\f277"; +} + +.ti-circuit-cell-plus:before { + content: "\f276"; +} + +.ti-circuit-changeover:before { + content: "\f278"; +} + +.ti-circuit-diode:before { + content: "\f27a"; +} + +.ti-circuit-diode-zener:before { + content: "\f279"; +} + +.ti-circuit-ground:before { + content: "\f27c"; +} + +.ti-circuit-ground-digital:before { + content: "\f27b"; +} + +.ti-circuit-inductor:before { + content: "\f27d"; +} + +.ti-circuit-motor:before { + content: "\f27e"; +} + +.ti-circuit-pushbutton:before { + content: "\f27f"; +} + +.ti-circuit-resistor:before { + content: "\f280"; +} + +.ti-circuit-switch-closed:before { + content: "\f281"; +} + +.ti-circuit-switch-open:before { + content: "\f282"; +} + +.ti-circuit-voltmeter:before { + content: "\f283"; +} + +.ti-clear-all:before { + content: "\ee41"; +} + +.ti-clear-formatting:before { + content: "\ebe5"; +} + +.ti-click:before { + content: "\ebbc"; +} + +.ti-clipboard:before { + content: "\ea6f"; +} + +.ti-clipboard-check:before { + content: "\ea6c"; +} + +.ti-clipboard-copy:before { + content: "\f299"; +} + +.ti-clipboard-data:before { + content: "\f563"; +} + +.ti-clipboard-heart:before { + content: "\f34e"; +} + +.ti-clipboard-list:before { + content: "\ea6d"; +} + +.ti-clipboard-off:before { + content: "\f0ce"; +} + +.ti-clipboard-plus:before { + content: "\efb2"; +} + +.ti-clipboard-text:before { + content: "\f089"; +} + +.ti-clipboard-typography:before { + content: "\f34f"; +} + +.ti-clipboard-x:before { + content: "\ea6e"; +} + +.ti-clock:before { + content: "\ea70"; +} + +.ti-clock-2:before { + content: "\f099"; +} + +.ti-clock-cancel:before { + content: "\f546"; +} + +.ti-clock-edit:before { + content: "\f547"; +} + +.ti-clock-hour-1:before { + content: "\f313"; +} + +.ti-clock-hour-10:before { + content: "\f314"; +} + +.ti-clock-hour-11:before { + content: "\f315"; +} + +.ti-clock-hour-12:before { + content: "\f316"; +} + +.ti-clock-hour-2:before { + content: "\f317"; +} + +.ti-clock-hour-3:before { + content: "\f318"; +} + +.ti-clock-hour-4:before { + content: "\f319"; +} + +.ti-clock-hour-5:before { + content: "\f31a"; +} + +.ti-clock-hour-6:before { + content: "\f31b"; +} + +.ti-clock-hour-7:before { + content: "\f31c"; +} + +.ti-clock-hour-8:before { + content: "\f31d"; +} + +.ti-clock-hour-9:before { + content: "\f31e"; +} + +.ti-clock-off:before { + content: "\f0cf"; +} + +.ti-clock-pause:before { + content: "\f548"; +} + +.ti-clock-play:before { + content: "\f549"; +} + +.ti-clock-record:before { + content: "\f54a"; +} + +.ti-clock-stop:before { + content: "\f54b"; +} + +.ti-clothes-rack:before { + content: "\f285"; +} + +.ti-clothes-rack-off:before { + content: "\f3d6"; +} + +.ti-cloud:before { + content: "\ea76"; +} + +.ti-cloud-computing:before { + content: "\f1d0"; +} + +.ti-cloud-data-connection:before { + content: "\f1d1"; +} + +.ti-cloud-download:before { + content: "\ea71"; +} + +.ti-cloud-fog:before { + content: "\ecd9"; +} + +.ti-cloud-lock:before { + content: "\efdb"; +} + +.ti-cloud-lock-open:before { + content: "\efda"; +} + +.ti-cloud-off:before { + content: "\ed3e"; +} + +.ti-cloud-rain:before { + content: "\ea72"; +} + +.ti-cloud-snow:before { + content: "\ea73"; +} + +.ti-cloud-storm:before { + content: "\ea74"; +} + +.ti-cloud-upload:before { + content: "\ea75"; +} + +.ti-clover:before { + content: "\f1ea"; +} + +.ti-clover-2:before { + content: "\f21e"; +} + +.ti-clubs:before { + content: "\eff4"; +} + +.ti-code:before { + content: "\ea77"; +} + +.ti-code-asterix:before { + content: "\f312"; +} + +.ti-code-circle:before { + content: "\f4ff"; +} + +.ti-code-circle-2:before { + content: "\f4fe"; +} + +.ti-code-minus:before { + content: "\ee42"; +} + +.ti-code-off:before { + content: "\f0d0"; +} + +.ti-code-plus:before { + content: "\ee43"; +} + +.ti-coffee:before { + content: "\ef0e"; +} + +.ti-coffee-off:before { + content: "\f106"; +} + +.ti-coffin:before { + content: "\f579"; +} + +.ti-coin:before { + content: "\eb82"; +} + +.ti-coin-bitcoin:before { + content: "\f2be"; +} + +.ti-coin-euro:before { + content: "\f2bf"; +} + +.ti-coin-monero:before { + content: "\f4a0"; +} + +.ti-coin-off:before { + content: "\f0d1"; +} + +.ti-coin-pound:before { + content: "\f2c0"; +} + +.ti-coin-rupee:before { + content: "\f2c1"; +} + +.ti-coin-yen:before { + content: "\f2c2"; +} + +.ti-coin-yuan:before { + content: "\f2c3"; +} + +.ti-color-filter:before { + content: "\f5a8"; +} + +.ti-color-picker:before { + content: "\ebe6"; +} + +.ti-color-picker-off:before { + content: "\f0d2"; +} + +.ti-color-swatch:before { + content: "\eb61"; +} + +.ti-color-swatch-off:before { + content: "\f0d3"; +} + +.ti-column-insert-left:before { + content: "\ee44"; +} + +.ti-column-insert-right:before { + content: "\ee45"; +} + +.ti-columns:before { + content: "\eb83"; +} + +.ti-columns-off:before { + content: "\f0d4"; +} + +.ti-comet:before { + content: "\ec76"; +} + +.ti-command:before { + content: "\ea78"; +} + +.ti-command-off:before { + content: "\f3d7"; +} + +.ti-compass:before { + content: "\ea79"; +} + +.ti-compass-off:before { + content: "\f0d5"; +} + +.ti-components:before { + content: "\efa5"; +} + +.ti-components-off:before { + content: "\f0d6"; +} + +.ti-cone:before { + content: "\efdd"; +} + +.ti-cone-2:before { + content: "\efdc"; +} + +.ti-cone-off:before { + content: "\f3d8"; +} + +.ti-confetti:before { + content: "\ee46"; +} + +.ti-confetti-off:before { + content: "\f3d9"; +} + +.ti-confucius:before { + content: "\f58a"; +} + +.ti-container:before { + content: "\ee47"; +} + +.ti-container-off:before { + content: "\f107"; +} + +.ti-contrast:before { + content: "\ec4e"; +} + +.ti-contrast-2:before { + content: "\efc7"; +} + +.ti-contrast-2-off:before { + content: "\f3da"; +} + +.ti-contrast-off:before { + content: "\f3db"; +} + +.ti-cooker:before { + content: "\f57a"; +} + +.ti-cookie:before { + content: "\ef0f"; +} + +.ti-cookie-man:before { + content: "\f4c4"; +} + +.ti-cookie-off:before { + content: "\f0d7"; +} + +.ti-copy:before { + content: "\ea7a"; +} + +.ti-copy-off:before { + content: "\f0d8"; +} + +.ti-copyleft:before { + content: "\ec3d"; +} + +.ti-copyleft-off:before { + content: "\f0d9"; +} + +.ti-copyright:before { + content: "\ea7b"; +} + +.ti-copyright-off:before { + content: "\f0da"; +} + +.ti-corner-down-left:before { + content: "\ea7c"; +} + +.ti-corner-down-left-double:before { + content: "\ee48"; +} + +.ti-corner-down-right:before { + content: "\ea7d"; +} + +.ti-corner-down-right-double:before { + content: "\ee49"; +} + +.ti-corner-left-down:before { + content: "\ea7e"; +} + +.ti-corner-left-down-double:before { + content: "\ee4a"; +} + +.ti-corner-left-up:before { + content: "\ea7f"; +} + +.ti-corner-left-up-double:before { + content: "\ee4b"; +} + +.ti-corner-right-down:before { + content: "\ea80"; +} + +.ti-corner-right-down-double:before { + content: "\ee4c"; +} + +.ti-corner-right-up:before { + content: "\ea81"; +} + +.ti-corner-right-up-double:before { + content: "\ee4d"; +} + +.ti-corner-up-left:before { + content: "\ea82"; +} + +.ti-corner-up-left-double:before { + content: "\ee4e"; +} + +.ti-corner-up-right:before { + content: "\ea83"; +} + +.ti-corner-up-right-double:before { + content: "\ee4f"; +} + +.ti-cpu:before { + content: "\ef8e"; +} + +.ti-cpu-2:before { + content: "\f075"; +} + +.ti-cpu-off:before { + content: "\f108"; +} + +.ti-crane:before { + content: "\ef27"; +} + +.ti-crane-off:before { + content: "\f109"; +} + +.ti-creative-commons:before { + content: "\efb3"; +} + +.ti-creative-commons-by:before { + content: "\f21f"; +} + +.ti-creative-commons-nc:before { + content: "\f220"; +} + +.ti-creative-commons-nd:before { + content: "\f221"; +} + +.ti-creative-commons-off:before { + content: "\f10a"; +} + +.ti-creative-commons-sa:before { + content: "\f222"; +} + +.ti-creative-commons-zero:before { + content: "\f223"; +} + +.ti-credit-card:before { + content: "\ea84"; +} + +.ti-credit-card-off:before { + content: "\ed11"; +} + +.ti-cricket:before { + content: "\f09a"; +} + +.ti-crop:before { + content: "\ea85"; +} + +.ti-cross:before { + content: "\ef8f"; +} + +.ti-cross-off:before { + content: "\f10b"; +} + +.ti-crosshair:before { + content: "\ec3e"; +} + +.ti-crown:before { + content: "\ed12"; +} + +.ti-crown-off:before { + content: "\ee50"; +} + +.ti-crutches:before { + content: "\ef5b"; +} + +.ti-crutches-off:before { + content: "\f10c"; +} + +.ti-crystal-ball:before { + content: "\f57b"; +} + +.ti-cup:before { + content: "\ef28"; +} + +.ti-cup-off:before { + content: "\f10d"; +} + +.ti-curling:before { + content: "\efc8"; +} + +.ti-curly-loop:before { + content: "\ecda"; +} + +.ti-currency:before { + content: "\efa6"; +} + +.ti-currency-bahraini:before { + content: "\ee51"; +} + +.ti-currency-baht:before { + content: "\f08a"; +} + +.ti-currency-bitcoin:before { + content: "\ebab"; +} + +.ti-currency-cent:before { + content: "\ee53"; +} + +.ti-currency-dinar:before { + content: "\ee54"; +} + +.ti-currency-dirham:before { + content: "\ee55"; +} + +.ti-currency-dogecoin:before { + content: "\ef4b"; +} + +.ti-currency-dollar:before { + content: "\eb84"; +} + +.ti-currency-dollar-australian:before { + content: "\ee56"; +} + +.ti-currency-dollar-brunei:before { + content: "\f36c"; +} + +.ti-currency-dollar-canadian:before { + content: "\ee57"; +} + +.ti-currency-dollar-guyanese:before { + content: "\f36d"; +} + +.ti-currency-dollar-off:before { + content: "\f3dc"; +} + +.ti-currency-dollar-singapore:before { + content: "\ee58"; +} + +.ti-currency-dollar-zimbabwean:before { + content: "\f36e"; +} + +.ti-currency-dong:before { + content: "\f36f"; +} + +.ti-currency-dram:before { + content: "\f370"; +} + +.ti-currency-ethereum:before { + content: "\ee59"; +} + +.ti-currency-euro:before { + content: "\eb85"; +} + +.ti-currency-euro-off:before { + content: "\f3dd"; +} + +.ti-currency-forint:before { + content: "\ee5a"; +} + +.ti-currency-frank:before { + content: "\ee5b"; +} + +.ti-currency-guarani:before { + content: "\f371"; +} + +.ti-currency-hryvnia:before { + content: "\f372"; +} + +.ti-currency-kip:before { + content: "\f373"; +} + +.ti-currency-krone-czech:before { + content: "\ee5c"; +} + +.ti-currency-krone-danish:before { + content: "\ee5d"; +} + +.ti-currency-krone-swedish:before { + content: "\ee5e"; +} + +.ti-currency-lari:before { + content: "\f374"; +} + +.ti-currency-leu:before { + content: "\ee5f"; +} + +.ti-currency-lira:before { + content: "\ee60"; +} + +.ti-currency-litecoin:before { + content: "\ee61"; +} + +.ti-currency-lyd:before { + content: "\f375"; +} + +.ti-currency-manat:before { + content: "\f376"; +} + +.ti-currency-monero:before { + content: "\f377"; +} + +.ti-currency-naira:before { + content: "\ee62"; +} + +.ti-currency-off:before { + content: "\f3de"; +} + +.ti-currency-paanga:before { + content: "\f378"; +} + +.ti-currency-pound:before { + content: "\ebac"; +} + +.ti-currency-pound-off:before { + content: "\f3df"; +} + +.ti-currency-quetzal:before { + content: "\f379"; +} + +.ti-currency-real:before { + content: "\ee63"; +} + +.ti-currency-renminbi:before { + content: "\ee64"; +} + +.ti-currency-ripple:before { + content: "\ee65"; +} + +.ti-currency-riyal:before { + content: "\ee66"; +} + +.ti-currency-rubel:before { + content: "\ee67"; +} + +.ti-currency-rufiyaa:before { + content: "\f37a"; +} + +.ti-currency-rupee:before { + content: "\ebad"; +} + +.ti-currency-rupee-nepalese:before { + content: "\f37b"; +} + +.ti-currency-shekel:before { + content: "\ee68"; +} + +.ti-currency-solana:before { + content: "\f4a1"; +} + +.ti-currency-som:before { + content: "\f37c"; +} + +.ti-currency-taka:before { + content: "\ee69"; +} + +.ti-currency-tenge:before { + content: "\f37d"; +} + +.ti-currency-tugrik:before { + content: "\ee6a"; +} + +.ti-currency-won:before { + content: "\ee6b"; +} + +.ti-currency-yen:before { + content: "\ebae"; +} + +.ti-currency-yen-off:before { + content: "\f3e0"; +} + +.ti-currency-yuan:before { + content: "\f29a"; +} + +.ti-currency-zloty:before { + content: "\ee6c"; +} + +.ti-current-location:before { + content: "\ecef"; +} + +.ti-current-location-off:before { + content: "\f10e"; +} + +.ti-cursor-off:before { + content: "\f10f"; +} + +.ti-cursor-text:before { + content: "\ee6d"; +} + +.ti-cut:before { + content: "\ea86"; +} + +.ti-cylinder:before { + content: "\f54c"; +} + +.ti-dashboard:before { + content: "\ea87"; +} + +.ti-dashboard-off:before { + content: "\f3e1"; +} + +.ti-database:before { + content: "\ea88"; +} + +.ti-database-export:before { + content: "\ee6e"; +} + +.ti-database-import:before { + content: "\ee6f"; +} + +.ti-database-off:before { + content: "\ee70"; +} + +.ti-deer:before { + content: "\f4c5"; +} + +.ti-delta:before { + content: "\f53c"; +} + +.ti-dental:before { + content: "\f025"; +} + +.ti-dental-broken:before { + content: "\f286"; +} + +.ti-dental-off:before { + content: "\f110"; +} + +.ti-details:before { + content: "\ee71"; +} + +.ti-details-off:before { + content: "\f3e2"; +} + +.ti-device-airpods:before { + content: "\f5a9"; +} + +.ti-device-analytics:before { + content: "\ee72"; +} + +.ti-device-audio-tape:before { + content: "\ee73"; +} + +.ti-device-camera-phone:before { + content: "\f233"; +} + +.ti-device-cctv:before { + content: "\ee74"; +} + +.ti-device-cctv-off:before { + content: "\f3e3"; +} + +.ti-device-computer-camera:before { + content: "\ee76"; +} + +.ti-device-computer-camera-off:before { + content: "\ee75"; +} + +.ti-device-desktop:before { + content: "\ea89"; +} + +.ti-device-desktop-analytics:before { + content: "\ee77"; +} + +.ti-device-desktop-off:before { + content: "\ee78"; +} + +.ti-device-floppy:before { + content: "\eb62"; +} + +.ti-device-gamepad:before { + content: "\eb63"; +} + +.ti-device-gamepad-2:before { + content: "\f1d2"; +} + +.ti-device-heart-monitor:before { + content: "\f060"; +} + +.ti-device-laptop:before { + content: "\eb64"; +} + +.ti-device-laptop-off:before { + content: "\f061"; +} + +.ti-device-mobile:before { + content: "\ea8a"; +} + +.ti-device-mobile-charging:before { + content: "\f224"; +} + +.ti-device-mobile-message:before { + content: "\ee79"; +} + +.ti-device-mobile-off:before { + content: "\f062"; +} + +.ti-device-mobile-rotated:before { + content: "\ecdb"; +} + +.ti-device-mobile-vibration:before { + content: "\eb86"; +} + +.ti-device-nintendo:before { + content: "\f026"; +} + +.ti-device-nintendo-off:before { + content: "\f111"; +} + +.ti-device-sd-card:before { + content: "\f384"; +} + +.ti-device-sim:before { + content: "\f4b2"; +} + +.ti-device-sim-1:before { + content: "\f4af"; +} + +.ti-device-sim-2:before { + content: "\f4b0"; +} + +.ti-device-sim-3:before { + content: "\f4b1"; +} + +.ti-device-speaker:before { + content: "\ea8b"; +} + +.ti-device-speaker-off:before { + content: "\f112"; +} + +.ti-device-tablet:before { + content: "\ea8c"; +} + +.ti-device-tablet-off:before { + content: "\f063"; +} + +.ti-device-tv:before { + content: "\ea8d"; +} + +.ti-device-tv-off:before { + content: "\f064"; +} + +.ti-device-tv-old:before { + content: "\f1d3"; +} + +.ti-device-watch:before { + content: "\ebf9"; +} + +.ti-device-watch-off:before { + content: "\f065"; +} + +.ti-device-watch-stats:before { + content: "\ef7d"; +} + +.ti-device-watch-stats-2:before { + content: "\ef7c"; +} + +.ti-devices:before { + content: "\eb87"; +} + +.ti-devices-2:before { + content: "\ed29"; +} + +.ti-devices-off:before { + content: "\f3e4"; +} + +.ti-devices-pc:before { + content: "\ee7a"; +} + +.ti-devices-pc-off:before { + content: "\f113"; +} + +.ti-dialpad:before { + content: "\f067"; +} + +.ti-dialpad-off:before { + content: "\f114"; +} + +.ti-diamond:before { + content: "\eb65"; +} + +.ti-diamond-off:before { + content: "\f115"; +} + +.ti-diamonds:before { + content: "\eff5"; +} + +.ti-dice:before { + content: "\eb66"; +} + +.ti-dice-1:before { + content: "\f08b"; +} + +.ti-dice-2:before { + content: "\f08c"; +} + +.ti-dice-3:before { + content: "\f08d"; +} + +.ti-dice-4:before { + content: "\f08e"; +} + +.ti-dice-5:before { + content: "\f08f"; +} + +.ti-dice-6:before { + content: "\f090"; +} + +.ti-dimensions:before { + content: "\ee7b"; +} + +.ti-direction:before { + content: "\ebfb"; +} + +.ti-direction-horizontal:before { + content: "\ebfa"; +} + +.ti-direction-sign:before { + content: "\f1f7"; +} + +.ti-direction-sign-off:before { + content: "\f3e5"; +} + +.ti-directions:before { + content: "\ea8e"; +} + +.ti-directions-off:before { + content: "\f116"; +} + +.ti-disabled:before { + content: "\ea8f"; +} + +.ti-disabled-2:before { + content: "\ebaf"; +} + +.ti-disabled-off:before { + content: "\f117"; +} + +.ti-disc:before { + content: "\ea90"; +} + +.ti-disc-golf:before { + content: "\f385"; +} + +.ti-disc-off:before { + content: "\f118"; +} + +.ti-discount:before { + content: "\ebbd"; +} + +.ti-discount-2:before { + content: "\ee7c"; +} + +.ti-discount-2-off:before { + content: "\f3e6"; +} + +.ti-discount-check:before { + content: "\f1f8"; +} + +.ti-discount-off:before { + content: "\f3e7"; +} + +.ti-divide:before { + content: "\ed5c"; +} + +.ti-dna:before { + content: "\ee7d"; +} + +.ti-dna-2:before { + content: "\ef5c"; +} + +.ti-dna-2-off:before { + content: "\f119"; +} + +.ti-dna-off:before { + content: "\f11a"; +} + +.ti-dog-bowl:before { + content: "\ef29"; +} + +.ti-door:before { + content: "\ef4e"; +} + +.ti-door-enter:before { + content: "\ef4c"; +} + +.ti-door-exit:before { + content: "\ef4d"; +} + +.ti-door-off:before { + content: "\f11b"; +} + +.ti-dots:before { + content: "\ea95"; +} + +.ti-dots-circle-horizontal:before { + content: "\ea91"; +} + +.ti-dots-diagonal:before { + content: "\ea93"; +} + +.ti-dots-diagonal-2:before { + content: "\ea92"; +} + +.ti-dots-vertical:before { + content: "\ea94"; +} + +.ti-download:before { + content: "\ea96"; +} + +.ti-download-off:before { + content: "\f11c"; +} + +.ti-drag-drop:before { + content: "\eb89"; +} + +.ti-drag-drop-2:before { + content: "\eb88"; +} + +.ti-drone:before { + content: "\ed79"; +} + +.ti-drone-off:before { + content: "\ee7e"; +} + +.ti-drop-circle:before { + content: "\efde"; +} + +.ti-droplet:before { + content: "\ea97"; +} + +.ti-droplet-filled:before { + content: "\ee80"; +} + +.ti-droplet-filled-2:before { + content: "\ee7f"; +} + +.ti-droplet-half:before { + content: "\ee82"; +} + +.ti-droplet-half-2:before { + content: "\ee81"; +} + +.ti-droplet-off:before { + content: "\ee83"; +} + +.ti-e-passport:before { + content: "\f4df"; +} + +.ti-ear:before { + content: "\ebce"; +} + +.ti-ear-off:before { + content: "\ee84"; +} + +.ti-ease-in:before { + content: "\f573"; +} + +.ti-ease-in-control-point:before { + content: "\f570"; +} + +.ti-ease-in-out:before { + content: "\f572"; +} + +.ti-ease-in-out-control-points:before { + content: "\f571"; +} + +.ti-ease-out:before { + content: "\f575"; +} + +.ti-ease-out-control-point:before { + content: "\f574"; +} + +.ti-edit:before { + content: "\ea98"; +} + +.ti-edit-circle:before { + content: "\ee85"; +} + +.ti-edit-circle-off:before { + content: "\f11d"; +} + +.ti-edit-off:before { + content: "\f11e"; +} + +.ti-egg:before { + content: "\eb8a"; +} + +.ti-egg-cracked:before { + content: "\f2d6"; +} + +.ti-egg-fried:before { + content: "\f386"; +} + +.ti-egg-off:before { + content: "\f11f"; +} + +.ti-eggs:before { + content: "\f500"; +} + +.ti-elevator:before { + content: "\efdf"; +} + +.ti-elevator-off:before { + content: "\f3e8"; +} + +.ti-emergency-bed:before { + content: "\ef5d"; +} + +.ti-empathize:before { + content: "\f29b"; +} + +.ti-empathize-off:before { + content: "\f3e9"; +} + +.ti-emphasis:before { + content: "\ebcf"; +} + +.ti-engine:before { + content: "\ef7e"; +} + +.ti-engine-off:before { + content: "\f120"; +} + +.ti-equal:before { + content: "\ee87"; +} + +.ti-equal-double:before { + content: "\f4e1"; +} + +.ti-equal-not:before { + content: "\ee86"; +} + +.ti-eraser:before { + content: "\eb8b"; +} + +.ti-eraser-off:before { + content: "\f121"; +} + +.ti-error-404:before { + content: "\f027"; +} + +.ti-error-404-off:before { + content: "\f122"; +} + +.ti-exchange:before { + content: "\ebe7"; +} + +.ti-exchange-off:before { + content: "\f123"; +} + +.ti-exclamation-mark:before { + content: "\efb4"; +} + +.ti-exclamation-mark-off:before { + content: "\f124"; +} + +.ti-explicit:before { + content: "\f256"; +} + +.ti-explicit-off:before { + content: "\f3ea"; +} + +.ti-exposure:before { + content: "\eb8c"; +} + +.ti-exposure-0:before { + content: "\f29c"; +} + +.ti-exposure-minus-1:before { + content: "\f29d"; +} + +.ti-exposure-minus-2:before { + content: "\f29e"; +} + +.ti-exposure-off:before { + content: "\f3eb"; +} + +.ti-exposure-plus-1:before { + content: "\f29f"; +} + +.ti-exposure-plus-2:before { + content: "\f2a0"; +} + +.ti-external-link:before { + content: "\ea99"; +} + +.ti-external-link-off:before { + content: "\f125"; +} + +.ti-eye:before { + content: "\ea9a"; +} + +.ti-eye-check:before { + content: "\ee88"; +} + +.ti-eye-off:before { + content: "\ecf0"; +} + +.ti-eye-table:before { + content: "\ef5e"; +} + +.ti-eyeglass:before { + content: "\ee8a"; +} + +.ti-eyeglass-2:before { + content: "\ee89"; +} + +.ti-eyeglass-off:before { + content: "\f126"; +} + +.ti-face-id:before { + content: "\ea9b"; +} + +.ti-face-id-error:before { + content: "\efa7"; +} + +.ti-face-mask:before { + content: "\efb5"; +} + +.ti-face-mask-off:before { + content: "\f127"; +} + +.ti-fall:before { + content: "\ecb9"; +} + +.ti-feather:before { + content: "\ee8b"; +} + +.ti-feather-off:before { + content: "\f128"; +} + +.ti-fence:before { + content: "\ef2a"; +} + +.ti-fence-off:before { + content: "\f129"; +} + +.ti-fidget-spinner:before { + content: "\f068"; +} + +.ti-file:before { + content: "\eaa4"; +} + +.ti-file-3d:before { + content: "\f032"; +} + +.ti-file-alert:before { + content: "\ede6"; +} + +.ti-file-analytics:before { + content: "\ede7"; +} + +.ti-file-arrow-left:before { + content: "\f033"; +} + +.ti-file-arrow-right:before { + content: "\f034"; +} + +.ti-file-barcode:before { + content: "\f035"; +} + +.ti-file-broken:before { + content: "\f501"; +} + +.ti-file-certificate:before { + content: "\ed4d"; +} + +.ti-file-chart:before { + content: "\f036"; +} + +.ti-file-check:before { + content: "\ea9c"; +} + +.ti-file-code:before { + content: "\ebd0"; +} + +.ti-file-code-2:before { + content: "\ede8"; +} + +.ti-file-database:before { + content: "\f037"; +} + +.ti-file-delta:before { + content: "\f53d"; +} + +.ti-file-description:before { + content: "\f028"; +} + +.ti-file-diff:before { + content: "\ecf1"; +} + +.ti-file-digit:before { + content: "\efa8"; +} + +.ti-file-dislike:before { + content: "\ed2a"; +} + +.ti-file-dollar:before { + content: "\efe0"; +} + +.ti-file-dots:before { + content: "\f038"; +} + +.ti-file-download:before { + content: "\ea9d"; +} + +.ti-file-euro:before { + content: "\efe1"; +} + +.ti-file-export:before { + content: "\ede9"; +} + +.ti-file-function:before { + content: "\f53e"; +} + +.ti-file-horizontal:before { + content: "\ebb0"; +} + +.ti-file-import:before { + content: "\edea"; +} + +.ti-file-infinity:before { + content: "\f502"; +} + +.ti-file-info:before { + content: "\edec"; +} + +.ti-file-invoice:before { + content: "\eb67"; +} + +.ti-file-lambda:before { + content: "\f53f"; +} + +.ti-file-like:before { + content: "\ed2b"; +} + +.ti-file-minus:before { + content: "\ea9e"; +} + +.ti-file-music:before { + content: "\ea9f"; +} + +.ti-file-off:before { + content: "\ecf2"; +} + +.ti-file-orientation:before { + content: "\f2a1"; +} + +.ti-file-pencil:before { + content: "\f039"; +} + +.ti-file-percent:before { + content: "\f540"; +} + +.ti-file-phone:before { + content: "\ecdc"; +} + +.ti-file-plus:before { + content: "\eaa0"; +} + +.ti-file-power:before { + content: "\f03a"; +} + +.ti-file-report:before { + content: "\eded"; +} + +.ti-file-rss:before { + content: "\f03b"; +} + +.ti-file-scissors:before { + content: "\f03c"; +} + +.ti-file-search:before { + content: "\ed5d"; +} + +.ti-file-settings:before { + content: "\f029"; +} + +.ti-file-shredder:before { + content: "\eaa1"; +} + +.ti-file-signal:before { + content: "\f03d"; +} + +.ti-file-spreadsheet:before { + content: "\f03e"; +} + +.ti-file-stack:before { + content: "\f503"; +} + +.ti-file-star:before { + content: "\f03f"; +} + +.ti-file-symlink:before { + content: "\ed53"; +} + +.ti-file-text:before { + content: "\eaa2"; +} + +.ti-file-time:before { + content: "\f040"; +} + +.ti-file-typography:before { + content: "\f041"; +} + +.ti-file-unknown:before { + content: "\f042"; +} + +.ti-file-upload:before { + content: "\ec91"; +} + +.ti-file-vector:before { + content: "\f043"; +} + +.ti-file-x:before { + content: "\eaa3"; +} + +.ti-file-zip:before { + content: "\ed4e"; +} + +.ti-files:before { + content: "\edef"; +} + +.ti-files-off:before { + content: "\edee"; +} + +.ti-filter:before { + content: "\eaa5"; +} + +.ti-filter-off:before { + content: "\ed2c"; +} + +.ti-fingerprint:before { + content: "\ebd1"; +} + +.ti-fingerprint-off:before { + content: "\f12a"; +} + +.ti-fire-hydrant:before { + content: "\f3a9"; +} + +.ti-fire-hydrant-off:before { + content: "\f3ec"; +} + +.ti-firetruck:before { + content: "\ebe8"; +} + +.ti-first-aid-kit:before { + content: "\ef5f"; +} + +.ti-first-aid-kit-off:before { + content: "\f3ed"; +} + +.ti-fish:before { + content: "\ef2b"; +} + +.ti-fish-bone:before { + content: "\f287"; +} + +.ti-fish-christianity:before { + content: "\f58b"; +} + +.ti-fish-hook:before { + content: "\f1f9"; +} + +.ti-fish-hook-off:before { + content: "\f3ee"; +} + +.ti-fish-off:before { + content: "\f12b"; +} + +.ti-flag:before { + content: "\eaa6"; +} + +.ti-flag-2:before { + content: "\ee8c"; +} + +.ti-flag-2-off:before { + content: "\f12c"; +} + +.ti-flag-3:before { + content: "\ee8d"; +} + +.ti-flag-off:before { + content: "\f12d"; +} + +.ti-flame:before { + content: "\ec2c"; +} + +.ti-flame-off:before { + content: "\f12e"; +} + +.ti-flare:before { + content: "\ee8e"; +} + +.ti-flask:before { + content: "\ebd2"; +} + +.ti-flask-2:before { + content: "\ef60"; +} + +.ti-flask-2-off:before { + content: "\f12f"; +} + +.ti-flask-off:before { + content: "\f130"; +} + +.ti-flip-flops:before { + content: "\f564"; +} + +.ti-flip-horizontal:before { + content: "\eaa7"; +} + +.ti-flip-vertical:before { + content: "\eaa8"; +} + +.ti-float-center:before { + content: "\ebb1"; +} + +.ti-float-left:before { + content: "\ebb2"; +} + +.ti-float-none:before { + content: "\ed13"; +} + +.ti-float-right:before { + content: "\ebb3"; +} + +.ti-flower:before { + content: "\eff6"; +} + +.ti-flower-off:before { + content: "\f131"; +} + +.ti-focus:before { + content: "\eb8d"; +} + +.ti-focus-2:before { + content: "\ebd3"; +} + +.ti-focus-centered:before { + content: "\f02a"; +} + +.ti-fold:before { + content: "\ed56"; +} + +.ti-fold-down:before { + content: "\ed54"; +} + +.ti-fold-up:before { + content: "\ed55"; +} + +.ti-folder:before { + content: "\eaad"; +} + +.ti-folder-minus:before { + content: "\eaaa"; +} + +.ti-folder-off:before { + content: "\ed14"; +} + +.ti-folder-plus:before { + content: "\eaab"; +} + +.ti-folder-x:before { + content: "\eaac"; +} + +.ti-folders:before { + content: "\eaae"; +} + +.ti-folders-off:before { + content: "\f133"; +} + +.ti-forbid:before { + content: "\ebd5"; +} + +.ti-forbid-2:before { + content: "\ebd4"; +} + +.ti-forklift:before { + content: "\ebe9"; +} + +.ti-forms:before { + content: "\ee8f"; +} + +.ti-fountain:before { + content: "\f09b"; +} + +.ti-fountain-off:before { + content: "\f134"; +} + +.ti-frame:before { + content: "\eaaf"; +} + +.ti-frame-off:before { + content: "\f135"; +} + +.ti-free-rights:before { + content: "\efb6"; +} + +.ti-fridge:before { + content: "\f1fa"; +} + +.ti-fridge-off:before { + content: "\f3ef"; +} + +.ti-friends:before { + content: "\eab0"; +} + +.ti-friends-off:before { + content: "\f136"; +} + +.ti-function:before { + content: "\f225"; +} + +.ti-function-off:before { + content: "\f3f0"; +} + +.ti-garden-cart:before { + content: "\f23e"; +} + +.ti-garden-cart-off:before { + content: "\f3f1"; +} + +.ti-gas-station:before { + content: "\ec7d"; +} + +.ti-gas-station-off:before { + content: "\f137"; +} + +.ti-gauge:before { + content: "\eab1"; +} + +.ti-gauge-off:before { + content: "\f138"; +} + +.ti-gavel:before { + content: "\ef90"; +} + +.ti-gender-agender:before { + content: "\f0e1"; +} + +.ti-gender-androgyne:before { + content: "\f0e2"; +} + +.ti-gender-bigender:before { + content: "\f0e3"; +} + +.ti-gender-demiboy:before { + content: "\f0e4"; +} + +.ti-gender-demigirl:before { + content: "\f0e5"; +} + +.ti-gender-epicene:before { + content: "\f0e6"; +} + +.ti-gender-female:before { + content: "\f0e7"; +} + +.ti-gender-femme:before { + content: "\f0e8"; +} + +.ti-gender-genderfluid:before { + content: "\f0e9"; +} + +.ti-gender-genderless:before { + content: "\f0ea"; +} + +.ti-gender-genderqueer:before { + content: "\f0eb"; +} + +.ti-gender-hermaphrodite:before { + content: "\f0ec"; +} + +.ti-gender-intergender:before { + content: "\f0ed"; +} + +.ti-gender-male:before { + content: "\f0ee"; +} + +.ti-gender-neutrois:before { + content: "\f0ef"; +} + +.ti-gender-third:before { + content: "\f0f0"; +} + +.ti-gender-transgender:before { + content: "\f0f1"; +} + +.ti-gender-trasvesti:before { + content: "\f0f2"; +} + +.ti-geometry:before { + content: "\ee90"; +} + +.ti-ghost:before { + content: "\eb8e"; +} + +.ti-ghost-2:before { + content: "\f57c"; +} + +.ti-ghost-off:before { + content: "\f3f2"; +} + +.ti-gif:before { + content: "\f257"; +} + +.ti-gift:before { + content: "\eb68"; +} + +.ti-gift-card:before { + content: "\f3aa"; +} + +.ti-gift-off:before { + content: "\f3f3"; +} + +.ti-git-branch:before { + content: "\eab2"; +} + +.ti-git-branch-deleted:before { + content: "\f57d"; +} + +.ti-git-cherry-pick:before { + content: "\f57e"; +} + +.ti-git-commit:before { + content: "\eab3"; +} + +.ti-git-compare:before { + content: "\eab4"; +} + +.ti-git-fork:before { + content: "\eb8f"; +} + +.ti-git-merge:before { + content: "\eab5"; +} + +.ti-git-pull-request:before { + content: "\eab6"; +} + +.ti-git-pull-request-closed:before { + content: "\ef7f"; +} + +.ti-git-pull-request-draft:before { + content: "\efb7"; +} + +.ti-gizmo:before { + content: "\f02b"; +} + +.ti-glass:before { + content: "\eab8"; +} + +.ti-glass-full:before { + content: "\eab7"; +} + +.ti-glass-off:before { + content: "\ee91"; +} + +.ti-globe:before { + content: "\eab9"; +} + +.ti-globe-off:before { + content: "\f139"; +} + +.ti-go-game:before { + content: "\f512"; +} + +.ti-golf:before { + content: "\ed8c"; +} + +.ti-golf-off:before { + content: "\f13a"; +} + +.ti-gps:before { + content: "\ed7a"; +} + +.ti-gradienter:before { + content: "\f3ab"; +} + +.ti-grain:before { + content: "\ee92"; +} + +.ti-graph:before { + content: "\f288"; +} + +.ti-graph-off:before { + content: "\f3f4"; +} + +.ti-grave:before { + content: "\f580"; +} + +.ti-grave-2:before { + content: "\f57f"; +} + +.ti-grid-dots:before { + content: "\eaba"; +} + +.ti-grid-pattern:before { + content: "\efc9"; +} + +.ti-grill:before { + content: "\efa9"; +} + +.ti-grill-fork:before { + content: "\f35b"; +} + +.ti-grill-off:before { + content: "\f3f5"; +} + +.ti-grill-spatula:before { + content: "\f35c"; +} + +.ti-grip-horizontal:before { + content: "\ec00"; +} + +.ti-grip-vertical:before { + content: "\ec01"; +} + +.ti-growth:before { + content: "\ee93"; +} + +.ti-guitar-pick:before { + content: "\f4c6"; +} + +.ti-h-1:before { + content: "\ec94"; +} + +.ti-h-2:before { + content: "\ec95"; +} + +.ti-h-3:before { + content: "\ec96"; +} + +.ti-h-4:before { + content: "\ec97"; +} + +.ti-h-5:before { + content: "\ec98"; +} + +.ti-h-6:before { + content: "\ec99"; +} + +.ti-hammer:before { + content: "\ef91"; +} + +.ti-hammer-off:before { + content: "\f13c"; +} + +.ti-hand-click:before { + content: "\ef4f"; +} + +.ti-hand-finger:before { + content: "\ee94"; +} + +.ti-hand-finger-off:before { + content: "\f13d"; +} + +.ti-hand-grab:before { + content: "\f091"; +} + +.ti-hand-little-finger:before { + content: "\ee95"; +} + +.ti-hand-middle-finger:before { + content: "\ec2d"; +} + +.ti-hand-move:before { + content: "\ef50"; +} + +.ti-hand-off:before { + content: "\ed15"; +} + +.ti-hand-ring-finger:before { + content: "\ee96"; +} + +.ti-hand-rock:before { + content: "\ee97"; +} + +.ti-hand-stop:before { + content: "\ec2e"; +} + +.ti-hand-three-fingers:before { + content: "\ee98"; +} + +.ti-hand-two-fingers:before { + content: "\ee99"; +} + +.ti-hanger:before { + content: "\ee9a"; +} + +.ti-hanger-2:before { + content: "\f09c"; +} + +.ti-hanger-off:before { + content: "\f13e"; +} + +.ti-hash:before { + content: "\eabc"; +} + +.ti-haze:before { + content: "\efaa"; +} + +.ti-heading:before { + content: "\ee9b"; +} + +.ti-heading-off:before { + content: "\f13f"; +} + +.ti-headphones:before { + content: "\eabd"; +} + +.ti-headphones-off:before { + content: "\ed1d"; +} + +.ti-headset:before { + content: "\eb90"; +} + +.ti-headset-off:before { + content: "\f3f6"; +} + +.ti-health-recognition:before { + content: "\f1fb"; +} + +.ti-heart:before { + content: "\eabe"; +} + +.ti-heart-broken:before { + content: "\ecba"; +} + +.ti-heart-handshake:before { + content: "\f0f3"; +} + +.ti-heart-minus:before { + content: "\f140"; +} + +.ti-heart-off:before { + content: "\f141"; +} + +.ti-heart-plus:before { + content: "\f142"; +} + +.ti-heart-rate-monitor:before { + content: "\ef61"; +} + +.ti-heartbeat:before { + content: "\ef92"; +} + +.ti-hearts:before { + content: "\f387"; +} + +.ti-hearts-off:before { + content: "\f3f7"; +} + +.ti-helicopter:before { + content: "\ed8e"; +} + +.ti-helicopter-landing:before { + content: "\ed8d"; +} + +.ti-helmet:before { + content: "\efca"; +} + +.ti-helmet-off:before { + content: "\f143"; +} + +.ti-help:before { + content: "\eabf"; +} + +.ti-help-off:before { + content: "\f3f8"; +} + +.ti-hexagon:before { + content: "\ec02"; +} + +.ti-hexagon-3d:before { + content: "\f4c7"; +} + +.ti-hexagon-letter-a:before { + content: "\f463"; +} + +.ti-hexagon-letter-b:before { + content: "\f464"; +} + +.ti-hexagon-letter-c:before { + content: "\f465"; +} + +.ti-hexagon-letter-d:before { + content: "\f466"; +} + +.ti-hexagon-letter-e:before { + content: "\f467"; +} + +.ti-hexagon-letter-f:before { + content: "\f468"; +} + +.ti-hexagon-letter-g:before { + content: "\f469"; +} + +.ti-hexagon-letter-h:before { + content: "\f46a"; +} + +.ti-hexagon-letter-i:before { + content: "\f46b"; +} + +.ti-hexagon-letter-j:before { + content: "\f46c"; +} + +.ti-hexagon-letter-k:before { + content: "\f46d"; +} + +.ti-hexagon-letter-l:before { + content: "\f46e"; +} + +.ti-hexagon-letter-m:before { + content: "\f46f"; +} + +.ti-hexagon-letter-n:before { + content: "\f470"; +} + +.ti-hexagon-letter-o:before { + content: "\f471"; +} + +.ti-hexagon-letter-p:before { + content: "\f472"; +} + +.ti-hexagon-letter-q:before { + content: "\f473"; +} + +.ti-hexagon-letter-r:before { + content: "\f474"; +} + +.ti-hexagon-letter-s:before { + content: "\f475"; +} + +.ti-hexagon-letter-t:before { + content: "\f476"; +} + +.ti-hexagon-letter-u:before { + content: "\f477"; +} + +.ti-hexagon-letter-v:before { + content: "\f4b3"; +} + +.ti-hexagon-letter-w:before { + content: "\f478"; +} + +.ti-hexagon-letter-x:before { + content: "\f479"; +} + +.ti-hexagon-letter-y:before { + content: "\f47a"; +} + +.ti-hexagon-letter-z:before { + content: "\f47b"; +} + +.ti-hexagon-number-0:before { + content: "\f459"; +} + +.ti-hexagon-number-1:before { + content: "\f45a"; +} + +.ti-hexagon-number-2:before { + content: "\f45b"; +} + +.ti-hexagon-number-3:before { + content: "\f45c"; +} + +.ti-hexagon-number-4:before { + content: "\f45d"; +} + +.ti-hexagon-number-5:before { + content: "\f45e"; +} + +.ti-hexagon-number-6:before { + content: "\f45f"; +} + +.ti-hexagon-number-7:before { + content: "\f460"; +} + +.ti-hexagon-number-8:before { + content: "\f461"; +} + +.ti-hexagon-number-9:before { + content: "\f462"; +} + +.ti-hexagon-off:before { + content: "\ee9c"; +} + +.ti-hexagons:before { + content: "\f09d"; +} + +.ti-hexagons-off:before { + content: "\f3f9"; +} + +.ti-hierarchy:before { + content: "\ee9e"; +} + +.ti-hierarchy-2:before { + content: "\ee9d"; +} + +.ti-hierarchy-3:before { + content: "\f289"; +} + +.ti-hierarchy-off:before { + content: "\f3fa"; +} + +.ti-highlight:before { + content: "\ef3f"; +} + +.ti-highlight-off:before { + content: "\f144"; +} + +.ti-history:before { + content: "\ebea"; +} + +.ti-history-off:before { + content: "\f3fb"; +} + +.ti-history-toggle:before { + content: "\f1fc"; +} + +.ti-home:before { + content: "\eac1"; +} + +.ti-home-2:before { + content: "\eac0"; +} + +.ti-home-bolt:before { + content: "\f336"; +} + +.ti-home-cancel:before { + content: "\f350"; +} + +.ti-home-check:before { + content: "\f337"; +} + +.ti-home-cog:before { + content: "\f338"; +} + +.ti-home-dollar:before { + content: "\f339"; +} + +.ti-home-dot:before { + content: "\f33a"; +} + +.ti-home-down:before { + content: "\f33b"; +} + +.ti-home-eco:before { + content: "\f351"; +} + +.ti-home-edit:before { + content: "\f352"; +} + +.ti-home-exclamation:before { + content: "\f33c"; +} + +.ti-home-hand:before { + content: "\f504"; +} + +.ti-home-heart:before { + content: "\f353"; +} + +.ti-home-infinity:before { + content: "\f505"; +} + +.ti-home-link:before { + content: "\f354"; +} + +.ti-home-minus:before { + content: "\f33d"; +} + +.ti-home-move:before { + content: "\f33e"; +} + +.ti-home-off:before { + content: "\f145"; +} + +.ti-home-plus:before { + content: "\f33f"; +} + +.ti-home-question:before { + content: "\f340"; +} + +.ti-home-ribbon:before { + content: "\f355"; +} + +.ti-home-search:before { + content: "\f341"; +} + +.ti-home-share:before { + content: "\f342"; +} + +.ti-home-shield:before { + content: "\f343"; +} + +.ti-home-signal:before { + content: "\f356"; +} + +.ti-home-star:before { + content: "\f344"; +} + +.ti-home-stats:before { + content: "\f345"; +} + +.ti-home-up:before { + content: "\f346"; +} + +.ti-home-x:before { + content: "\f347"; +} + +.ti-horse-toy:before { + content: "\f28a"; +} + +.ti-hotel-service:before { + content: "\ef80"; +} + +.ti-hourglass:before { + content: "\ef93"; +} + +.ti-hourglass-empty:before { + content: "\f146"; +} + +.ti-hourglass-high:before { + content: "\f092"; +} + +.ti-hourglass-low:before { + content: "\f093"; +} + +.ti-hourglass-off:before { + content: "\f147"; +} + +.ti-ice-cream:before { + content: "\eac2"; +} + +.ti-ice-cream-2:before { + content: "\ee9f"; +} + +.ti-ice-cream-off:before { + content: "\f148"; +} + +.ti-ice-skating:before { + content: "\efcb"; +} + +.ti-icons:before { + content: "\f1d4"; +} + +.ti-icons-off:before { + content: "\f3fc"; +} + +.ti-id:before { + content: "\eac3"; +} + +.ti-id-badge:before { + content: "\eff7"; +} + +.ti-id-badge-2:before { + content: "\f076"; +} + +.ti-id-badge-off:before { + content: "\f3fd"; +} + +.ti-id-off:before { + content: "\f149"; +} + +.ti-inbox:before { + content: "\eac4"; +} + +.ti-inbox-off:before { + content: "\f14a"; +} + +.ti-indent-decrease:before { + content: "\eb91"; +} + +.ti-indent-increase:before { + content: "\eb92"; +} + +.ti-infinity:before { + content: "\eb69"; +} + +.ti-infinity-off:before { + content: "\f3fe"; +} + +.ti-info-circle:before { + content: "\eac5"; +} + +.ti-info-square:before { + content: "\eac6"; +} + +.ti-inner-shadow-bottom:before { + content: "\f520"; +} + +.ti-inner-shadow-bottom-left:before { + content: "\f51e"; +} + +.ti-inner-shadow-bottom-right:before { + content: "\f51f"; +} + +.ti-inner-shadow-left:before { + content: "\f521"; +} + +.ti-inner-shadow-right:before { + content: "\f522"; +} + +.ti-inner-shadow-top:before { + content: "\f525"; +} + +.ti-inner-shadow-top-left:before { + content: "\f523"; +} + +.ti-inner-shadow-top-right:before { + content: "\f524"; +} + +.ti-input-search:before { + content: "\f2a2"; +} + +.ti-ironing-1:before { + content: "\f2f4"; +} + +.ti-ironing-2:before { + content: "\f2f5"; +} + +.ti-ironing-3:before { + content: "\f2f6"; +} + +.ti-ironing-off:before { + content: "\f2f7"; +} + +.ti-ironing-steam:before { + content: "\f2f9"; +} + +.ti-ironing-steam-off:before { + content: "\f2f8"; +} + +.ti-italic:before { + content: "\eb93"; +} + +.ti-jetpack:before { + content: "\f581"; +} + +.ti-jewish-star:before { + content: "\f3ff"; +} + +.ti-jpg:before { + content: "\f3ac"; +} + +.ti-jump-rope:before { + content: "\ed8f"; +} + +.ti-karate:before { + content: "\ed32"; +} + +.ti-kayak:before { + content: "\f1d6"; +} + +.ti-kering:before { + content: "\efb8"; +} + +.ti-key:before { + content: "\eac7"; +} + +.ti-key-off:before { + content: "\f14b"; +} + +.ti-keyboard:before { + content: "\ebd6"; +} + +.ti-keyboard-hide:before { + content: "\ec7e"; +} + +.ti-keyboard-off:before { + content: "\eea0"; +} + +.ti-keyboard-show:before { + content: "\ec7f"; +} + +.ti-keyframe:before { + content: "\f576"; +} + +.ti-keyframe-align-center:before { + content: "\f582"; +} + +.ti-keyframe-align-horizontal:before { + content: "\f583"; +} + +.ti-keyframe-align-vertical:before { + content: "\f584"; +} + +.ti-keyframes:before { + content: "\f585"; +} + +.ti-ladder:before { + content: "\efe2"; +} + +.ti-ladder-off:before { + content: "\f14c"; +} + +.ti-lambda:before { + content: "\f541"; +} + +.ti-lamp:before { + content: "\efab"; +} + +.ti-lamp-2:before { + content: "\f09e"; +} + +.ti-lamp-off:before { + content: "\f14d"; +} + +.ti-language:before { + content: "\ebbe"; +} + +.ti-language-hiragana:before { + content: "\ef77"; +} + +.ti-language-katakana:before { + content: "\ef78"; +} + +.ti-language-off:before { + content: "\f14e"; +} + +.ti-lasso:before { + content: "\efac"; +} + +.ti-lasso-off:before { + content: "\f14f"; +} + +.ti-lasso-polygon:before { + content: "\f388"; +} + +.ti-layers-difference:before { + content: "\eac8"; +} + +.ti-layers-intersect:before { + content: "\eac9"; +} + +.ti-layers-intersect-2:before { + content: "\eff8"; +} + +.ti-layers-linked:before { + content: "\eea1"; +} + +.ti-layers-off:before { + content: "\f150"; +} + +.ti-layers-subtract:before { + content: "\eaca"; +} + +.ti-layers-union:before { + content: "\eacb"; +} + +.ti-layout:before { + content: "\eadb"; +} + +.ti-layout-2:before { + content: "\eacc"; +} + +.ti-layout-align-bottom:before { + content: "\eacd"; +} + +.ti-layout-align-center:before { + content: "\eace"; +} + +.ti-layout-align-left:before { + content: "\eacf"; +} + +.ti-layout-align-middle:before { + content: "\ead0"; +} + +.ti-layout-align-right:before { + content: "\ead1"; +} + +.ti-layout-align-top:before { + content: "\ead2"; +} + +.ti-layout-board:before { + content: "\ef95"; +} + +.ti-layout-board-split:before { + content: "\ef94"; +} + +.ti-layout-bottombar:before { + content: "\ead3"; +} + +.ti-layout-bottombar-collapse:before { + content: "\f28b"; +} + +.ti-layout-bottombar-expand:before { + content: "\f28c"; +} + +.ti-layout-cards:before { + content: "\ec13"; +} + +.ti-layout-collage:before { + content: "\f389"; +} + +.ti-layout-columns:before { + content: "\ead4"; +} + +.ti-layout-dashboard:before { + content: "\f02c"; +} + +.ti-layout-distribute-horizontal:before { + content: "\ead5"; +} + +.ti-layout-distribute-vertical:before { + content: "\ead6"; +} + +.ti-layout-grid:before { + content: "\edba"; +} + +.ti-layout-grid-add:before { + content: "\edb9"; +} + +.ti-layout-kanban:before { + content: "\ec3f"; +} + +.ti-layout-list:before { + content: "\ec14"; +} + +.ti-layout-navbar:before { + content: "\ead7"; +} + +.ti-layout-navbar-collapse:before { + content: "\f28d"; +} + +.ti-layout-navbar-expand:before { + content: "\f28e"; +} + +.ti-layout-off:before { + content: "\f151"; +} + +.ti-layout-rows:before { + content: "\ead8"; +} + +.ti-layout-sidebar:before { + content: "\eada"; +} + +.ti-layout-sidebar-left-collapse:before { + content: "\f004"; +} + +.ti-layout-sidebar-left-expand:before { + content: "\f005"; +} + +.ti-layout-sidebar-right:before { + content: "\ead9"; +} + +.ti-layout-sidebar-right-collapse:before { + content: "\f006"; +} + +.ti-layout-sidebar-right-expand:before { + content: "\f007"; +} + +.ti-leaf:before { + content: "\ed4f"; +} + +.ti-leaf-off:before { + content: "\f400"; +} + +.ti-lego:before { + content: "\eadc"; +} + +.ti-lego-off:before { + content: "\f401"; +} + +.ti-lemon:before { + content: "\ef10"; +} + +.ti-lemon-2:before { + content: "\ef81"; +} + +.ti-letter-a:before { + content: "\ec50"; +} + +.ti-letter-b:before { + content: "\ec51"; +} + +.ti-letter-c:before { + content: "\ec52"; +} + +.ti-letter-case:before { + content: "\eea5"; +} + +.ti-letter-case-lower:before { + content: "\eea2"; +} + +.ti-letter-case-toggle:before { + content: "\eea3"; +} + +.ti-letter-case-upper:before { + content: "\eea4"; +} + +.ti-letter-d:before { + content: "\ec53"; +} + +.ti-letter-e:before { + content: "\ec54"; +} + +.ti-letter-f:before { + content: "\ec55"; +} + +.ti-letter-g:before { + content: "\ec56"; +} + +.ti-letter-h:before { + content: "\ec57"; +} + +.ti-letter-i:before { + content: "\ec58"; +} + +.ti-letter-j:before { + content: "\ec59"; +} + +.ti-letter-k:before { + content: "\ec5a"; +} + +.ti-letter-l:before { + content: "\ec5b"; +} + +.ti-letter-m:before { + content: "\ec5c"; +} + +.ti-letter-n:before { + content: "\ec5d"; +} + +.ti-letter-o:before { + content: "\ec5e"; +} + +.ti-letter-p:before { + content: "\ec5f"; +} + +.ti-letter-q:before { + content: "\ec60"; +} + +.ti-letter-r:before { + content: "\ec61"; +} + +.ti-letter-s:before { + content: "\ec62"; +} + +.ti-letter-spacing:before { + content: "\eea6"; +} + +.ti-letter-t:before { + content: "\ec63"; +} + +.ti-letter-u:before { + content: "\ec64"; +} + +.ti-letter-v:before { + content: "\ec65"; +} + +.ti-letter-w:before { + content: "\ec66"; +} + +.ti-letter-x:before { + content: "\ec67"; +} + +.ti-letter-y:before { + content: "\ec68"; +} + +.ti-letter-z:before { + content: "\ec69"; +} + +.ti-license:before { + content: "\ebc0"; +} + +.ti-license-off:before { + content: "\f153"; +} + +.ti-lifebuoy:before { + content: "\eadd"; +} + +.ti-lifebuoy-off:before { + content: "\f154"; +} + +.ti-line:before { + content: "\ec40"; +} + +.ti-line-dashed:before { + content: "\eea7"; +} + +.ti-line-dotted:before { + content: "\eea8"; +} + +.ti-line-height:before { + content: "\eb94"; +} + +.ti-link:before { + content: "\eade"; +} + +.ti-link-off:before { + content: "\f402"; +} + +.ti-list:before { + content: "\eb6b"; +} + +.ti-list-check:before { + content: "\eb6a"; +} + +.ti-list-details:before { + content: "\ef40"; +} + +.ti-list-numbers:before { + content: "\ef11"; +} + +.ti-list-search:before { + content: "\eea9"; +} + +.ti-live-photo:before { + content: "\eadf"; +} + +.ti-live-photo-off:before { + content: "\f403"; +} + +.ti-live-view:before { + content: "\ec6b"; +} + +.ti-loader:before { + content: "\eca3"; +} + +.ti-loader-2:before { + content: "\f226"; +} + +.ti-loader-3:before { + content: "\f513"; +} + +.ti-loader-quarter:before { + content: "\eca2"; +} + +.ti-location:before { + content: "\eae0"; +} + +.ti-location-broken:before { + content: "\f2c4"; +} + +.ti-location-off:before { + content: "\f155"; +} + +.ti-lock:before { + content: "\eae2"; +} + +.ti-lock-access:before { + content: "\eeaa"; +} + +.ti-lock-access-off:before { + content: "\f404"; +} + +.ti-lock-off:before { + content: "\ed1e"; +} + +.ti-lock-open:before { + content: "\eae1"; +} + +.ti-lock-open-off:before { + content: "\f156"; +} + +.ti-lock-square:before { + content: "\ef51"; +} + +.ti-logic-and:before { + content: "\f240"; +} + +.ti-logic-buffer:before { + content: "\f241"; +} + +.ti-logic-nand:before { + content: "\f242"; +} + +.ti-logic-nor:before { + content: "\f243"; +} + +.ti-logic-not:before { + content: "\f244"; +} + +.ti-logic-or:before { + content: "\f245"; +} + +.ti-logic-xnor:before { + content: "\f246"; +} + +.ti-logic-xor:before { + content: "\f247"; +} + +.ti-login:before { + content: "\eba7"; +} + +.ti-logout:before { + content: "\eba8"; +} + +.ti-lollipop:before { + content: "\efcc"; +} + +.ti-lollipop-off:before { + content: "\f157"; +} + +.ti-luggage:before { + content: "\efad"; +} + +.ti-luggage-off:before { + content: "\f158"; +} + +.ti-lungs:before { + content: "\ef62"; +} + +.ti-lungs-off:before { + content: "\f405"; +} + +.ti-macro:before { + content: "\eeab"; +} + +.ti-macro-off:before { + content: "\f406"; +} + +.ti-magnet:before { + content: "\eae3"; +} + +.ti-magnet-off:before { + content: "\f159"; +} + +.ti-mail:before { + content: "\eae5"; +} + +.ti-mail-fast:before { + content: "\f069"; +} + +.ti-mail-forward:before { + content: "\eeac"; +} + +.ti-mail-off:before { + content: "\f15a"; +} + +.ti-mail-opened:before { + content: "\eae4"; +} + +.ti-mailbox:before { + content: "\eead"; +} + +.ti-mailbox-off:before { + content: "\f15b"; +} + +.ti-man:before { + content: "\eae6"; +} + +.ti-manual-gearbox:before { + content: "\ed7b"; +} + +.ti-map:before { + content: "\eae9"; +} + +.ti-map-2:before { + content: "\eae7"; +} + +.ti-map-off:before { + content: "\f15c"; +} + +.ti-map-pin:before { + content: "\eae8"; +} + +.ti-map-pin-off:before { + content: "\ecf3"; +} + +.ti-map-pins:before { + content: "\ed5e"; +} + +.ti-map-search:before { + content: "\ef82"; +} + +.ti-markdown:before { + content: "\ec41"; +} + +.ti-markdown-off:before { + content: "\f407"; +} + +.ti-marquee:before { + content: "\ec77"; +} + +.ti-marquee-2:before { + content: "\eeae"; +} + +.ti-marquee-off:before { + content: "\f15d"; +} + +.ti-mars:before { + content: "\ec80"; +} + +.ti-mask:before { + content: "\eeb0"; +} + +.ti-mask-off:before { + content: "\eeaf"; +} + +.ti-masks-theater:before { + content: "\f263"; +} + +.ti-masks-theater-off:before { + content: "\f408"; +} + +.ti-massage:before { + content: "\eeb1"; +} + +.ti-matchstick:before { + content: "\f577"; +} + +.ti-math:before { + content: "\ebeb"; +} + +.ti-math-1-divide-2:before { + content: "\f4e2"; +} + +.ti-math-1-divide-3:before { + content: "\f4e3"; +} + +.ti-math-avg:before { + content: "\f0f4"; +} + +.ti-math-equal-greater:before { + content: "\f4e4"; +} + +.ti-math-equal-lower:before { + content: "\f4e5"; +} + +.ti-math-function:before { + content: "\eeb2"; +} + +.ti-math-function-off:before { + content: "\f15e"; +} + +.ti-math-function-y:before { + content: "\f4e6"; +} + +.ti-math-greater:before { + content: "\f4e7"; +} + +.ti-math-integral:before { + content: "\f4e9"; +} + +.ti-math-integral-x:before { + content: "\f4e8"; +} + +.ti-math-integrals:before { + content: "\f4ea"; +} + +.ti-math-lower:before { + content: "\f4eb"; +} + +.ti-math-max:before { + content: "\f0f5"; +} + +.ti-math-min:before { + content: "\f0f6"; +} + +.ti-math-not:before { + content: "\f4ec"; +} + +.ti-math-off:before { + content: "\f409"; +} + +.ti-math-pi:before { + content: "\f4ee"; +} + +.ti-math-pi-divide-2:before { + content: "\f4ed"; +} + +.ti-math-symbols:before { + content: "\eeb3"; +} + +.ti-math-x-divide-2:before { + content: "\f4ef"; +} + +.ti-math-x-divide-y:before { + content: "\f4f1"; +} + +.ti-math-x-divide-y-2:before { + content: "\f4f0"; +} + +.ti-math-x-minus-x:before { + content: "\f4f2"; +} + +.ti-math-x-minus-y:before { + content: "\f4f3"; +} + +.ti-math-x-plus-x:before { + content: "\f4f4"; +} + +.ti-math-x-plus-y:before { + content: "\f4f5"; +} + +.ti-math-xy:before { + content: "\f4f6"; +} + +.ti-math-y-minus-y:before { + content: "\f4f7"; +} + +.ti-math-y-plus-y:before { + content: "\f4f8"; +} + +.ti-maximize:before { + content: "\eaea"; +} + +.ti-maximize-off:before { + content: "\f15f"; +} + +.ti-meat:before { + content: "\ef12"; +} + +.ti-meat-off:before { + content: "\f40a"; +} + +.ti-medal:before { + content: "\ec78"; +} + +.ti-medal-2:before { + content: "\efcd"; +} + +.ti-medical-cross:before { + content: "\ec2f"; +} + +.ti-medical-cross-off:before { + content: "\f160"; +} + +.ti-medicine-syrup:before { + content: "\ef63"; +} + +.ti-meeple:before { + content: "\f514"; +} + +.ti-menorah:before { + content: "\f58c"; +} + +.ti-menu:before { + content: "\eaeb"; +} + +.ti-menu-2:before { + content: "\ec42"; +} + +.ti-message:before { + content: "\eaef"; +} + +.ti-message-2:before { + content: "\eaec"; +} + +.ti-message-2-code:before { + content: "\f012"; +} + +.ti-message-2-off:before { + content: "\f40b"; +} + +.ti-message-2-share:before { + content: "\f077"; +} + +.ti-message-chatbot:before { + content: "\f38a"; +} + +.ti-message-circle:before { + content: "\eaed"; +} + +.ti-message-circle-2:before { + content: "\ed3f"; +} + +.ti-message-circle-off:before { + content: "\ed40"; +} + +.ti-message-code:before { + content: "\f013"; +} + +.ti-message-dots:before { + content: "\eaee"; +} + +.ti-message-forward:before { + content: "\f28f"; +} + +.ti-message-language:before { + content: "\efae"; +} + +.ti-message-off:before { + content: "\ed41"; +} + +.ti-message-plus:before { + content: "\ec9a"; +} + +.ti-message-report:before { + content: "\ec9b"; +} + +.ti-message-share:before { + content: "\f078"; +} + +.ti-messages:before { + content: "\eb6c"; +} + +.ti-messages-off:before { + content: "\ed42"; +} + +.ti-meteor:before { + content: "\f1fd"; +} + +.ti-meteor-off:before { + content: "\f40c"; +} + +.ti-mickey:before { + content: "\f2a3"; +} + +.ti-microphone:before { + content: "\eaf0"; +} + +.ti-microphone-2:before { + content: "\ef2c"; +} + +.ti-microphone-2-off:before { + content: "\f40d"; +} + +.ti-microphone-off:before { + content: "\ed16"; +} + +.ti-microscope:before { + content: "\ef64"; +} + +.ti-microscope-off:before { + content: "\f40e"; +} + +.ti-microwave:before { + content: "\f248"; +} + +.ti-microwave-off:before { + content: "\f264"; +} + +.ti-military-award:before { + content: "\f079"; +} + +.ti-military-rank:before { + content: "\efcf"; +} + +.ti-milk:before { + content: "\ef13"; +} + +.ti-milk-off:before { + content: "\f40f"; +} + +.ti-milkshake:before { + content: "\f4c8"; +} + +.ti-minimize:before { + content: "\eaf1"; +} + +.ti-minus:before { + content: "\eaf2"; +} + +.ti-minus-vertical:before { + content: "\eeb4"; +} + +.ti-mist:before { + content: "\ec30"; +} + +.ti-mist-off:before { + content: "\f410"; +} + +.ti-moneybag:before { + content: "\f506"; +} + +.ti-mood-angry:before { + content: "\f2de"; +} + +.ti-mood-annoyed:before { + content: "\f2e0"; +} + +.ti-mood-annoyed-2:before { + content: "\f2df"; +} + +.ti-mood-boy:before { + content: "\ed2d"; +} + +.ti-mood-confuzed:before { + content: "\eaf3"; +} + +.ti-mood-crazy-happy:before { + content: "\ed90"; +} + +.ti-mood-cry:before { + content: "\ecbb"; +} + +.ti-mood-empty:before { + content: "\eeb5"; +} + +.ti-mood-happy:before { + content: "\eaf4"; +} + +.ti-mood-kid:before { + content: "\ec03"; +} + +.ti-mood-look-left:before { + content: "\f2c5"; +} + +.ti-mood-look-right:before { + content: "\f2c6"; +} + +.ti-mood-nerd:before { + content: "\f2e1"; +} + +.ti-mood-nervous:before { + content: "\ef96"; +} + +.ti-mood-neutral:before { + content: "\eaf5"; +} + +.ti-mood-off:before { + content: "\f161"; +} + +.ti-mood-sad:before { + content: "\eaf6"; +} + +.ti-mood-sad-2:before { + content: "\f2e2"; +} + +.ti-mood-sad-dizzy:before { + content: "\f2e3"; +} + +.ti-mood-sad-squint:before { + content: "\f2e4"; +} + +.ti-mood-sick:before { + content: "\f2e5"; +} + +.ti-mood-silence:before { + content: "\f2e6"; +} + +.ti-mood-sing:before { + content: "\f2c7"; +} + +.ti-mood-smile:before { + content: "\eaf7"; +} + +.ti-mood-smile-beam:before { + content: "\f2e7"; +} + +.ti-mood-smile-dizzy:before { + content: "\f2e8"; +} + +.ti-mood-suprised:before { + content: "\ec04"; +} + +.ti-mood-tongue:before { + content: "\eb95"; +} + +.ti-mood-tongue-wink:before { + content: "\f2ea"; +} + +.ti-mood-tongue-wink-2:before { + content: "\f2e9"; +} + +.ti-mood-unamused:before { + content: "\f2eb"; +} + +.ti-mood-wink:before { + content: "\f2ed"; +} + +.ti-mood-wink-2:before { + content: "\f2ec"; +} + +.ti-mood-wrrr:before { + content: "\f2ee"; +} + +.ti-mood-xd:before { + content: "\f2ef"; +} + +.ti-moon:before { + content: "\eaf8"; +} + +.ti-moon-2:before { + content: "\ece6"; +} + +.ti-moon-off:before { + content: "\f162"; +} + +.ti-moon-stars:before { + content: "\ece7"; +} + +.ti-moped:before { + content: "\ecbc"; +} + +.ti-motorbike:before { + content: "\eeb6"; +} + +.ti-mountain:before { + content: "\ef97"; +} + +.ti-mountain-off:before { + content: "\f411"; +} + +.ti-mouse:before { + content: "\eaf9"; +} + +.ti-mouse-2:before { + content: "\f1d7"; +} + +.ti-mouse-off:before { + content: "\f163"; +} + +.ti-moustache:before { + content: "\f4c9"; +} + +.ti-movie:before { + content: "\eafa"; +} + +.ti-movie-off:before { + content: "\f164"; +} + +.ti-mug:before { + content: "\eafb"; +} + +.ti-mug-off:before { + content: "\f165"; +} + +.ti-multiplier-0-5x:before { + content: "\ef41"; +} + +.ti-multiplier-1-5x:before { + content: "\ef42"; +} + +.ti-multiplier-1x:before { + content: "\ef43"; +} + +.ti-multiplier-2x:before { + content: "\ef44"; +} + +.ti-mushroom:before { + content: "\ef14"; +} + +.ti-mushroom-off:before { + content: "\f412"; +} + +.ti-music:before { + content: "\eafc"; +} + +.ti-music-off:before { + content: "\f166"; +} + +.ti-navigation:before { + content: "\f2c8"; +} + +.ti-navigation-off:before { + content: "\f413"; +} + +.ti-needle:before { + content: "\f508"; +} + +.ti-needle-thread:before { + content: "\f507"; +} + +.ti-network:before { + content: "\f09f"; +} + +.ti-network-off:before { + content: "\f414"; +} + +.ti-new-section:before { + content: "\ebc1"; +} + +.ti-news:before { + content: "\eafd"; +} + +.ti-news-off:before { + content: "\f167"; +} + +.ti-nfc:before { + content: "\eeb7"; +} + +.ti-nfc-off:before { + content: "\f168"; +} + +.ti-no-copyright:before { + content: "\efb9"; +} + +.ti-no-creative-commons:before { + content: "\efba"; +} + +.ti-no-derivatives:before { + content: "\efbb"; +} + +.ti-north-star:before { + content: "\f014"; +} + +.ti-note:before { + content: "\eb6d"; +} + +.ti-note-off:before { + content: "\f169"; +} + +.ti-notebook:before { + content: "\eb96"; +} + +.ti-notebook-off:before { + content: "\f415"; +} + +.ti-notes:before { + content: "\eb6e"; +} + +.ti-notes-off:before { + content: "\f16a"; +} + +.ti-notification:before { + content: "\eafe"; +} + +.ti-notification-off:before { + content: "\f16b"; +} + +.ti-number:before { + content: "\f1fe"; +} + +.ti-number-0:before { + content: "\edf0"; +} + +.ti-number-1:before { + content: "\edf1"; +} + +.ti-number-2:before { + content: "\edf2"; +} + +.ti-number-3:before { + content: "\edf3"; +} + +.ti-number-4:before { + content: "\edf4"; +} + +.ti-number-5:before { + content: "\edf5"; +} + +.ti-number-6:before { + content: "\edf6"; +} + +.ti-number-7:before { + content: "\edf7"; +} + +.ti-number-8:before { + content: "\edf8"; +} + +.ti-number-9:before { + content: "\edf9"; +} + +.ti-numbers:before { + content: "\f015"; +} + +.ti-nurse:before { + content: "\ef65"; +} + +.ti-octagon:before { + content: "\ecbd"; +} + +.ti-octagon-off:before { + content: "\eeb8"; +} + +.ti-old:before { + content: "\eeb9"; +} + +.ti-olympics:before { + content: "\eeba"; +} + +.ti-olympics-off:before { + content: "\f416"; +} + +.ti-om:before { + content: "\f58d"; +} + +.ti-omega:before { + content: "\eb97"; +} + +.ti-outbound:before { + content: "\f249"; +} + +.ti-outlet:before { + content: "\ebd7"; +} + +.ti-oval:before { + content: "\f02e"; +} + +.ti-oval-vertical:before { + content: "\f02d"; +} + +.ti-overline:before { + content: "\eebb"; +} + +.ti-package:before { + content: "\eaff"; +} + +.ti-package-off:before { + content: "\f16c"; +} + +.ti-packages:before { + content: "\f2c9"; +} + +.ti-packge-export:before { + content: "\f07a"; +} + +.ti-packge-import:before { + content: "\f07b"; +} + +.ti-pacman:before { + content: "\eebc"; +} + +.ti-page-break:before { + content: "\ec81"; +} + +.ti-paint:before { + content: "\eb00"; +} + +.ti-paint-off:before { + content: "\f16d"; +} + +.ti-palette:before { + content: "\eb01"; +} + +.ti-palette-off:before { + content: "\f16e"; +} + +.ti-panorama-horizontal:before { + content: "\ed33"; +} + +.ti-panorama-horizontal-off:before { + content: "\f417"; +} + +.ti-panorama-vertical:before { + content: "\ed34"; +} + +.ti-panorama-vertical-off:before { + content: "\f418"; +} + +.ti-paper-bag:before { + content: "\f02f"; +} + +.ti-paper-bag-off:before { + content: "\f16f"; +} + +.ti-paperclip:before { + content: "\eb02"; +} + +.ti-parachute:before { + content: "\ed7c"; +} + +.ti-parachute-off:before { + content: "\f170"; +} + +.ti-parentheses:before { + content: "\ebd8"; +} + +.ti-parentheses-off:before { + content: "\f171"; +} + +.ti-parking:before { + content: "\eb03"; +} + +.ti-parking-off:before { + content: "\f172"; +} + +.ti-password:before { + content: "\f4ca"; +} + +.ti-paw:before { + content: "\eff9"; +} + +.ti-paw-off:before { + content: "\f419"; +} + +.ti-peace:before { + content: "\ecbe"; +} + +.ti-pencil:before { + content: "\eb04"; +} + +.ti-pencil-minus:before { + content: "\f1eb"; +} + +.ti-pencil-off:before { + content: "\f173"; +} + +.ti-pencil-plus:before { + content: "\f1ec"; +} + +.ti-pennant:before { + content: "\ed7d"; +} + +.ti-pennant-2:before { + content: "\f06a"; +} + +.ti-pennant-off:before { + content: "\f174"; +} + +.ti-pentagon:before { + content: "\efe3"; +} + +.ti-pentagon-off:before { + content: "\f41a"; +} + +.ti-pentagram:before { + content: "\f586"; +} + +.ti-pepper:before { + content: "\ef15"; +} + +.ti-pepper-off:before { + content: "\f175"; +} + +.ti-percentage:before { + content: "\ecf4"; +} + +.ti-perfume:before { + content: "\f509"; +} + +.ti-perspective:before { + content: "\eebd"; +} + +.ti-perspective-off:before { + content: "\f176"; +} + +.ti-phone:before { + content: "\eb09"; +} + +.ti-phone-call:before { + content: "\eb05"; +} + +.ti-phone-calling:before { + content: "\ec43"; +} + +.ti-phone-check:before { + content: "\ec05"; +} + +.ti-phone-incoming:before { + content: "\eb06"; +} + +.ti-phone-off:before { + content: "\ecf5"; +} + +.ti-phone-outgoing:before { + content: "\eb07"; +} + +.ti-phone-pause:before { + content: "\eb08"; +} + +.ti-phone-plus:before { + content: "\ec06"; +} + +.ti-phone-x:before { + content: "\ec07"; +} + +.ti-photo:before { + content: "\eb0a"; +} + +.ti-photo-cancel:before { + content: "\f35d"; +} + +.ti-photo-check:before { + content: "\f35e"; +} + +.ti-photo-down:before { + content: "\f35f"; +} + +.ti-photo-edit:before { + content: "\f360"; +} + +.ti-photo-heart:before { + content: "\f361"; +} + +.ti-photo-minus:before { + content: "\f362"; +} + +.ti-photo-off:before { + content: "\ecf6"; +} + +.ti-photo-plus:before { + content: "\f363"; +} + +.ti-photo-search:before { + content: "\f364"; +} + +.ti-photo-shield:before { + content: "\f365"; +} + +.ti-photo-star:before { + content: "\f366"; +} + +.ti-photo-up:before { + content: "\f38b"; +} + +.ti-photo-x:before { + content: "\f367"; +} + +.ti-physotherapist:before { + content: "\eebe"; +} + +.ti-picture-in-picture:before { + content: "\ed35"; +} + +.ti-picture-in-picture-off:before { + content: "\ed43"; +} + +.ti-picture-in-picture-on:before { + content: "\ed44"; +} + +.ti-picture-in-picture-top:before { + content: "\efe4"; +} + +.ti-pig:before { + content: "\ef52"; +} + +.ti-pig-money:before { + content: "\f38c"; +} + +.ti-pig-off:before { + content: "\f177"; +} + +.ti-pill:before { + content: "\ec44"; +} + +.ti-pill-off:before { + content: "\f178"; +} + +.ti-pills:before { + content: "\ef66"; +} + +.ti-pin:before { + content: "\ec9c"; +} + +.ti-ping-pong:before { + content: "\f38d"; +} + +.ti-pinned:before { + content: "\ed60"; +} + +.ti-pinned-off:before { + content: "\ed5f"; +} + +.ti-pizza:before { + content: "\edbb"; +} + +.ti-pizza-off:before { + content: "\f179"; +} + +.ti-plane:before { + content: "\eb6f"; +} + +.ti-plane-arrival:before { + content: "\eb99"; +} + +.ti-plane-departure:before { + content: "\eb9a"; +} + +.ti-plane-inflight:before { + content: "\ef98"; +} + +.ti-plane-off:before { + content: "\f17a"; +} + +.ti-plane-tilt:before { + content: "\f1ed"; +} + +.ti-planet:before { + content: "\ec08"; +} + +.ti-planet-off:before { + content: "\f17b"; +} + +.ti-plant:before { + content: "\ed50"; +} + +.ti-plant-2:before { + content: "\ed7e"; +} + +.ti-plant-2-off:before { + content: "\f17c"; +} + +.ti-plant-off:before { + content: "\f17d"; +} + +.ti-play-card:before { + content: "\eebf"; +} + +.ti-play-card-off:before { + content: "\f17e"; +} + +.ti-player-eject:before { + content: "\efbc"; +} + +.ti-player-pause:before { + content: "\ed45"; +} + +.ti-player-play:before { + content: "\ed46"; +} + +.ti-player-record:before { + content: "\ed47"; +} + +.ti-player-skip-back:before { + content: "\ed48"; +} + +.ti-player-skip-forward:before { + content: "\ed49"; +} + +.ti-player-stop:before { + content: "\ed4a"; +} + +.ti-player-track-next:before { + content: "\ed4b"; +} + +.ti-player-track-prev:before { + content: "\ed4c"; +} + +.ti-playlist:before { + content: "\eec0"; +} + +.ti-playlist-add:before { + content: "\f008"; +} + +.ti-playlist-off:before { + content: "\f17f"; +} + +.ti-playlist-x:before { + content: "\f009"; +} + +.ti-playstation-circle:before { + content: "\f2ad"; +} + +.ti-playstation-square:before { + content: "\f2ae"; +} + +.ti-playstation-triangle:before { + content: "\f2af"; +} + +.ti-playstation-x:before { + content: "\f2b0"; +} + +.ti-plug:before { + content: "\ebd9"; +} + +.ti-plug-connected:before { + content: "\f00a"; +} + +.ti-plug-connected-x:before { + content: "\f0a0"; +} + +.ti-plug-off:before { + content: "\f180"; +} + +.ti-plug-x:before { + content: "\f0a1"; +} + +.ti-plus:before { + content: "\eb0b"; +} + +.ti-png:before { + content: "\f3ad"; +} + +.ti-podium:before { + content: "\f1d8"; +} + +.ti-podium-off:before { + content: "\f41b"; +} + +.ti-point:before { + content: "\eb0c"; +} + +.ti-point-off:before { + content: "\f181"; +} + +.ti-pointer:before { + content: "\f265"; +} + +.ti-pokeball:before { + content: "\eec1"; +} + +.ti-pokeball-off:before { + content: "\f41c"; +} + +.ti-poker-chip:before { + content: "\f515"; +} + +.ti-polaroid:before { + content: "\eec2"; +} + +.ti-polygon:before { + content: "\efd0"; +} + +.ti-polygon-off:before { + content: "\f182"; +} + +.ti-poo:before { + content: "\f258"; +} + +.ti-pool:before { + content: "\ed91"; +} + +.ti-pool-off:before { + content: "\f41d"; +} + +.ti-power:before { + content: "\eb0d"; +} + +.ti-pray:before { + content: "\ecbf"; +} + +.ti-premium-rights:before { + content: "\efbd"; +} + +.ti-prescription:before { + content: "\ef99"; +} + +.ti-presentation:before { + content: "\eb70"; +} + +.ti-presentation-analytics:before { + content: "\eec3"; +} + +.ti-presentation-off:before { + content: "\f183"; +} + +.ti-printer:before { + content: "\eb0e"; +} + +.ti-printer-off:before { + content: "\f184"; +} + +.ti-prison:before { + content: "\ef79"; +} + +.ti-prompt:before { + content: "\eb0f"; +} + +.ti-propeller:before { + content: "\eec4"; +} + +.ti-propeller-off:before { + content: "\f185"; +} + +.ti-pumpkin-scary:before { + content: "\f587"; +} + +.ti-puzzle:before { + content: "\eb10"; +} + +.ti-puzzle-2:before { + content: "\ef83"; +} + +.ti-puzzle-off:before { + content: "\f186"; +} + +.ti-pyramid:before { + content: "\eec5"; +} + +.ti-pyramid-off:before { + content: "\f187"; +} + +.ti-qrcode:before { + content: "\eb11"; +} + +.ti-qrcode-off:before { + content: "\f41e"; +} + +.ti-question-mark:before { + content: "\ec9d"; +} + +.ti-quote:before { + content: "\efbe"; +} + +.ti-quote-off:before { + content: "\f188"; +} + +.ti-radar:before { + content: "\f017"; +} + +.ti-radar-2:before { + content: "\f016"; +} + +.ti-radar-off:before { + content: "\f41f"; +} + +.ti-radio:before { + content: "\ef2d"; +} + +.ti-radio-off:before { + content: "\f420"; +} + +.ti-radioactive:before { + content: "\ecc0"; +} + +.ti-radioactive-off:before { + content: "\f189"; +} + +.ti-radius-bottom-left:before { + content: "\eec6"; +} + +.ti-radius-bottom-right:before { + content: "\eec7"; +} + +.ti-radius-top-left:before { + content: "\eec8"; +} + +.ti-radius-top-right:before { + content: "\eec9"; +} + +.ti-rainbow:before { + content: "\edbc"; +} + +.ti-rainbow-off:before { + content: "\f18a"; +} + +.ti-rating-12-plus:before { + content: "\f266"; +} + +.ti-rating-14-plus:before { + content: "\f267"; +} + +.ti-rating-16-plus:before { + content: "\f268"; +} + +.ti-rating-18-plus:before { + content: "\f269"; +} + +.ti-rating-21-plus:before { + content: "\f26a"; +} + +.ti-razor:before { + content: "\f4b5"; +} + +.ti-razor-electric:before { + content: "\f4b4"; +} + +.ti-receipt:before { + content: "\edfd"; +} + +.ti-receipt-2:before { + content: "\edfa"; +} + +.ti-receipt-off:before { + content: "\edfb"; +} + +.ti-receipt-refund:before { + content: "\edfc"; +} + +.ti-receipt-tax:before { + content: "\edbd"; +} + +.ti-recharging:before { + content: "\eeca"; +} + +.ti-record-mail:before { + content: "\eb12"; +} + +.ti-record-mail-off:before { + content: "\f18b"; +} + +.ti-rectangle:before { + content: "\ed37"; +} + +.ti-rectangle-vertical:before { + content: "\ed36"; +} + +.ti-recycle:before { + content: "\eb9b"; +} + +.ti-recycle-off:before { + content: "\f18c"; +} + +.ti-refresh:before { + content: "\eb13"; +} + +.ti-refresh-alert:before { + content: "\ed57"; +} + +.ti-refresh-dot:before { + content: "\efbf"; +} + +.ti-refresh-off:before { + content: "\f18d"; +} + +.ti-regex:before { + content: "\f31f"; +} + +.ti-regex-off:before { + content: "\f421"; +} + +.ti-registered:before { + content: "\eb14"; +} + +.ti-relation-many-to-many:before { + content: "\ed7f"; +} + +.ti-relation-one-to-many:before { + content: "\ed80"; +} + +.ti-relation-one-to-one:before { + content: "\ed81"; +} + +.ti-reload:before { + content: "\f3ae"; +} + +.ti-repeat:before { + content: "\eb72"; +} + +.ti-repeat-off:before { + content: "\f18e"; +} + +.ti-repeat-once:before { + content: "\eb71"; +} + +.ti-replace:before { + content: "\ebc7"; +} + +.ti-replace-off:before { + content: "\f422"; +} + +.ti-report:before { + content: "\eece"; +} + +.ti-report-analytics:before { + content: "\eecb"; +} + +.ti-report-medical:before { + content: "\eecc"; +} + +.ti-report-money:before { + content: "\eecd"; +} + +.ti-report-off:before { + content: "\f18f"; +} + +.ti-report-search:before { + content: "\ef84"; +} + +.ti-resize:before { + content: "\eecf"; +} + +.ti-ribbon-health:before { + content: "\f58e"; +} + +.ti-ripple:before { + content: "\ed82"; +} + +.ti-ripple-off:before { + content: "\f190"; +} + +.ti-road:before { + content: "\f018"; +} + +.ti-road-off:before { + content: "\f191"; +} + +.ti-road-sign:before { + content: "\ecdd"; +} + +.ti-robot:before { + content: "\f00b"; +} + +.ti-robot-off:before { + content: "\f192"; +} + +.ti-rocket:before { + content: "\ec45"; +} + +.ti-rocket-off:before { + content: "\f193"; +} + +.ti-roller-skating:before { + content: "\efd1"; +} + +.ti-rollercoaster:before { + content: "\f0a2"; +} + +.ti-rollercoaster-off:before { + content: "\f423"; +} + +.ti-rosette:before { + content: "\f599"; +} + +.ti-rosette-number-0:before { + content: "\f58f"; +} + +.ti-rosette-number-1:before { + content: "\f590"; +} + +.ti-rosette-number-2:before { + content: "\f591"; +} + +.ti-rosette-number-3:before { + content: "\f592"; +} + +.ti-rosette-number-4:before { + content: "\f593"; +} + +.ti-rosette-number-5:before { + content: "\f594"; +} + +.ti-rosette-number-6:before { + content: "\f595"; +} + +.ti-rosette-number-7:before { + content: "\f596"; +} + +.ti-rosette-number-8:before { + content: "\f597"; +} + +.ti-rosette-number-9:before { + content: "\f598"; +} + +.ti-rotate:before { + content: "\eb16"; +} + +.ti-rotate-2:before { + content: "\ebb4"; +} + +.ti-rotate-360:before { + content: "\ef85"; +} + +.ti-rotate-clockwise:before { + content: "\eb15"; +} + +.ti-rotate-clockwise-2:before { + content: "\ebb5"; +} + +.ti-rotate-dot:before { + content: "\efe5"; +} + +.ti-rotate-rectangle:before { + content: "\ec15"; +} + +.ti-route:before { + content: "\eb17"; +} + +.ti-route-2:before { + content: "\f4b6"; +} + +.ti-route-off:before { + content: "\f194"; +} + +.ti-router:before { + content: "\eb18"; +} + +.ti-router-off:before { + content: "\f424"; +} + +.ti-row-insert-bottom:before { + content: "\eed0"; +} + +.ti-row-insert-top:before { + content: "\eed1"; +} + +.ti-rss:before { + content: "\eb19"; +} + +.ti-rubber-stamp:before { + content: "\f5ab"; +} + +.ti-rubber-stamp-off:before { + content: "\f5aa"; +} + +.ti-ruler:before { + content: "\eb1a"; +} + +.ti-ruler-2:before { + content: "\eed2"; +} + +.ti-ruler-2-off:before { + content: "\f195"; +} + +.ti-ruler-3:before { + content: "\f290"; +} + +.ti-ruler-measure:before { + content: "\f291"; +} + +.ti-ruler-off:before { + content: "\f196"; +} + +.ti-run:before { + content: "\ec82"; +} + +.ti-s-turn-down:before { + content: "\f516"; +} + +.ti-s-turn-left:before { + content: "\f517"; +} + +.ti-s-turn-right:before { + content: "\f518"; +} + +.ti-s-turn-up:before { + content: "\f519"; +} + +.ti-sailboat:before { + content: "\ec83"; +} + +.ti-sailboat-off:before { + content: "\f425"; +} + +.ti-salad:before { + content: "\f50a"; +} + +.ti-salt:before { + content: "\ef16"; +} + +.ti-satellite:before { + content: "\eed3"; +} + +.ti-satellite-off:before { + content: "\f197"; +} + +.ti-sausage:before { + content: "\ef17"; +} + +.ti-scale:before { + content: "\ebc2"; +} + +.ti-scale-off:before { + content: "\f198"; +} + +.ti-scale-outline:before { + content: "\ef53"; +} + +.ti-scale-outline-off:before { + content: "\f199"; +} + +.ti-scan:before { + content: "\ebc8"; +} + +.ti-scan-eye:before { + content: "\f1ff"; +} + +.ti-schema:before { + content: "\f200"; +} + +.ti-schema-off:before { + content: "\f426"; +} + +.ti-school:before { + content: "\ecf7"; +} + +.ti-school-off:before { + content: "\f19a"; +} + +.ti-scissors:before { + content: "\eb1b"; +} + +.ti-scissors-off:before { + content: "\f19b"; +} + +.ti-scooter:before { + content: "\ec6c"; +} + +.ti-scooter-electric:before { + content: "\ecc1"; +} + +.ti-screen-share:before { + content: "\ed18"; +} + +.ti-screen-share-off:before { + content: "\ed17"; +} + +.ti-screenshot:before { + content: "\f201"; +} + +.ti-scribble:before { + content: "\f0a3"; +} + +.ti-scribble-off:before { + content: "\f427"; +} + +.ti-script:before { + content: "\f2da"; +} + +.ti-script-minus:before { + content: "\f2d7"; +} + +.ti-script-plus:before { + content: "\f2d8"; +} + +.ti-script-x:before { + content: "\f2d9"; +} + +.ti-scuba-mask:before { + content: "\eed4"; +} + +.ti-scuba-mask-off:before { + content: "\f428"; +} + +.ti-sdk:before { + content: "\f3af"; +} + +.ti-search:before { + content: "\eb1c"; +} + +.ti-search-off:before { + content: "\f19c"; +} + +.ti-section:before { + content: "\eed5"; +} + +.ti-section-sign:before { + content: "\f019"; +} + +.ti-seeding:before { + content: "\ed51"; +} + +.ti-seeding-off:before { + content: "\f19d"; +} + +.ti-select:before { + content: "\ec9e"; +} + +.ti-selector:before { + content: "\eb1d"; +} + +.ti-send:before { + content: "\eb1e"; +} + +.ti-send-off:before { + content: "\f429"; +} + +.ti-seo:before { + content: "\f26b"; +} + +.ti-separator:before { + content: "\ebda"; +} + +.ti-separator-horizontal:before { + content: "\ec79"; +} + +.ti-separator-vertical:before { + content: "\ec7a"; +} + +.ti-server:before { + content: "\eb1f"; +} + +.ti-server-2:before { + content: "\f07c"; +} + +.ti-server-bolt:before { + content: "\f320"; +} + +.ti-server-cog:before { + content: "\f321"; +} + +.ti-server-off:before { + content: "\f19e"; +} + +.ti-servicemark:before { + content: "\ec09"; +} + +.ti-settings:before { + content: "\eb20"; +} + +.ti-settings-2:before { + content: "\f5ac"; +} + +.ti-settings-automation:before { + content: "\eed6"; +} + +.ti-settings-off:before { + content: "\f19f"; +} + +.ti-shadow:before { + content: "\eed8"; +} + +.ti-shadow-off:before { + content: "\eed7"; +} + +.ti-shape:before { + content: "\eb9c"; +} + +.ti-shape-2:before { + content: "\eed9"; +} + +.ti-shape-3:before { + content: "\eeda"; +} + +.ti-shape-off:before { + content: "\f1a0"; +} + +.ti-share:before { + content: "\eb21"; +} + +.ti-share-off:before { + content: "\f1a1"; +} + +.ti-shield:before { + content: "\eb24"; +} + +.ti-shield-check:before { + content: "\eb22"; +} + +.ti-shield-checkered:before { + content: "\ef9a"; +} + +.ti-shield-chevron:before { + content: "\ef9b"; +} + +.ti-shield-half:before { + content: "\f358"; +} + +.ti-shield-half-filled:before { + content: "\f357"; +} + +.ti-shield-lock:before { + content: "\ed58"; +} + +.ti-shield-off:before { + content: "\ecf8"; +} + +.ti-shield-x:before { + content: "\eb23"; +} + +.ti-ship:before { + content: "\ec84"; +} + +.ti-ship-off:before { + content: "\f42a"; +} + +.ti-shirt:before { + content: "\ec0a"; +} + +.ti-shirt-off:before { + content: "\f1a2"; +} + +.ti-shirt-sport:before { + content: "\f26c"; +} + +.ti-shoe:before { + content: "\efd2"; +} + +.ti-shoe-off:before { + content: "\f1a4"; +} + +.ti-shopping-cart:before { + content: "\eb25"; +} + +.ti-shopping-cart-discount:before { + content: "\eedb"; +} + +.ti-shopping-cart-off:before { + content: "\eedc"; +} + +.ti-shopping-cart-plus:before { + content: "\eedd"; +} + +.ti-shopping-cart-x:before { + content: "\eede"; +} + +.ti-shovel:before { + content: "\f1d9"; +} + +.ti-shredder:before { + content: "\eedf"; +} + +.ti-sign-left:before { + content: "\f06b"; +} + +.ti-sign-right:before { + content: "\f06c"; +} + +.ti-signal-3g:before { + content: "\f1ee"; +} + +.ti-signal-4g:before { + content: "\f1ef"; +} + +.ti-signal-4g-plus:before { + content: "\f259"; +} + +.ti-signal-5g:before { + content: "\f1f0"; +} + +.ti-signature:before { + content: "\eee0"; +} + +.ti-signature-off:before { + content: "\f1a5"; +} + +.ti-sitemap:before { + content: "\eb9d"; +} + +.ti-sitemap-off:before { + content: "\f1a6"; +} + +.ti-skateboard:before { + content: "\ecc2"; +} + +.ti-skateboard-off:before { + content: "\f42b"; +} + +.ti-skull:before { + content: "\f292"; +} + +.ti-slash:before { + content: "\f4f9"; +} + +.ti-slashes:before { + content: "\f588"; +} + +.ti-sleigh:before { + content: "\ef9c"; +} + +.ti-slice:before { + content: "\ebdb"; +} + +.ti-slideshow:before { + content: "\ebc9"; +} + +.ti-smart-home:before { + content: "\ecde"; +} + +.ti-smart-home-off:before { + content: "\f1a7"; +} + +.ti-smoking:before { + content: "\ecc4"; +} + +.ti-smoking-no:before { + content: "\ecc3"; +} + +.ti-snowflake:before { + content: "\ec0b"; +} + +.ti-snowflake-off:before { + content: "\f1a8"; +} + +.ti-snowman:before { + content: "\f26d"; +} + +.ti-soccer-field:before { + content: "\ed92"; +} + +.ti-social:before { + content: "\ebec"; +} + +.ti-social-off:before { + content: "\f1a9"; +} + +.ti-sock:before { + content: "\eee1"; +} + +.ti-sofa:before { + content: "\efaf"; +} + +.ti-sofa-off:before { + content: "\f42c"; +} + +.ti-sort-0-9:before { + content: "\f54d"; +} + +.ti-sort-9-0:before { + content: "\f54e"; +} + +.ti-sort-a-z:before { + content: "\f54f"; +} + +.ti-sort-ascending:before { + content: "\eb26"; +} + +.ti-sort-ascending-2:before { + content: "\eee2"; +} + +.ti-sort-ascending-letters:before { + content: "\ef18"; +} + +.ti-sort-ascending-numbers:before { + content: "\ef19"; +} + +.ti-sort-descending:before { + content: "\eb27"; +} + +.ti-sort-descending-2:before { + content: "\eee3"; +} + +.ti-sort-descending-letters:before { + content: "\ef1a"; +} + +.ti-sort-descending-numbers:before { + content: "\ef1b"; +} + +.ti-sort-z-a:before { + content: "\f550"; +} + +.ti-sos:before { + content: "\f24a"; +} + +.ti-soup:before { + content: "\ef2e"; +} + +.ti-soup-off:before { + content: "\f42d"; +} + +.ti-source-code:before { + content: "\f4a2"; +} + +.ti-space:before { + content: "\ec0c"; +} + +.ti-space-off:before { + content: "\f1aa"; +} + +.ti-spacing-horizontal:before { + content: "\ef54"; +} + +.ti-spacing-vertical:before { + content: "\ef55"; +} + +.ti-spade:before { + content: "\effa"; +} + +.ti-speakerphone:before { + content: "\ed61"; +} + +.ti-speedboat:before { + content: "\ed93"; +} + +.ti-spider:before { + content: "\f293"; +} + +.ti-spiral:before { + content: "\f294"; +} + +.ti-spiral-off:before { + content: "\f42e"; +} + +.ti-sport-billard:before { + content: "\eee4"; +} + +.ti-spray:before { + content: "\f50b"; +} + +.ti-spy:before { + content: "\f227"; +} + +.ti-spy-off:before { + content: "\f42f"; +} + +.ti-square:before { + content: "\eb2c"; +} + +.ti-square-arrow-down:before { + content: "\f4b7"; +} + +.ti-square-arrow-left:before { + content: "\f4b8"; +} + +.ti-square-arrow-right:before { + content: "\f4b9"; +} + +.ti-square-arrow-up:before { + content: "\f4ba"; +} + +.ti-square-asterisk:before { + content: "\f01a"; +} + +.ti-square-check:before { + content: "\eb28"; +} + +.ti-square-dot:before { + content: "\ed59"; +} + +.ti-square-f0:before { + content: "\f526"; +} + +.ti-square-f1:before { + content: "\f527"; +} + +.ti-square-f2:before { + content: "\f528"; +} + +.ti-square-f3:before { + content: "\f529"; +} + +.ti-square-f4:before { + content: "\f52a"; +} + +.ti-square-f5:before { + content: "\f52b"; +} + +.ti-square-f6:before { + content: "\f52c"; +} + +.ti-square-f7:before { + content: "\f52d"; +} + +.ti-square-f8:before { + content: "\f52e"; +} + +.ti-square-f9:before { + content: "\f52f"; +} + +.ti-square-forbid:before { + content: "\ed5b"; +} + +.ti-square-forbid-2:before { + content: "\ed5a"; +} + +.ti-square-half:before { + content: "\effb"; +} + +.ti-square-letter-a:before { + content: "\f47c"; +} + +.ti-square-letter-b:before { + content: "\f47d"; +} + +.ti-square-letter-c:before { + content: "\f47e"; +} + +.ti-square-letter-d:before { + content: "\f47f"; +} + +.ti-square-letter-e:before { + content: "\f480"; +} + +.ti-square-letter-f:before { + content: "\f481"; +} + +.ti-square-letter-g:before { + content: "\f482"; +} + +.ti-square-letter-h:before { + content: "\f483"; +} + +.ti-square-letter-i:before { + content: "\f484"; +} + +.ti-square-letter-j:before { + content: "\f485"; +} + +.ti-square-letter-k:before { + content: "\f486"; +} + +.ti-square-letter-l:before { + content: "\f487"; +} + +.ti-square-letter-m:before { + content: "\f488"; +} + +.ti-square-letter-n:before { + content: "\f489"; +} + +.ti-square-letter-o:before { + content: "\f48a"; +} + +.ti-square-letter-p:before { + content: "\f48b"; +} + +.ti-square-letter-q:before { + content: "\f48c"; +} + +.ti-square-letter-r:before { + content: "\f48d"; +} + +.ti-square-letter-s:before { + content: "\f48e"; +} + +.ti-square-letter-t:before { + content: "\f48f"; +} + +.ti-square-letter-u:before { + content: "\f490"; +} + +.ti-square-letter-v:before { + content: "\f4bb"; +} + +.ti-square-letter-w:before { + content: "\f491"; +} + +.ti-square-letter-x:before { + content: "\f4bc"; +} + +.ti-square-letter-y:before { + content: "\f492"; +} + +.ti-square-letter-z:before { + content: "\f493"; +} + +.ti-square-minus:before { + content: "\eb29"; +} + +.ti-square-number-0:before { + content: "\eee5"; +} + +.ti-square-number-1:before { + content: "\eee6"; +} + +.ti-square-number-2:before { + content: "\eee7"; +} + +.ti-square-number-3:before { + content: "\eee8"; +} + +.ti-square-number-4:before { + content: "\eee9"; +} + +.ti-square-number-5:before { + content: "\eeea"; +} + +.ti-square-number-6:before { + content: "\eeeb"; +} + +.ti-square-number-7:before { + content: "\eeec"; +} + +.ti-square-number-8:before { + content: "\eeed"; +} + +.ti-square-number-9:before { + content: "\eeee"; +} + +.ti-square-off:before { + content: "\eeef"; +} + +.ti-square-plus:before { + content: "\eb2a"; +} + +.ti-square-root:before { + content: "\eef1"; +} + +.ti-square-root-2:before { + content: "\eef0"; +} + +.ti-square-rotated:before { + content: "\ecdf"; +} + +.ti-square-rotated-forbid:before { + content: "\f01c"; +} + +.ti-square-rotated-forbid-2:before { + content: "\f01b"; +} + +.ti-square-rotated-off:before { + content: "\eef2"; +} + +.ti-square-rounded:before { + content: "\f59a"; +} + +.ti-square-rounded-letter-a:before { + content: "\f5ae"; +} + +.ti-square-rounded-letter-b:before { + content: "\f5af"; +} + +.ti-square-rounded-letter-c:before { + content: "\f5b0"; +} + +.ti-square-rounded-letter-d:before { + content: "\f5b1"; +} + +.ti-square-rounded-letter-e:before { + content: "\f5b2"; +} + +.ti-square-rounded-letter-f:before { + content: "\f5b3"; +} + +.ti-square-rounded-letter-g:before { + content: "\f5b4"; +} + +.ti-square-rounded-letter-h:before { + content: "\f5b5"; +} + +.ti-square-rounded-letter-i:before { + content: "\f5b6"; +} + +.ti-square-rounded-letter-j:before { + content: "\f5b7"; +} + +.ti-square-rounded-letter-k:before { + content: "\f5b8"; +} + +.ti-square-rounded-letter-l:before { + content: "\f5b9"; +} + +.ti-square-rounded-letter-m:before { + content: "\f5ba"; +} + +.ti-square-rounded-letter-n:before { + content: "\f5bb"; +} + +.ti-square-rounded-letter-o:before { + content: "\f5bc"; +} + +.ti-square-rounded-letter-p:before { + content: "\f5bd"; +} + +.ti-square-rounded-letter-q:before { + content: "\f5be"; +} + +.ti-square-rounded-letter-r:before { + content: "\f5bf"; +} + +.ti-square-rounded-letter-s:before { + content: "\f5c0"; +} + +.ti-square-rounded-letter-t:before { + content: "\f5c1"; +} + +.ti-square-rounded-letter-u:before { + content: "\f5c2"; +} + +.ti-square-rounded-letter-v:before { + content: "\f5c3"; +} + +.ti-square-rounded-letter-w:before { + content: "\f5c4"; +} + +.ti-square-rounded-letter-x:before { + content: "\f5c5"; +} + +.ti-square-rounded-letter-y:before { + content: "\f5c6"; +} + +.ti-square-rounded-letter-z:before { + content: "\f5c7"; +} + +.ti-square-rounded-number-0:before { + content: "\f5c8"; +} + +.ti-square-rounded-number-1:before { + content: "\f5c9"; +} + +.ti-square-rounded-number-2:before { + content: "\f5ca"; +} + +.ti-square-rounded-number-3:before { + content: "\f5cb"; +} + +.ti-square-rounded-number-4:before { + content: "\f5cc"; +} + +.ti-square-rounded-number-5:before { + content: "\f5cd"; +} + +.ti-square-rounded-number-6:before { + content: "\f5ce"; +} + +.ti-square-rounded-number-7:before { + content: "\f5cf"; +} + +.ti-square-rounded-number-8:before { + content: "\f5d0"; +} + +.ti-square-rounded-number-9:before { + content: "\f5d1"; +} + +.ti-square-toggle:before { + content: "\eef4"; +} + +.ti-square-toggle-horizontal:before { + content: "\eef3"; +} + +.ti-square-x:before { + content: "\eb2b"; +} + +.ti-squares-diagonal:before { + content: "\eef5"; +} + +.ti-squares-filled:before { + content: "\eef6"; +} + +.ti-stack:before { + content: "\eb2d"; +} + +.ti-stack-2:before { + content: "\eef7"; +} + +.ti-stack-3:before { + content: "\ef9d"; +} + +.ti-stack-pop:before { + content: "\f234"; +} + +.ti-stack-push:before { + content: "\f235"; +} + +.ti-stairs:before { + content: "\eca6"; +} + +.ti-stairs-down:before { + content: "\eca4"; +} + +.ti-stairs-up:before { + content: "\eca5"; +} + +.ti-star:before { + content: "\eb2e"; +} + +.ti-star-half:before { + content: "\ed19"; +} + +.ti-star-off:before { + content: "\ed62"; +} + +.ti-stars:before { + content: "\ed38"; +} + +.ti-stars-off:before { + content: "\f430"; +} + +.ti-status-change:before { + content: "\f3b0"; +} + +.ti-steam:before { + content: "\f24b"; +} + +.ti-steering-wheel:before { + content: "\ec7b"; +} + +.ti-steering-wheel-off:before { + content: "\f431"; +} + +.ti-step-into:before { + content: "\ece0"; +} + +.ti-step-out:before { + content: "\ece1"; +} + +.ti-stereo-glasses:before { + content: "\f4cb"; +} + +.ti-stethoscope:before { + content: "\edbe"; +} + +.ti-stethoscope-off:before { + content: "\f432"; +} + +.ti-sticker:before { + content: "\eb2f"; +} + +.ti-storm:before { + content: "\f24c"; +} + +.ti-storm-off:before { + content: "\f433"; +} + +.ti-stretching:before { + content: "\f2db"; +} + +.ti-strikethrough:before { + content: "\eb9e"; +} + +.ti-submarine:before { + content: "\ed94"; +} + +.ti-subscript:before { + content: "\eb9f"; +} + +.ti-subtask:before { + content: "\ec9f"; +} + +.ti-sum:before { + content: "\eb73"; +} + +.ti-sum-off:before { + content: "\f1ab"; +} + +.ti-sun:before { + content: "\eb30"; +} + +.ti-sun-high:before { + content: "\f236"; +} + +.ti-sun-low:before { + content: "\f237"; +} + +.ti-sun-moon:before { + content: "\f4a3"; +} + +.ti-sun-off:before { + content: "\ed63"; +} + +.ti-sun-wind:before { + content: "\f238"; +} + +.ti-sunglasses:before { + content: "\f239"; +} + +.ti-sunrise:before { + content: "\ef1c"; +} + +.ti-sunset:before { + content: "\ec31"; +} + +.ti-sunset-2:before { + content: "\f23a"; +} + +.ti-superscript:before { + content: "\eba0"; +} + +.ti-svg:before { + content: "\f25a"; +} + +.ti-swimming:before { + content: "\ec92"; +} + +.ti-swipe:before { + content: "\f551"; +} + +.ti-switch:before { + content: "\eb33"; +} + +.ti-switch-2:before { + content: "\edbf"; +} + +.ti-switch-3:before { + content: "\edc0"; +} + +.ti-switch-horizontal:before { + content: "\eb31"; +} + +.ti-switch-vertical:before { + content: "\eb32"; +} + +.ti-sword:before { + content: "\f030"; +} + +.ti-sword-off:before { + content: "\f434"; +} + +.ti-swords:before { + content: "\f132"; +} + +.ti-table:before { + content: "\eba1"; +} + +.ti-table-alias:before { + content: "\f25b"; +} + +.ti-table-export:before { + content: "\eef8"; +} + +.ti-table-import:before { + content: "\eef9"; +} + +.ti-table-off:before { + content: "\eefa"; +} + +.ti-table-options:before { + content: "\f25c"; +} + +.ti-table-shortcut:before { + content: "\f25d"; +} + +.ti-tag:before { + content: "\eb34"; +} + +.ti-tag-off:before { + content: "\efc0"; +} + +.ti-tags:before { + content: "\ef86"; +} + +.ti-tags-off:before { + content: "\efc1"; +} + +.ti-tallymark-1:before { + content: "\ec46"; +} + +.ti-tallymark-2:before { + content: "\ec47"; +} + +.ti-tallymark-3:before { + content: "\ec48"; +} + +.ti-tallymark-4:before { + content: "\ec49"; +} + +.ti-tallymarks:before { + content: "\ec4a"; +} + +.ti-tank:before { + content: "\ed95"; +} + +.ti-target:before { + content: "\eb35"; +} + +.ti-target-arrow:before { + content: "\f51a"; +} + +.ti-target-off:before { + content: "\f1ad"; +} + +.ti-teapot:before { + content: "\f552"; +} + +.ti-telescope:before { + content: "\f07d"; +} + +.ti-telescope-off:before { + content: "\f1ae"; +} + +.ti-temperature:before { + content: "\eb38"; +} + +.ti-temperature-celsius:before { + content: "\eb36"; +} + +.ti-temperature-fahrenheit:before { + content: "\eb37"; +} + +.ti-temperature-minus:before { + content: "\ebed"; +} + +.ti-temperature-off:before { + content: "\f1af"; +} + +.ti-temperature-plus:before { + content: "\ebee"; +} + +.ti-template:before { + content: "\eb39"; +} + +.ti-template-off:before { + content: "\f1b0"; +} + +.ti-tent:before { + content: "\eefb"; +} + +.ti-tent-off:before { + content: "\f435"; +} + +.ti-terminal:before { + content: "\ebdc"; +} + +.ti-terminal-2:before { + content: "\ebef"; +} + +.ti-test-pipe:before { + content: "\eb3a"; +} + +.ti-test-pipe-2:before { + content: "\f0a4"; +} + +.ti-test-pipe-off:before { + content: "\f1b1"; +} + +.ti-tex:before { + content: "\f4e0"; +} + +.ti-text-caption:before { + content: "\f4a4"; +} + +.ti-text-color:before { + content: "\f2dc"; +} + +.ti-text-decrease:before { + content: "\f202"; +} + +.ti-text-direction-ltr:before { + content: "\eefc"; +} + +.ti-text-direction-rtl:before { + content: "\eefd"; +} + +.ti-text-increase:before { + content: "\f203"; +} + +.ti-text-orientation:before { + content: "\f2a4"; +} + +.ti-text-plus:before { + content: "\f2a5"; +} + +.ti-text-recognition:before { + content: "\f204"; +} + +.ti-text-resize:before { + content: "\ef87"; +} + +.ti-text-size:before { + content: "\f2b1"; +} + +.ti-text-spellcheck:before { + content: "\f2a6"; +} + +.ti-text-wrap:before { + content: "\ebdd"; +} + +.ti-text-wrap-disabled:before { + content: "\eca7"; +} + +.ti-texture:before { + content: "\f51b"; +} + +.ti-thermometer:before { + content: "\ef67"; +} + +.ti-thumb-down:before { + content: "\eb3b"; +} + +.ti-thumb-down-off:before { + content: "\f436"; +} + +.ti-thumb-up:before { + content: "\eb3c"; +} + +.ti-thumb-up-off:before { + content: "\f437"; +} + +.ti-tic-tac:before { + content: "\f51c"; +} + +.ti-ticket:before { + content: "\eb3d"; +} + +.ti-ticket-off:before { + content: "\f1b2"; +} + +.ti-tie:before { + content: "\f07e"; +} + +.ti-tilde:before { + content: "\f4a5"; +} + +.ti-tilt-shift:before { + content: "\eefe"; +} + +.ti-tilt-shift-off:before { + content: "\f1b3"; +} + +.ti-timeline:before { + content: "\f031"; +} + +.ti-timeline-event:before { + content: "\f553"; +} + +.ti-tir:before { + content: "\ebf0"; +} + +.ti-toggle-left:before { + content: "\eb3e"; +} + +.ti-toggle-right:before { + content: "\eb3f"; +} + +.ti-toilet-paper:before { + content: "\efd3"; +} + +.ti-toilet-paper-off:before { + content: "\f1b4"; +} + +.ti-tool:before { + content: "\eb40"; +} + +.ti-tools:before { + content: "\ebca"; +} + +.ti-tools-kitchen:before { + content: "\ed64"; +} + +.ti-tools-kitchen-2:before { + content: "\eeff"; +} + +.ti-tools-kitchen-2-off:before { + content: "\f1b5"; +} + +.ti-tools-kitchen-off:before { + content: "\f1b6"; +} + +.ti-tools-off:before { + content: "\f1b7"; +} + +.ti-tooltip:before { + content: "\f2dd"; +} + +.ti-topology-bus:before { + content: "\f5d9"; +} + +.ti-topology-complex:before { + content: "\f5da"; +} + +.ti-topology-full:before { + content: "\f5dc"; +} + +.ti-topology-full-hierarchy:before { + content: "\f5db"; +} + +.ti-topology-ring:before { + content: "\f5df"; +} + +.ti-topology-ring-2:before { + content: "\f5dd"; +} + +.ti-topology-ring-3:before { + content: "\f5de"; +} + +.ti-topology-star:before { + content: "\f5e5"; +} + +.ti-topology-star-2:before { + content: "\f5e0"; +} + +.ti-topology-star-3:before { + content: "\f5e1"; +} + +.ti-topology-star-ring:before { + content: "\f5e4"; +} + +.ti-topology-star-ring-2:before { + content: "\f5e2"; +} + +.ti-topology-star-ring-3:before { + content: "\f5e3"; +} + +.ti-torii:before { + content: "\f59b"; +} + +.ti-tornado:before { + content: "\ece2"; +} + +.ti-tournament:before { + content: "\ecd0"; +} + +.ti-tower:before { + content: "\f2cb"; +} + +.ti-tower-off:before { + content: "\f2ca"; +} + +.ti-track:before { + content: "\ef00"; +} + +.ti-tractor:before { + content: "\ec0d"; +} + +.ti-trademark:before { + content: "\ec0e"; +} + +.ti-traffic-cone:before { + content: "\ec0f"; +} + +.ti-traffic-cone-off:before { + content: "\f1b8"; +} + +.ti-traffic-lights:before { + content: "\ed39"; +} + +.ti-traffic-lights-off:before { + content: "\f1b9"; +} + +.ti-train:before { + content: "\ed96"; +} + +.ti-transfer-in:before { + content: "\ef2f"; +} + +.ti-transfer-out:before { + content: "\ef30"; +} + +.ti-transform:before { + content: "\f38e"; +} + +.ti-transition-bottom:before { + content: "\f2b2"; +} + +.ti-transition-left:before { + content: "\f2b3"; +} + +.ti-transition-right:before { + content: "\f2b4"; +} + +.ti-transition-top:before { + content: "\f2b5"; +} + +.ti-trash:before { + content: "\eb41"; +} + +.ti-trash-off:before { + content: "\ed65"; +} + +.ti-trash-x:before { + content: "\ef88"; +} + +.ti-tree:before { + content: "\ef01"; +} + +.ti-trees:before { + content: "\ec10"; +} + +.ti-trekking:before { + content: "\f5ad"; +} + +.ti-trending-down:before { + content: "\eb42"; +} + +.ti-trending-down-2:before { + content: "\edc1"; +} + +.ti-trending-down-3:before { + content: "\edc2"; +} + +.ti-trending-up:before { + content: "\eb43"; +} + +.ti-trending-up-2:before { + content: "\edc3"; +} + +.ti-trending-up-3:before { + content: "\edc4"; +} + +.ti-triangle:before { + content: "\eb44"; +} + +.ti-triangle-inverted:before { + content: "\f01d"; +} + +.ti-triangle-off:before { + content: "\ef02"; +} + +.ti-triangle-square-circle:before { + content: "\ece8"; +} + +.ti-triangles:before { + content: "\f0a5"; +} + +.ti-trident:before { + content: "\ecc5"; +} + +.ti-trolley:before { + content: "\f4cc"; +} + +.ti-trophy:before { + content: "\eb45"; +} + +.ti-trophy-off:before { + content: "\f438"; +} + +.ti-trowel:before { + content: "\f368"; +} + +.ti-truck:before { + content: "\ebc4"; +} + +.ti-truck-delivery:before { + content: "\ec4b"; +} + +.ti-truck-loading:before { + content: "\f1da"; +} + +.ti-truck-off:before { + content: "\ef03"; +} + +.ti-truck-return:before { + content: "\ec4c"; +} + +.ti-txt:before { + content: "\f3b1"; +} + +.ti-typography:before { + content: "\ebc5"; +} + +.ti-typography-off:before { + content: "\f1ba"; +} + +.ti-uf-off:before { + content: "\f26e"; +} + +.ti-ufo:before { + content: "\f26f"; +} + +.ti-umbrella:before { + content: "\ebf1"; +} + +.ti-umbrella-off:before { + content: "\f1bb"; +} + +.ti-underline:before { + content: "\eba2"; +} + +.ti-unlink:before { + content: "\eb46"; +} + +.ti-upload:before { + content: "\eb47"; +} + +.ti-urgent:before { + content: "\eb48"; +} + +.ti-usb:before { + content: "\f00c"; +} + +.ti-user:before { + content: "\eb4d"; +} + +.ti-user-check:before { + content: "\eb49"; +} + +.ti-user-circle:before { + content: "\ef68"; +} + +.ti-user-exclamation:before { + content: "\ec12"; +} + +.ti-user-minus:before { + content: "\eb4a"; +} + +.ti-user-off:before { + content: "\ecf9"; +} + +.ti-user-plus:before { + content: "\eb4b"; +} + +.ti-user-search:before { + content: "\ef89"; +} + +.ti-user-x:before { + content: "\eb4c"; +} + +.ti-users:before { + content: "\ebf2"; +} + +.ti-uv-index:before { + content: "\f3b2"; +} + +.ti-ux-circle:before { + content: "\f369"; +} + +.ti-vaccine:before { + content: "\ef04"; +} + +.ti-vaccine-bottle:before { + content: "\ef69"; +} + +.ti-vaccine-bottle-off:before { + content: "\f439"; +} + +.ti-vaccine-off:before { + content: "\f1bc"; +} + +.ti-vacuum-cleaner:before { + content: "\f5e6"; +} + +.ti-variable:before { + content: "\ef05"; +} + +.ti-variable-minus:before { + content: "\f36a"; +} + +.ti-variable-off:before { + content: "\f1bd"; +} + +.ti-variable-plus:before { + content: "\f36b"; +} + +.ti-vector:before { + content: "\eca9"; +} + +.ti-vector-bezier:before { + content: "\ef1d"; +} + +.ti-vector-bezier-2:before { + content: "\f1a3"; +} + +.ti-vector-bezier-arc:before { + content: "\f4cd"; +} + +.ti-vector-bezier-circle:before { + content: "\f4ce"; +} + +.ti-vector-off:before { + content: "\f1be"; +} + +.ti-vector-spline:before { + content: "\f565"; +} + +.ti-vector-triangle:before { + content: "\eca8"; +} + +.ti-vector-triangle-off:before { + content: "\f1bf"; +} + +.ti-venus:before { + content: "\ec86"; +} + +.ti-versions:before { + content: "\ed52"; +} + +.ti-versions-off:before { + content: "\f1c0"; +} + +.ti-video:before { + content: "\ed22"; +} + +.ti-video-minus:before { + content: "\ed1f"; +} + +.ti-video-off:before { + content: "\ed20"; +} + +.ti-video-plus:before { + content: "\ed21"; +} + +.ti-view-360:before { + content: "\ed84"; +} + +.ti-view-360-off:before { + content: "\f1c1"; +} + +.ti-viewfinder:before { + content: "\eb4e"; +} + +.ti-viewfinder-off:before { + content: "\f1c2"; +} + +.ti-viewport-narrow:before { + content: "\ebf3"; +} + +.ti-viewport-wide:before { + content: "\ebf4"; +} + +.ti-vinyl:before { + content: "\f00d"; +} + +.ti-vip:before { + content: "\f3b3"; +} + +.ti-vip-off:before { + content: "\f43a"; +} + +.ti-virus:before { + content: "\eb74"; +} + +.ti-virus-off:before { + content: "\ed66"; +} + +.ti-virus-search:before { + content: "\ed67"; +} + +.ti-vocabulary:before { + content: "\ef1e"; +} + +.ti-vocabulary-off:before { + content: "\f43b"; +} + +.ti-volume:before { + content: "\eb51"; +} + +.ti-volume-2:before { + content: "\eb4f"; +} + +.ti-volume-3:before { + content: "\eb50"; +} + +.ti-volume-off:before { + content: "\f1c3"; +} + +.ti-walk:before { + content: "\ec87"; +} + +.ti-wall:before { + content: "\ef7a"; +} + +.ti-wall-off:before { + content: "\f43c"; +} + +.ti-wallet:before { + content: "\eb75"; +} + +.ti-wallet-off:before { + content: "\f1c4"; +} + +.ti-wallpaper:before { + content: "\ef56"; +} + +.ti-wallpaper-off:before { + content: "\f1c5"; +} + +.ti-wand:before { + content: "\ebcb"; +} + +.ti-wand-off:before { + content: "\f1c6"; +} + +.ti-wash:before { + content: "\f311"; +} + +.ti-wash-dry:before { + content: "\f304"; +} + +.ti-wash-dry-1:before { + content: "\f2fa"; +} + +.ti-wash-dry-2:before { + content: "\f2fb"; +} + +.ti-wash-dry-3:before { + content: "\f2fc"; +} + +.ti-wash-dry-a:before { + content: "\f2fd"; +} + +.ti-wash-dry-dip:before { + content: "\f2fe"; +} + +.ti-wash-dry-f:before { + content: "\f2ff"; +} + +.ti-wash-dry-hang:before { + content: "\f300"; +} + +.ti-wash-dry-off:before { + content: "\f301"; +} + +.ti-wash-dry-p:before { + content: "\f302"; +} + +.ti-wash-dry-shade:before { + content: "\f303"; +} + +.ti-wash-dry-w:before { + content: "\f322"; +} + +.ti-wash-dryclean:before { + content: "\f305"; +} + +.ti-wash-dryclean-off:before { + content: "\f323"; +} + +.ti-wash-gentle:before { + content: "\f306"; +} + +.ti-wash-machine:before { + content: "\f25e"; +} + +.ti-wash-off:before { + content: "\f307"; +} + +.ti-wash-press:before { + content: "\f308"; +} + +.ti-wash-temperature-1:before { + content: "\f309"; +} + +.ti-wash-temperature-2:before { + content: "\f30a"; +} + +.ti-wash-temperature-3:before { + content: "\f30b"; +} + +.ti-wash-temperature-4:before { + content: "\f30c"; +} + +.ti-wash-temperature-5:before { + content: "\f30d"; +} + +.ti-wash-temperature-6:before { + content: "\f30e"; +} + +.ti-wash-tumble-dry:before { + content: "\f30f"; +} + +.ti-wash-tumble-off:before { + content: "\f310"; +} + +.ti-wave-saw-tool:before { + content: "\ecd3"; +} + +.ti-wave-sine:before { + content: "\ecd4"; +} + +.ti-wave-square:before { + content: "\ecd5"; +} + +.ti-webhook:before { + content: "\f01e"; +} + +.ti-webhook-off:before { + content: "\f43d"; +} + +.ti-weight:before { + content: "\f589"; +} + +.ti-wheelchair:before { + content: "\f1db"; +} + +.ti-wheelchair-off:before { + content: "\f43e"; +} + +.ti-whirl:before { + content: "\f51d"; +} + +.ti-wifi:before { + content: "\eb52"; +} + +.ti-wifi-0:before { + content: "\eba3"; +} + +.ti-wifi-1:before { + content: "\eba4"; +} + +.ti-wifi-2:before { + content: "\eba5"; +} + +.ti-wifi-off:before { + content: "\ecfa"; +} + +.ti-wind:before { + content: "\ec34"; +} + +.ti-wind-off:before { + content: "\f1c7"; +} + +.ti-windmill:before { + content: "\ed85"; +} + +.ti-windmill-off:before { + content: "\f1c8"; +} + +.ti-window:before { + content: "\ef06"; +} + +.ti-window-maximize:before { + content: "\f1f1"; +} + +.ti-window-minimize:before { + content: "\f1f2"; +} + +.ti-window-off:before { + content: "\f1c9"; +} + +.ti-windsock:before { + content: "\f06d"; +} + +.ti-wiper:before { + content: "\ecab"; +} + +.ti-wiper-wash:before { + content: "\ecaa"; +} + +.ti-woman:before { + content: "\eb53"; +} + +.ti-wood:before { + content: "\f359"; +} + +.ti-world:before { + content: "\eb54"; +} + +.ti-world-download:before { + content: "\ef8a"; +} + +.ti-world-latitude:before { + content: "\ed2e"; +} + +.ti-world-longitude:before { + content: "\ed2f"; +} + +.ti-world-off:before { + content: "\f1ca"; +} + +.ti-world-upload:before { + content: "\ef8b"; +} + +.ti-world-www:before { + content: "\f38f"; +} + +.ti-wrecking-ball:before { + content: "\ed97"; +} + +.ti-writing:before { + content: "\ef08"; +} + +.ti-writing-off:before { + content: "\f1cb"; +} + +.ti-writing-sign:before { + content: "\ef07"; +} + +.ti-writing-sign-off:before { + content: "\f1cc"; +} + +.ti-x:before { + content: "\eb55"; +} + +.ti-xbox-a:before { + content: "\f2b6"; +} + +.ti-xbox-b:before { + content: "\f2b7"; +} + +.ti-xbox-x:before { + content: "\f2b8"; +} + +.ti-xbox-y:before { + content: "\f2b9"; +} + +.ti-yin-yang:before { + content: "\ec35"; +} + +.ti-yoga:before { + content: "\f01f"; +} + +.ti-zeppelin:before { + content: "\f270"; +} + +.ti-zeppelin-off:before { + content: "\f43f"; +} + +.ti-zip:before { + content: "\f3b4"; +} + +.ti-zodiac-aquarius:before { + content: "\ecac"; +} + +.ti-zodiac-aries:before { + content: "\ecad"; +} + +.ti-zodiac-cancer:before { + content: "\ecae"; +} + +.ti-zodiac-capricorn:before { + content: "\ecaf"; +} + +.ti-zodiac-gemini:before { + content: "\ecb0"; +} + +.ti-zodiac-leo:before { + content: "\ecb1"; +} + +.ti-zodiac-libra:before { + content: "\ecb2"; +} + +.ti-zodiac-pisces:before { + content: "\ecb3"; +} + +.ti-zodiac-sagittarius:before { + content: "\ecb4"; +} + +.ti-zodiac-scorpio:before { + content: "\ecb5"; +} + +.ti-zodiac-taurus:before { + content: "\ecb6"; +} + +.ti-zodiac-virgo:before { + content: "\ecb7"; +} + +.ti-zoom-cancel:before { + content: "\ec4d"; +} + +.ti-zoom-check:before { + content: "\ef09"; +} + +.ti-zoom-code:before { + content: "\f07f"; +} + +.ti-zoom-exclamation:before { + content: "\f080"; +} + +.ti-zoom-in:before { + content: "\eb56"; +} + +.ti-zoom-in-area:before { + content: "\f1dc"; +} + +.ti-zoom-money:before { + content: "\ef0a"; +} + +.ti-zoom-out:before { + content: "\eb57"; +} + +.ti-zoom-out-area:before { + content: "\f1dd"; +} + +.ti-zoom-pan:before { + content: "\f1de"; +} + +.ti-zoom-question:before { + content: "\edeb"; +} + +.ti-zoom-replace:before { + content: "\f2a7"; +} + +.ti-zoom-reset:before { + content: "\f295"; +} + +.ti-zzz:before { + content: "\f228"; +} + +.ti-zzz-off:before { + content: "\f440"; +} diff --git a/public/assets/css/styles.css b/public/assets/css/styles.css new file mode 100644 index 0000000..59865b7 --- /dev/null +++ b/public/assets/css/styles.css @@ -0,0 +1,6 @@ +@charset "UTF-8";@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@200;300;400;500;600;700;800&display=swap"); +/*! + * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */@import "../../assets/libs/node_modules/simplebar/dist/simplebar.css";@import "../libs/simplebar/dist/simplebar.css";@import "../css/icons/tabler-icons/tabler-icons.css";:root,[data-bs-theme=light]{--bs-blue:#5D87FF;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#FA896B;--bs-orange:#fd7e14;--bs-yellow:#FFAE1F;--bs-green:#13DEB9;--bs-teal:#20c997;--bs-cyan:#539BFF;--bs-black:#000;--bs-white:#fff;--bs-gray:#2A3547;--bs-gray-dark:#343a40;--bs-gray-100:#F6F9FC;--bs-gray-200:#EAEFF4;--bs-gray-300:#DFE5EF;--bs-gray-400:#7C8FAC;--bs-gray-500:#5A6A85;--bs-gray-600:#2A3547;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#5D87FF;--bs-secondary:#49BEFF;--bs-success:#13DEB9;--bs-info:#539BFF;--bs-warning:#FFAE1F;--bs-danger:#FA896B;--bs-light:#F6F9FC;--bs-dark:#2A3547;--bs-muted:#5A6A85;--bs-indigo:#6610f2;--bs-light-primary:#ECF2FF;--bs-light-secondary:#E8F7FF;--bs-light-info:#EBF3FE;--bs-light-success:#E6FFFA;--bs-light-warning:#FEF5E5;--bs-light-danger:#FBF2EF;--bs-light-indigo:#EBF3FE;--bs-dark-light:#2A3547;--bs-light-gray:#F6F9FC;--bs-primary-rgb:93,135,255;--bs-secondary-rgb:73,190,255;--bs-success-rgb:19,222,185;--bs-info-rgb:83,155,255;--bs-warning-rgb:255,174,31;--bs-danger-rgb:250,137,107;--bs-light-rgb:246,249,252;--bs-dark-rgb:42,53,71;--bs-muted-rgb:90,106,133;--bs-indigo-rgb:102,16,242;--bs-light-primary-rgb:236,242,255;--bs-light-secondary-rgb:232,247,255;--bs-light-info-rgb:235,243,254;--bs-light-success-rgb:230,255,250;--bs-light-warning-rgb:254,245,229;--bs-light-danger-rgb:251,242,239;--bs-light-indigo-rgb:235,243,254;--bs-dark-light-rgb:42,53,71;--bs-light-gray-rgb:246,249,252;--bs-primary-text:#4a6ccc;--bs-secondary-text:#2A3547;--bs-success-text:#0fb294;--bs-info-text:#325d99;--bs-warning-text:#996813;--bs-danger-text:#c86e56;--bs-light-text:#2A3547;--bs-dark-text:#495057;--bs-primary-bg-subtle:#dfe7ff;--bs-secondary-bg-subtle:#F6F9FC;--bs-success-bg-subtle:#d0f8f1;--bs-info-bg-subtle:#ddebff;--bs-warning-bg-subtle:#ffefd2;--bs-danger-bg-subtle:#fee7e1;--bs-light-bg-subtle:#fbfcfe;--bs-dark-bg-subtle:#7C8FAC;--bs-primary-border-subtle:#becfff;--bs-secondary-border-subtle:#EAEFF4;--bs-success-border-subtle:#a1f2e3;--bs-info-border-subtle:#bad7ff;--bs-warning-border-subtle:#ffdfa5;--bs-danger-border-subtle:#fdd0c4;--bs-light-border-subtle:#EAEFF4;--bs-dark-border-subtle:#5A6A85;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:90,106,133;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:"Plus Jakarta Sans",sans-serif;--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg,rgba(255,255,255,0.15),rgba(255,255,255,0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:0.875rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#5A6A85;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(90,106,133,0.75);--bs-secondary-color-rgb:90,106,133;--bs-secondary-bg:#EAEFF4;--bs-secondary-bg-rgb:234,239,244;--bs-tertiary-color:rgba(90,106,133,0.5);--bs-tertiary-color-rgb:90,106,133;--bs-tertiary-bg:#F6F9FC;--bs-tertiary-bg-rgb:246,249,252;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-heading-color:#2A3547;--bs-link-color:#5D87FF;--bs-link-color-rgb:93,135,255;--bs-link-decoration:underline;--bs-link-hover-color:#4a6ccc;--bs-link-hover-color-rgb:74,108,204;--bs-code-color:#d63384;--bs-highlight-bg:#ffefd2;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#ebf1f6;--bs-border-color-translucent:rgba(0,0,0,0.175);--bs-border-radius:7px;--bs-border-radius-sm:5px;--bs-border-radius-lg:15px;--bs-border-radius-xl:12px;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0px 15px 30px rgba(0,0,0,0.12);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,0.175);--bs-box-shadow-inset:unset;--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#ffefd2;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}[data-bs-theme=dark]{--bs-body-color:#5A6A85;--bs-body-color-rgb:90,106,133;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#F6F9FC;--bs-emphasis-color-rgb:246,249,252;--bs-secondary-color:rgba(90,106,133,0.75);--bs-secondary-color-rgb:90,106,133;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(90,106,133,0.5);--bs-tertiary-color-rgb:90,106,133;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#9eb7ff;--bs-secondary-text:#DFE5EF;--bs-success-text:#71ebd5;--bs-info-text:#98c3ff;--bs-warning-text:#ffce79;--bs-danger-text:#fcb8a6;--bs-light-text:#F6F9FC;--bs-dark-text:#DFE5EF;--bs-primary-bg-subtle:#131b33;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#042c25;--bs-info-bg-subtle:#111f33;--bs-warning-bg-subtle:#332306;--bs-danger-bg-subtle:#321b15;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#385199;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0b856f;--bs-info-border-subtle:#213e66;--bs-warning-border-subtle:#66460c;--bs-danger-border-subtle:#965240;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#9eb7ff;--bs-link-hover-color:#becfff;--bs-link-color-rgb:158,183,255;--bs-link-hover-color-rgb:190,207,255;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255,255,255,0.15)}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:0.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:0.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color,inherit)}.h1,h1{font-size:calc(1.34375rem + 1.125vw)}@media (min-width:1200px){.h1,h1{font-size:2.1875rem}}.h2,h2{font-size:calc(1.3rem + 0.6vw)}@media (min-width:1200px){.h2,h2{font-size:1.75rem}}.h3,h3{font-size:calc(1.278125rem + 0.3375vw)}@media (min-width:1200px){.h3,h3{font-size:1.53125rem}}.h4,h4{font-size:calc(1.25625rem + 0.075vw)}@media (min-width:1200px){.h4,h4{font-size:1.3125rem}}.h5,h5{font-size:1.09375rem}.h6,h6{font-size:0.875rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:500}dd{margin-bottom:0.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:700}.small,small{font-size:0.875em}.mark,mark{padding:0.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:0.1875rem 0.375rem;font-size:0.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:5px}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:16px;padding-bottom:16px;color:#5A6A85;text-align:left}th{font-weight:600;text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:0.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.09375rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:0.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.09375rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#2A3547}.blockquote-footer:before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:0.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);-webkit-box-shadow:var(--bs-box-shadow-sm);box-shadow:var(--bs-box-shadow-sm);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:0.5rem;line-height:1}.figure-caption{font-size:0.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:24px;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * 0.5);padding-left:calc(var(--bs-gutter-x) * 0.5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:24px;--bs-gutter-y:0;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-0.5 * var(--bs-gutter-x));margin-left:calc(-0.5 * var(--bs-gutter-x))}.row>*{-ms-flex-negative:0;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * 0.5);padding-left:calc(var(--bs-gutter-x) * 0.5);margin-top:var(--bs-gutter-y)}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}.g-6,.gx-6{--bs-gutter-x:12px}.g-6,.gy-6{--bs-gutter-y:12px}.g-7,.gx-7{--bs-gutter-x:30px}.g-7,.gy-7{--bs-gutter-y:30px}.g-8,.gx-8{--bs-gutter-x:10px}.g-8,.gy-8{--bs-gutter-y:10px}.g-9,.gx-9{--bs-gutter-x:20px}.g-9,.gy-9{--bs-gutter-y:20px}@media (min-width:576px){.col-sm{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-sm-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}.g-sm-6,.gx-sm-6{--bs-gutter-x:12px}.g-sm-6,.gy-sm-6{--bs-gutter-y:12px}.g-sm-7,.gx-sm-7{--bs-gutter-x:30px}.g-sm-7,.gy-sm-7{--bs-gutter-y:30px}.g-sm-8,.gx-sm-8{--bs-gutter-x:10px}.g-sm-8,.gy-sm-8{--bs-gutter-y:10px}.g-sm-9,.gx-sm-9{--bs-gutter-x:20px}.g-sm-9,.gy-sm-9{--bs-gutter-y:20px}}@media (min-width:768px){.col-md{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-md-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}.g-md-6,.gx-md-6{--bs-gutter-x:12px}.g-md-6,.gy-md-6{--bs-gutter-y:12px}.g-md-7,.gx-md-7{--bs-gutter-x:30px}.g-md-7,.gy-md-7{--bs-gutter-y:30px}.g-md-8,.gx-md-8{--bs-gutter-x:10px}.g-md-8,.gy-md-8{--bs-gutter-y:10px}.g-md-9,.gx-md-9{--bs-gutter-x:20px}.g-md-9,.gy-md-9{--bs-gutter-y:20px}}@media (min-width:992px){.col-lg{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-lg-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}.g-lg-6,.gx-lg-6{--bs-gutter-x:12px}.g-lg-6,.gy-lg-6{--bs-gutter-y:12px}.g-lg-7,.gx-lg-7{--bs-gutter-x:30px}.g-lg-7,.gy-lg-7{--bs-gutter-y:30px}.g-lg-8,.gx-lg-8{--bs-gutter-x:10px}.g-lg-8,.gy-lg-8{--bs-gutter-y:10px}.g-lg-9,.gx-lg-9{--bs-gutter-x:20px}.g-lg-9,.gy-lg-9{--bs-gutter-y:20px}}@media (min-width:1200px){.col-xl{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-xl-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}.g-xl-6,.gx-xl-6{--bs-gutter-x:12px}.g-xl-6,.gy-xl-6{--bs-gutter-y:12px}.g-xl-7,.gx-xl-7{--bs-gutter-x:30px}.g-xl-7,.gy-xl-7{--bs-gutter-y:30px}.g-xl-8,.gx-xl-8{--bs-gutter-x:10px}.g-xl-8,.gy-xl-8{--bs-gutter-y:10px}.g-xl-9,.gx-xl-9{--bs-gutter-x:20px}.g-xl-9,.gy-xl-9{--bs-gutter-y:20px}}@media (min-width:1400px){.col-xxl{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.row-cols-xxl-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.row-cols-xxl-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.row-cols-xxl-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.row-cols-xxl-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xxl-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.row-cols-xxl-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xxl-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333333%}.col-xxl-2{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66666667%}.col-xxl-3{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.col-xxl-4{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333333%}.col-xxl-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66666667%}.col-xxl-6{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xxl-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333333%}.col-xxl-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66666667%}.col-xxl-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xxl-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333333%}.col-xxl-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66666667%}.col-xxl-12{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}.g-xxl-6,.gx-xxl-6{--bs-gutter-x:12px}.g-xxl-6,.gy-xxl-6{--bs-gutter-y:12px}.g-xxl-7,.gx-xxl-7{--bs-gutter-x:30px}.g-xxl-7,.gy-xxl-7{--bs-gutter-y:30px}.g-xxl-8,.gx-xxl-8{--bs-gutter-x:10px}.g-xxl-8,.gy-xxl-8{--bs-gutter-y:10px}.g-xxl-9,.gx-xxl-9{--bs-gutter-x:20px}.g-xxl-9,.gy-xxl-9{--bs-gutter-y:20px}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:#ebf1f6;--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:#EAEFF4;--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0,0,0,0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:#F6F9FC;width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:16px 16px;background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);-webkit-box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg);box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:0.25rem 0.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#dfe7ff;--bs-table-border-color:#c9d0e6;--bs-table-striped-bg:#d4dbf2;--bs-table-striped-color:#000;--bs-table-active-bg:#c9d0e6;--bs-table-active-color:#000;--bs-table-hover-bg:#ced6ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#dbf2ff;--bs-table-border-color:#c5dae6;--bs-table-striped-bg:#d0e6f2;--bs-table-striped-color:#000;--bs-table-active-bg:#c5dae6;--bs-table-active-color:#000;--bs-table-hover-bg:#cbe0ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d0f8f1;--bs-table-border-color:#bbdfd9;--bs-table-striped-bg:#c6ece5;--bs-table-striped-color:#000;--bs-table-active-bg:#bbdfd9;--bs-table-active-color:#000;--bs-table-hover-bg:#c0e5df;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#ddebff;--bs-table-border-color:#c7d4e6;--bs-table-striped-bg:#d2dff2;--bs-table-striped-color:#000;--bs-table-active-bg:#c7d4e6;--bs-table-active-color:#000;--bs-table-hover-bg:#ccd9ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#ffefd2;--bs-table-border-color:#e6d7bd;--bs-table-striped-bg:#f2e3c8;--bs-table-striped-color:#000;--bs-table-active-bg:#e6d7bd;--bs-table-active-color:#000;--bs-table-hover-bg:#ecddc2;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#fee7e1;--bs-table-border-color:#e5d0cb;--bs-table-striped-bg:#f1dbd6;--bs-table-striped-color:#000;--bs-table-active-bg:#e5d0cb;--bs-table-active-color:#000;--bs-table-hover-bg:#ebd6d0;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#F6F9FC;--bs-table-border-color:#dde0e3;--bs-table-striped-bg:#eaedef;--bs-table-striped-color:#000;--bs-table-active-bg:#dde0e3;--bs-table-active-color:#000;--bs-table-hover-bg:#e4e6e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#2A3547;--bs-table-border-color:#3f4959;--bs-table-striped-bg:#353f50;--bs-table-striped-color:#fff;--bs-table-active-bg:#3f4959;--bs-table-active-color:#fff;--bs-table-hover-bg:#3a4455;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:0.5rem;font-weight:600;color:#2A3547}.col-form-label{padding-top:calc(8px + var(--bs-border-width));padding-bottom:calc(8px + var(--bs-border-width));margin-bottom:0;font-size:inherit;font-weight:600;line-height:1.5;color:#2A3547}.col-form-label-lg{padding-top:calc(0.5rem + var(--bs-border-width));padding-bottom:calc(0.5rem + var(--bs-border-width));font-size:1.09375rem}.col-form-label-sm{padding-top:calc(0.25rem + var(--bs-border-width));padding-bottom:calc(0.25rem + var(--bs-border-width));font-size:0.765625rem}.form-text{margin-top:0.25rem;font-size:0.875em;color:#5A6A85}.form-control{display:block;width:100%;padding:8px 16px;font-size:0.875rem;font-weight:400;line-height:1.5;color:#5A6A85;background-color:transparent;background-clip:padding-box;border:var(--bs-border-width) solid #DFE5EF;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:7px;-webkit-box-shadow:unset;box-shadow:unset;-webkit-transition:border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#5A6A85;background-color:transparent;border-color:#aec3ff;outline:0;-webkit-box-shadow:unset,0 0 0 0.25rem rgba(93,135,255,0.25);box-shadow:unset,0 0 0 0.25rem rgba(93,135,255,0.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::-webkit-input-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::-moz-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:-ms-input-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::-ms-input-placeholder{color:var(--bs-secondary-color);opacity:1}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-form-control-disabled-bg);opacity:1}.form-control::-webkit-file-upload-button{padding:8px 16px;margin:-8px -16px;-webkit-margin-end:16px;margin-inline-end:16px;color:#5A6A85;background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out}.form-control::file-selector-button{padding:8px 16px;margin:-8px -16px;-webkit-margin-end:16px;margin-inline-end:16px;color:#5A6A85;background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;-webkit-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{-webkit-transition:none;transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:var(--bs-secondary-bg)}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:8px 0;margin-bottom:0;line-height:1.5;color:var(--bs-body-color);background-color:transparent;border:solid transparent;border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2));padding:0.25rem 0.5rem;font-size:0.765625rem;border-radius:5px}.form-control-sm::-webkit-file-upload-button{padding:0.25rem 0.5rem;margin:-0.25rem -0.5rem;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}.form-control-sm::file-selector-button{padding:0.25rem 0.5rem;margin:-0.25rem -0.5rem;-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2));padding:0.5rem 1rem;font-size:1.09375rem;border-radius:15px}.form-control-lg::-webkit-file-upload-button{padding:0.5rem 1rem;margin:-0.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:0.5rem 1rem;margin:-0.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 16px + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.5em + 16px + calc(var(--bs-border-width) * 2));padding:8px}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:7px}.form-control-color::-webkit-color-swatch{border-radius:7px}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:8px 38px 8px 16px;-moz-padding-start:13px;font-size:0.875rem;font-weight:400;line-height:1.5;color:#5A6A85;background-color:transparent;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon,none);background-repeat:no-repeat;background-position:right 16px center;background-size:16px 12px;border:var(--bs-border-width) solid #DFE5EF;border-radius:7px;-webkit-box-shadow:unset;box-shadow:unset;-webkit-transition:border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{-webkit-transition:none;transition:none}}.form-select:focus{border-color:#aec3ff;outline:0;-webkit-box-shadow:unset,0 0 0 0.25rem rgba(93,135,255,0.25);box-shadow:unset,0 0 0 0.25rem rgba(93,135,255,0.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:16px;background-image:none}.form-select:disabled{background-color:var(--bs-form-control-disabled-bg)}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #5A6A85}.form-select-sm{padding-top:0.25rem;padding-bottom:0.25rem;padding-left:0.5rem;font-size:0.765625rem;border-radius:5px}.form-select-lg{padding-top:0.5rem;padding-bottom:0.5rem;padding-left:1rem;font-size:1.09375rem;border-radius:15px}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%235A6A85' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.188em;padding-left:1.688em;margin-bottom:0.125rem}.form-check .form-check-input{float:left;margin-left:-1.688em}.form-check-reverse{padding-right:1.688em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.688em;margin-left:0}.form-check-input{--bs-form-check-bg:transparent;width:1.188em;height:1.188em;margin-top:0.156em;vertical-align:top;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1.25px solid #dfe5ef;-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:0.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{-webkit-filter:brightness(90%);filter:brightness(90%)}.form-check-input:focus{border-color:#aec3ff;outline:0;-webkit-box-shadow:0 0 0 0.25rem rgba(93,135,255,0.25);box-shadow:0 0 0 0.25rem rgba(93,135,255,0.25)}.form-check-input:checked{background-color:#5D87FF;border-color:#5D87FF}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#5D87FF;border-color:#5D87FF;--bs-form-check-bg-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;-webkit-filter:none;filter:none;opacity:0.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:0.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;-webkit-transition:background-position 0.15s ease-in-out;transition:background-position 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{-webkit-transition:none;transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23aec3ff'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;-webkit-filter:none;filter:none;opacity:0.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 0.25rem rgba(93,135,255,0.25);box-shadow:0 0 0 1px #fff,0 0 0 0.25rem rgba(93,135,255,0.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 0.25rem rgba(93,135,255,0.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;background-color:#5D87FF;border:0;border-radius:1rem;-webkit-box-shadow:0 0.1rem 0.25rem rgba(0,0,0,0.1);box-shadow:0 0.1rem 0.25rem rgba(0,0,0,0.1);-webkit-transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#cedbff}.form-range::-webkit-slider-runnable-track{width:100%;height:0.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;-webkit-box-shadow:unset;box-shadow:unset}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#5D87FF;border:0;border-radius:1rem;box-shadow:0 0.1rem 0.25rem rgba(0,0,0,0.1);-moz-transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#cedbff}.form-range::-moz-range-track{width:100%;height:0.5rem;color:transparent;cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:transparent;border-radius:1rem;box-shadow:unset}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating:before:not(.form-control:disabled){position:absolute;top:var(--bs-border-width);left:var(--bs-border-width);width:calc(100% - (calc(calc(0.375em + 4px) + calc(0.75em + 8px))));height:1.875em;content:"";background-color:transparent;border-radius:7px}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem 16px;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transition:opacity 0.1s ease-in-out,-webkit-transform 0.1s ease-in-out;transition:opacity 0.1s ease-in-out,-webkit-transform 0.1s ease-in-out;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out;transition:opacity 0.1s ease-in-out,transform 0.1s ease-in-out,-webkit-transform 0.1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{-webkit-transition:none;transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem 16px}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:0.625rem}.form-floating>.form-control-plaintext:not(:-ms-input-placeholder),.form-floating>.form-control:not(:-ms-input-placeholder){padding-top:1.625rem;padding-bottom:0.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:0.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:0.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:0.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:0.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:not(:-ms-input-placeholder)~label{opacity:0.65;transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:0.65;-webkit-transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:0.65;-webkit-transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>.form-control:disabled~label{color:#2A3547}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:8px 16px;font-size:0.875rem;font-weight:400;line-height:1.5;color:#5A6A85;text-align:center;white-space:nowrap;background-color:#EAEFF4;border:var(--bs-border-width) solid #F6F9FC;border-radius:7px}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:0.5rem 1rem;font-size:1.09375rem;border-radius:15px}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:0.25rem 0.5rem;font-size:0.765625rem;border-radius:5px}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:54px}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:0.875em;color:var(--bs-success-text)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:0.25rem 0.5rem;margin-top:0.1rem;font-size:0.75rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:var(--bs-success);padding-right:calc(1.5em + 16px);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2313DEB9' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 4px) center;background-size:calc(0.75em + 8px) calc(0.75em + 8px)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:var(--bs-success);-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 16px);background-position:top calc(0.375em + 4px) right calc(0.375em + 4px)}.form-select.is-valid,.was-validated .form-select:valid{border-color:var(--bs-success)}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2313DEB9' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:78px;background-position:right 16px center,center right 38px;background-size:16px 12px,calc(0.75em + 8px) calc(0.75em + 8px)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:var(--bs-success);-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + 16px))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:var(--bs-success)}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:var(--bs-success-text)}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-success-rgb),0.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:var(--bs-success-text)}.form-check-inline .form-check-input~.valid-feedback{margin-left:0.5em}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-control:not(:focus):valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.was-validated .input-group>.form-select:not(:focus):valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:0.25rem;font-size:0.875em;color:var(--bs-danger-text)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:0.25rem 0.5rem;margin-top:0.1rem;font-size:0.75rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:var(--bs-danger);padding-right:calc(1.5em + 16px);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FA896B'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FA896B' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 4px) center;background-size:calc(0.75em + 8px) calc(0.75em + 8px)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:var(--bs-danger);-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 16px);background-position:top calc(0.375em + 4px) right calc(0.375em + 4px)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:var(--bs-danger)}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FA896B'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FA896B' stroke='none'/%3e%3c/svg%3e");padding-right:78px;background-position:right 16px center,center right 38px;background-size:16px 12px,calc(0.75em + 8px) calc(0.75em + 8px)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:var(--bs-danger);-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + 16px))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:var(--bs-danger)}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:var(--bs-danger-text)}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{-webkit-box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25);box-shadow:0 0 0 0.25rem rgba(var(--bs-danger-rgb),0.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:var(--bs-danger-text)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:0.5em}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-control:not(:focus):invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.was-validated .input-group>.form-select:not(:focus):invalid{z-index:4}.btn{--bs-btn-padding-x:16px;--bs-btn-padding-y:7px;--bs-btn-font-family:;--bs-btn-font-size:14;--bs-btn-font-weight:500;--bs-btn-line-height:1.5;--bs-btn-color:#5A6A85;--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:7px;--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:unset;--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb),.5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);-webkit-box-shadow:var(--bs-btn-box-shadow);box-shadow:var(--bs-btn-box-shadow);-webkit-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{-webkit-transition:none;transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;-webkit-box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;-webkit-box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow);box-shadow:var(--bs-btn-box-shadow),var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,.btn.active,.btn.show,.btn:first-child:active,:not(.btn-check)+.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color);-webkit-box-shadow:var(--bs-btn-active-shadow);box-shadow:var(--bs-btn-active-shadow)}.btn-check:checked+.btn:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible,.btn:first-child:active:focus-visible,:not(.btn-check)+.btn:active:focus-visible{-webkit-box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow);box-shadow:var(--bs-btn-active-shadow),var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);-webkit-box-shadow:none;box-shadow:none}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#5D87FF;--bs-btn-border-color:#5D87FF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#4f73d9;--bs-btn-hover-border-color:#4a6ccc;--bs-btn-focus-shadow-rgb:117,153,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4a6ccc;--bs-btn-active-border-color:#4665bf;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#5D87FF;--bs-btn-disabled-border-color:#5D87FF}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#49BEFF;--bs-btn-border-color:#49BEFF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#3ea2d9;--bs-btn-hover-border-color:#3a98cc;--bs-btn-focus-shadow-rgb:100,200,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#3a98cc;--bs-btn-active-border-color:#378fbf;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#49BEFF;--bs-btn-disabled-border-color:#49BEFF}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#13DEB9;--bs-btn-border-color:#13DEB9;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#10bd9d;--bs-btn-hover-border-color:#0fb294;--bs-btn-focus-shadow-rgb:54,227,196;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0fb294;--bs-btn-active-border-color:#0ea78b;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#13DEB9;--bs-btn-disabled-border-color:#13DEB9}.btn-info{--bs-btn-color:#fff;--bs-btn-bg:#539BFF;--bs-btn-border-color:#539BFF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#4784d9;--bs-btn-hover-border-color:#427ccc;--bs-btn-focus-shadow-rgb:109,170,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#427ccc;--bs-btn-active-border-color:#3e74bf;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#539BFF;--bs-btn-disabled-border-color:#539BFF}.btn-warning{--bs-btn-color:#fff;--bs-btn-bg:#FFAE1F;--bs-btn-border-color:#FFAE1F;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#d9941a;--bs-btn-hover-border-color:#cc8b19;--bs-btn-focus-shadow-rgb:255,186,65;--bs-btn-active-color:#fff;--bs-btn-active-bg:#cc8b19;--bs-btn-active-border-color:#bf8317;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#FFAE1F;--bs-btn-disabled-border-color:#FFAE1F}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#FA896B;--bs-btn-border-color:#FA896B;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#d5745b;--bs-btn-hover-border-color:#c86e56;--bs-btn-focus-shadow-rgb:251,155,129;--bs-btn-active-color:#fff;--bs-btn-active-bg:#c86e56;--bs-btn-active-border-color:#bc6750;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#FA896B;--bs-btn-disabled-border-color:#FA896B}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#F6F9FC;--bs-btn-border-color:#F6F9FC;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d1d4d6;--bs-btn-hover-border-color:#c5c7ca;--bs-btn-focus-shadow-rgb:209,212,214;--bs-btn-active-color:#000;--bs-btn-active-bg:#c5c7ca;--bs-btn-active-border-color:#b9bbbd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#F6F9FC;--bs-btn-disabled-border-color:#F6F9FC}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#2A3547;--bs-btn-border-color:#2A3547;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#4a5363;--bs-btn-hover-border-color:#3f4959;--bs-btn-focus-shadow-rgb:74,83,99;--bs-btn-active-color:#fff;--bs-btn-active-bg:#555d6c;--bs-btn-active-border-color:#3f4959;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#2A3547;--bs-btn-disabled-border-color:#2A3547}.btn-muted{--bs-btn-color:#fff;--bs-btn-bg:#5A6A85;--bs-btn-border-color:#5A6A85;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#4d5a71;--bs-btn-hover-border-color:#48556a;--bs-btn-focus-shadow-rgb:115,128,151;--bs-btn-active-color:#fff;--bs-btn-active-bg:#48556a;--bs-btn-active-border-color:#445064;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#5A6A85;--bs-btn-disabled-border-color:#5A6A85}.btn-indigo{--bs-btn-color:#fff;--bs-btn-bg:#6610f2;--bs-btn-border-color:#6610f2;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#570ece;--bs-btn-hover-border-color:#520dc2;--bs-btn-focus-shadow-rgb:125,52,244;--bs-btn-active-color:#fff;--bs-btn-active-bg:#520dc2;--bs-btn-active-border-color:#4d0cb6;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6610f2;--bs-btn-disabled-border-color:#6610f2}.btn-light-primary{--bs-btn-color:#000;--bs-btn-bg:#ECF2FF;--bs-btn-border-color:#ECF2FF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eff4ff;--bs-btn-hover-border-color:#eef3ff;--bs-btn-focus-shadow-rgb:201,206,217;--bs-btn-active-color:#000;--bs-btn-active-bg:#f0f5ff;--bs-btn-active-border-color:#eef3ff;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ECF2FF;--bs-btn-disabled-border-color:#ECF2FF}.btn-light-secondary{--bs-btn-color:#000;--bs-btn-bg:#E8F7FF;--bs-btn-border-color:#E8F7FF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ebf8ff;--bs-btn-hover-border-color:#eaf8ff;--bs-btn-focus-shadow-rgb:197,210,217;--bs-btn-active-color:#000;--bs-btn-active-bg:#edf9ff;--bs-btn-active-border-color:#eaf8ff;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#E8F7FF;--bs-btn-disabled-border-color:#E8F7FF}.btn-light-info{--bs-btn-color:#000;--bs-btn-bg:#EBF3FE;--bs-btn-border-color:#EBF3FE;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eef5fe;--bs-btn-hover-border-color:#edf4fe;--bs-btn-focus-shadow-rgb:200,207,216;--bs-btn-active-color:#000;--bs-btn-active-bg:#eff5fe;--bs-btn-active-border-color:#edf4fe;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#EBF3FE;--bs-btn-disabled-border-color:#EBF3FE}.btn-light-success{--bs-btn-color:#000;--bs-btn-bg:#E6FFFA;--bs-btn-border-color:#E6FFFA;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eafffb;--bs-btn-hover-border-color:#e9fffb;--bs-btn-focus-shadow-rgb:196,217,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#ebfffb;--bs-btn-active-border-color:#e9fffb;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#E6FFFA;--bs-btn-disabled-border-color:#E6FFFA}.btn-light-warning{--bs-btn-color:#000;--bs-btn-bg:#FEF5E5;--bs-btn-border-color:#FEF5E5;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#fef7e9;--bs-btn-hover-border-color:#fef6e8;--bs-btn-focus-shadow-rgb:216,208,195;--bs-btn-active-color:#000;--bs-btn-active-bg:#fef7ea;--bs-btn-active-border-color:#fef6e8;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#FEF5E5;--bs-btn-disabled-border-color:#FEF5E5}.btn-light-danger{--bs-btn-color:#000;--bs-btn-bg:#FBF2EF;--bs-btn-border-color:#FBF2EF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#fcf4f1;--bs-btn-hover-border-color:#fbf3f1;--bs-btn-focus-shadow-rgb:213,206,203;--bs-btn-active-color:#000;--bs-btn-active-bg:#fcf5f2;--bs-btn-active-border-color:#fbf3f1;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#FBF2EF;--bs-btn-disabled-border-color:#FBF2EF}.btn-light-indigo{--bs-btn-color:#000;--bs-btn-bg:#EBF3FE;--bs-btn-border-color:#EBF3FE;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#eef5fe;--bs-btn-hover-border-color:#edf4fe;--bs-btn-focus-shadow-rgb:200,207,216;--bs-btn-active-color:#000;--bs-btn-active-bg:#eff5fe;--bs-btn-active-border-color:#edf4fe;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#EBF3FE;--bs-btn-disabled-border-color:#EBF3FE}.btn-dark-light{--bs-btn-color:#fff;--bs-btn-bg:#2A3547;--bs-btn-border-color:#2A3547;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#242d3c;--bs-btn-hover-border-color:#222a39;--bs-btn-focus-shadow-rgb:74,83,99;--bs-btn-active-color:#fff;--bs-btn-active-bg:#222a39;--bs-btn-active-border-color:#202835;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#2A3547;--bs-btn-disabled-border-color:#2A3547}.btn-light-gray{--bs-btn-color:#000;--bs-btn-bg:#F6F9FC;--bs-btn-border-color:#F6F9FC;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f7fafc;--bs-btn-hover-border-color:#f7fafc;--bs-btn-focus-shadow-rgb:209,212,214;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8fafd;--bs-btn-active-border-color:#f7fafc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#F6F9FC;--bs-btn-disabled-border-color:#F6F9FC}.btn-outline-primary{--bs-btn-color:#5D87FF;--bs-btn-border-color:#5D87FF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5D87FF;--bs-btn-hover-border-color:#5D87FF;--bs-btn-focus-shadow-rgb:93,135,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#5D87FF;--bs-btn-active-border-color:#5D87FF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#5D87FF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#5D87FF;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#49BEFF;--bs-btn-border-color:#49BEFF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#49BEFF;--bs-btn-hover-border-color:#49BEFF;--bs-btn-focus-shadow-rgb:73,190,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#49BEFF;--bs-btn-active-border-color:#49BEFF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#49BEFF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#49BEFF;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#13DEB9;--bs-btn-border-color:#13DEB9;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#13DEB9;--bs-btn-hover-border-color:#13DEB9;--bs-btn-focus-shadow-rgb:19,222,185;--bs-btn-active-color:#fff;--bs-btn-active-bg:#13DEB9;--bs-btn-active-border-color:#13DEB9;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#13DEB9;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#13DEB9;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#539BFF;--bs-btn-border-color:#539BFF;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#539BFF;--bs-btn-hover-border-color:#539BFF;--bs-btn-focus-shadow-rgb:83,155,255;--bs-btn-active-color:#fff;--bs-btn-active-bg:#539BFF;--bs-btn-active-border-color:#539BFF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#539BFF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#539BFF;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#FFAE1F;--bs-btn-border-color:#FFAE1F;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#FFAE1F;--bs-btn-hover-border-color:#FFAE1F;--bs-btn-focus-shadow-rgb:255,174,31;--bs-btn-active-color:#fff;--bs-btn-active-bg:#FFAE1F;--bs-btn-active-border-color:#FFAE1F;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#FFAE1F;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#FFAE1F;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#FA896B;--bs-btn-border-color:#FA896B;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#FA896B;--bs-btn-hover-border-color:#FA896B;--bs-btn-focus-shadow-rgb:250,137,107;--bs-btn-active-color:#fff;--bs-btn-active-bg:#FA896B;--bs-btn-active-border-color:#FA896B;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#FA896B;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#FA896B;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#F6F9FC;--bs-btn-border-color:#F6F9FC;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#F6F9FC;--bs-btn-hover-border-color:#F6F9FC;--bs-btn-focus-shadow-rgb:246,249,252;--bs-btn-active-color:#000;--bs-btn-active-bg:#F6F9FC;--bs-btn-active-border-color:#F6F9FC;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#F6F9FC;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#F6F9FC;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#2A3547;--bs-btn-border-color:#2A3547;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#2A3547;--bs-btn-hover-border-color:#2A3547;--bs-btn-focus-shadow-rgb:42,53,71;--bs-btn-active-color:#fff;--bs-btn-active-bg:#2A3547;--bs-btn-active-border-color:#2A3547;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#2A3547;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#2A3547;--bs-gradient:none}.btn-outline-muted{--bs-btn-color:#5A6A85;--bs-btn-border-color:#5A6A85;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5A6A85;--bs-btn-hover-border-color:#5A6A85;--bs-btn-focus-shadow-rgb:90,106,133;--bs-btn-active-color:#fff;--bs-btn-active-bg:#5A6A85;--bs-btn-active-border-color:#5A6A85;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#5A6A85;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#5A6A85;--bs-gradient:none}.btn-outline-indigo{--bs-btn-color:#6610f2;--bs-btn-border-color:#6610f2;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6610f2;--bs-btn-hover-border-color:#6610f2;--bs-btn-focus-shadow-rgb:102,16,242;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6610f2;--bs-btn-active-border-color:#6610f2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#6610f2;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6610f2;--bs-gradient:none}.btn-outline-light-primary{--bs-btn-color:#ECF2FF;--bs-btn-border-color:#ECF2FF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ECF2FF;--bs-btn-hover-border-color:#ECF2FF;--bs-btn-focus-shadow-rgb:236,242,255;--bs-btn-active-color:#000;--bs-btn-active-bg:#ECF2FF;--bs-btn-active-border-color:#ECF2FF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#ECF2FF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ECF2FF;--bs-gradient:none}.btn-outline-light-secondary{--bs-btn-color:#E8F7FF;--bs-btn-border-color:#E8F7FF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#E8F7FF;--bs-btn-hover-border-color:#E8F7FF;--bs-btn-focus-shadow-rgb:232,247,255;--bs-btn-active-color:#000;--bs-btn-active-bg:#E8F7FF;--bs-btn-active-border-color:#E8F7FF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#E8F7FF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#E8F7FF;--bs-gradient:none}.btn-outline-light-info{--bs-btn-color:#EBF3FE;--bs-btn-border-color:#EBF3FE;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#EBF3FE;--bs-btn-hover-border-color:#EBF3FE;--bs-btn-focus-shadow-rgb:235,243,254;--bs-btn-active-color:#000;--bs-btn-active-bg:#EBF3FE;--bs-btn-active-border-color:#EBF3FE;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#EBF3FE;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#EBF3FE;--bs-gradient:none}.btn-outline-light-success{--bs-btn-color:#E6FFFA;--bs-btn-border-color:#E6FFFA;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#E6FFFA;--bs-btn-hover-border-color:#E6FFFA;--bs-btn-focus-shadow-rgb:230,255,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#E6FFFA;--bs-btn-active-border-color:#E6FFFA;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#E6FFFA;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#E6FFFA;--bs-gradient:none}.btn-outline-light-warning{--bs-btn-color:#FEF5E5;--bs-btn-border-color:#FEF5E5;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#FEF5E5;--bs-btn-hover-border-color:#FEF5E5;--bs-btn-focus-shadow-rgb:254,245,229;--bs-btn-active-color:#000;--bs-btn-active-bg:#FEF5E5;--bs-btn-active-border-color:#FEF5E5;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#FEF5E5;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#FEF5E5;--bs-gradient:none}.btn-outline-light-danger{--bs-btn-color:#FBF2EF;--bs-btn-border-color:#FBF2EF;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#FBF2EF;--bs-btn-hover-border-color:#FBF2EF;--bs-btn-focus-shadow-rgb:251,242,239;--bs-btn-active-color:#000;--bs-btn-active-bg:#FBF2EF;--bs-btn-active-border-color:#FBF2EF;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#FBF2EF;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#FBF2EF;--bs-gradient:none}.btn-outline-light-indigo{--bs-btn-color:#EBF3FE;--bs-btn-border-color:#EBF3FE;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#EBF3FE;--bs-btn-hover-border-color:#EBF3FE;--bs-btn-focus-shadow-rgb:235,243,254;--bs-btn-active-color:#000;--bs-btn-active-bg:#EBF3FE;--bs-btn-active-border-color:#EBF3FE;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#EBF3FE;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#EBF3FE;--bs-gradient:none}.btn-outline-dark-light{--bs-btn-color:#2A3547;--bs-btn-border-color:#2A3547;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#2A3547;--bs-btn-hover-border-color:#2A3547;--bs-btn-focus-shadow-rgb:42,53,71;--bs-btn-active-color:#fff;--bs-btn-active-bg:#2A3547;--bs-btn-active-border-color:#2A3547;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#2A3547;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#2A3547;--bs-gradient:none}.btn-outline-light-gray{--bs-btn-color:#F6F9FC;--bs-btn-border-color:#F6F9FC;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#F6F9FC;--bs-btn-hover-border-color:#F6F9FC;--bs-btn-focus-shadow-rgb:246,249,252;--bs-btn-active-color:#000;--bs-btn-active-bg:#F6F9FC;--bs-btn-active-border-color:#F6F9FC;--bs-btn-active-shadow:inset 0 3px 5px rgba(0,0,0,0.125);--bs-btn-disabled-color:#F6F9FC;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#F6F9FC;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#2A3547;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:117,153,255;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.09375rem;--bs-btn-border-radius:9px}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.765625rem;--bs-btn-border-radius:5px}.fade{-webkit-transition:opacity 0.15s linear;transition:opacity 0.15s linear}@media (prefers-reduced-motion:reduce){.fade{-webkit-transition:none;transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;-webkit-transition:height 0.35s ease;transition:height 0.35s ease}@media (prefers-reduced-motion:reduce){.collapsing{-webkit-transition:none;transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;-webkit-transition:width 0.35s ease;transition:width 0.35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{-webkit-transition:none;transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:0.875rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:transparent;--bs-dropdown-border-radius:7px;--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(7px - var(--bs-border-width));--bs-dropdown-divider-bg:transparent;--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:rgba(145,158,171,0.2) 0px 0px 2px 0px,rgba(145,158,171,0.12) 0px 12px 24px -4px;--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:#F6F9FC;--bs-dropdown-link-active-color:#2A3547;--bs-dropdown-link-active-bg:#F6F9FC;--bs-dropdown-link-disabled-color:#5A6A85;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:10px;--bs-dropdown-header-color:#2A3547;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius);-webkit-box-shadow:var(--bs-dropdown-box-shadow);box-shadow:var(--bs-dropdown-box-shadow)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle:after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle:after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropend .dropdown-toggle:empty:after{margin-left:0}.dropend .dropdown-toggle:after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle:after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:""}.dropstart .dropdown-toggle:after{display:none}.dropstart .dropdown-toggle:before{display:inline-block;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropstart .dropdown-toggle:empty:after{margin-left:0}.dropstart .dropdown-toggle:before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.765625rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#DFE5EF;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:transparent;--bs-dropdown-box-shadow:;--bs-dropdown-link-color:#DFE5EF;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:transparent;--bs-dropdown-link-hover-bg:rgba(255,255,255,0.15);--bs-dropdown-link-active-color:#2A3547;--bs-dropdown-link-active-bg:#F6F9FC;--bs-dropdown-link-disabled-color:#5A6A85;--bs-dropdown-header-color:#5A6A85}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:7px}.btn-group>.btn-group:not(:first-child),.btn-group>:not(.btn-check:first-child)+.btn{margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:12px;padding-left:12px}.dropdown-toggle-split:after,.dropend .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropstart .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:0.375rem;padding-left:0.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:0.75rem;padding-left:0.75rem}.btn-group.show .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.show .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-size:1rem;--bs-nav-link-font-weight:400;--bs-nav-link-color:#2A3547;--bs-nav-link-hover-color:#2A3547;--bs-nav-link-disabled-color:var(--bs-secondary-color);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{-webkit-transition:none;transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:0;--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:10px;--bs-nav-tabs-link-hover-border-color:var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color:#fff;--bs-nav-tabs-link-active-bg:#5D87FF;--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) #5D87FF;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));background:none;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:7px;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#5D87FF}.nav-pills .nav-link{background:none;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:#2a3547;--bs-navbar-hover-color:#5d87ff;--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb),0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-padding-y:0.3359375rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.09375rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb),1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.09375rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2890, 106, 133, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb),0.15);--bs-navbar-toggler-border-radius:7px;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:inherit;flex-wrap:inherit;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-size:1rem;--bs-nav-link-font-weight:400;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:0.5rem;padding-bottom:0.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);-webkit-transition:var(--bs-navbar-toggler-transition);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{-webkit-transition:none;transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;-webkit-box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:none;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:#dfe5ef;--bs-navbar-hover-color:#5d87ff;--bs-navbar-disabled-color:rgba(255,255,255,0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255,255,255,0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dfe5ef' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar{--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dfe5ef' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:30px;--bs-card-spacer-x:30px;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color:#2A3547;--bs-card-subtitle-color:#2A3547;--bs-card-border-width:0px;--bs-card-border-color:#ebf1f6;--bs-card-border-radius:7px;--bs-card-box-shadow:rgba(145,158,171,0.2) 0px 0px 2px 0px,rgba(145,158,171,0.12) 0px 12px 24px -4px;--bs-card-inner-border-radius:7px;--bs-card-cap-padding-y:15px;--bs-card-cap-padding-x:30px;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb),0.03);--bs-card-cap-color:;--bs-card-height:;--bs-card-color:;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:12px;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius);-webkit-box-shadow:var(--bs-card-box-shadow);box-shadow:var(--bs-card-box-shadow)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5 * var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-0.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5 * var(--bs-card-cap-padding-x));margin-left:calc(-0.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:var(--bs-body-color);--bs-accordion-bg:var(--bs-body-bg);--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-border-radius);--bs-accordion-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235A6A85'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234a6ccc'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#aec3ff;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(93,135,255,0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:var(--bs-primary-text);--bs-accordion-active-bg:var(--bs-primary-bg-subtle)}.accordion-button{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:0.875rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;-webkit-transition:var(--bs-accordion-transition);transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{-webkit-transition:none;transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);-webkit-box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color);box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed):after{background-image:var(--bs-accordion-btn-active-icon);-webkit-transform:var(--bs-accordion-btn-icon-transform);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button:after{-ms-flex-negative:0;flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);-webkit-transition:var(--bs-accordion-btn-icon-transition);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button:after{-webkit-transition:none;transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;-webkit-box-shadow:var(--bs-accordion-btn-focus-box-shadow);box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button:after{--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239eb7ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239eb7ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg:;--bs-breadcrumb-border-radius:;--bs-breadcrumb-divider-color:var(--bs-secondary-color);--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:var(--bs-secondary-color);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider,"/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:0.875rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-body-bg);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-tertiary-bg);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-secondary-bg);--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(93,135,255,0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#5D87FF;--bs-pagination-active-border-color:#5D87FF;--bs-pagination-disabled-color:var(--bs-secondary-color);--bs-pagination-disabled-bg:var(--bs-secondary-bg);--bs-pagination-disabled-border-color:var(--bs-border-color);display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);-webkit-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,-webkit-box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{-webkit-transition:none;transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;-webkit-box-shadow:var(--bs-pagination-focus-box-shadow);box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(var(--bs-border-width) * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.09375rem;--bs-pagination-border-radius:15px}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.765625rem;--bs-pagination-border-radius:5px}.badge{--bs-badge-padding-x:10px;--bs-badge-padding-y:5px;--bs-badge-font-size:0.875rem;--bs-badge-font-weight:400;--bs-badge-color:#fff;--bs-badge-border-radius:4px;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:7px;--bs-alert-link-color:inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:500;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:var(--bs-primary-text);--bs-alert-bg:var(--bs-primary-bg-subtle);--bs-alert-border-color:var(--bs-primary-border-subtle);--bs-alert-link-color:var(--bs-primary-text)}.alert-secondary{--bs-alert-color:var(--bs-secondary-text);--bs-alert-bg:var(--bs-secondary-bg-subtle);--bs-alert-border-color:var(--bs-secondary-border-subtle);--bs-alert-link-color:var(--bs-secondary-text)}.alert-success{--bs-alert-color:var(--bs-success-text);--bs-alert-bg:var(--bs-success-bg-subtle);--bs-alert-border-color:var(--bs-success-border-subtle);--bs-alert-link-color:var(--bs-success-text)}.alert-info{--bs-alert-color:var(--bs-info-text);--bs-alert-bg:var(--bs-info-bg-subtle);--bs-alert-border-color:var(--bs-info-border-subtle);--bs-alert-link-color:var(--bs-info-text)}.alert-warning{--bs-alert-color:var(--bs-warning-text);--bs-alert-bg:var(--bs-warning-bg-subtle);--bs-alert-border-color:var(--bs-warning-border-subtle);--bs-alert-link-color:var(--bs-warning-text)}.alert-danger{--bs-alert-color:var(--bs-danger-text);--bs-alert-bg:var(--bs-danger-bg-subtle);--bs-alert-border-color:var(--bs-danger-border-subtle);--bs-alert-link-color:var(--bs-danger-text)}.alert-light{--bs-alert-color:var(--bs-light-text);--bs-alert-bg:var(--bs-light-bg-subtle);--bs-alert-border-color:var(--bs-light-border-subtle);--bs-alert-link-color:var(--bs-light-text)}.alert-dark{--bs-alert-color:var(--bs-dark-text);--bs-alert-bg:var(--bs-dark-bg-subtle);--bs-alert-border-color:var(--bs-dark-border-subtle);--bs-alert-link-color:var(--bs-dark-text)}.alert-muted{--bs-alert-color:var(--bs-muted-text);--bs-alert-bg:var(--bs-muted-bg-subtle);--bs-alert-border-color:var(--bs-muted-border-subtle);--bs-alert-link-color:var(--bs-muted-text)}.alert-indigo{--bs-alert-color:var(--bs-indigo-text);--bs-alert-bg:var(--bs-indigo-bg-subtle);--bs-alert-border-color:var(--bs-indigo-border-subtle);--bs-alert-link-color:var(--bs-indigo-text)}.alert-light-primary{--bs-alert-color:var(--bs-light-primary-text);--bs-alert-bg:var(--bs-light-primary-bg-subtle);--bs-alert-border-color:var(--bs-light-primary-border-subtle);--bs-alert-link-color:var(--bs-light-primary-text)}.alert-light-secondary{--bs-alert-color:var(--bs-light-secondary-text);--bs-alert-bg:var(--bs-light-secondary-bg-subtle);--bs-alert-border-color:var(--bs-light-secondary-border-subtle);--bs-alert-link-color:var(--bs-light-secondary-text)}.alert-light-info{--bs-alert-color:var(--bs-light-info-text);--bs-alert-bg:var(--bs-light-info-bg-subtle);--bs-alert-border-color:var(--bs-light-info-border-subtle);--bs-alert-link-color:var(--bs-light-info-text)}.alert-light-success{--bs-alert-color:var(--bs-light-success-text);--bs-alert-bg:var(--bs-light-success-bg-subtle);--bs-alert-border-color:var(--bs-light-success-border-subtle);--bs-alert-link-color:var(--bs-light-success-text)}.alert-light-warning{--bs-alert-color:var(--bs-light-warning-text);--bs-alert-bg:var(--bs-light-warning-bg-subtle);--bs-alert-border-color:var(--bs-light-warning-border-subtle);--bs-alert-link-color:var(--bs-light-warning-text)}.alert-light-danger{--bs-alert-color:var(--bs-light-danger-text);--bs-alert-bg:var(--bs-light-danger-bg-subtle);--bs-alert-border-color:var(--bs-light-danger-border-subtle);--bs-alert-link-color:var(--bs-light-danger-text)}.alert-light-indigo{--bs-alert-color:var(--bs-light-indigo-text);--bs-alert-bg:var(--bs-light-indigo-bg-subtle);--bs-alert-border-color:var(--bs-light-indigo-border-subtle);--bs-alert-link-color:var(--bs-light-indigo-text)}.alert-dark-light{--bs-alert-color:var(--bs-dark-light-text);--bs-alert-bg:var(--bs-dark-light-bg-subtle);--bs-alert-border-color:var(--bs-dark-light-border-subtle);--bs-alert-link-color:var(--bs-dark-light-text)}.alert-light-gray{--bs-alert-color:var(--bs-light-gray-text);--bs-alert-bg:var(--bs-light-gray-bg-subtle);--bs-alert-border-color:var(--bs-light-gray-border-subtle);--bs-alert-link-color:var(--bs-light-gray-text)}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:0.65625rem;--bs-progress-bg:var(--bs-secondary-bg);--bs-progress-border-radius:var(--bs-border-radius);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#5D87FF;--bs-progress-bar-transition:width 0.6s ease;display:-webkit-box;display:-ms-flexbox;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);-webkit-box-shadow:var(--bs-progress-box-shadow);box-shadow:var(--bs-progress-box-shadow)}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);-webkit-transition:var(--bs-progress-bar-transition);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{-webkit-transition:none;transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{--bs-list-group-color:var(--bs-body-color);--bs-list-group-bg:var(--bs-body-bg);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-border-radius);--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:var(--bs-secondary-color);--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-tertiary-bg);--bs-list-group-action-active-color:var(--bs-body-color);--bs-list-group-action-active-bg:var(--bs-secondary-bg);--bs-list-group-disabled-color:var(--bs-secondary-color);--bs-list-group-disabled-bg:var(--bs-body-bg);--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#5D87FF;--bs-list-group-active-border-color:#5D87FF;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item:before{content:counters(section,".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1 * var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color:var(--bs-primary-text);--bs-list-group-bg:var(--bs-primary-bg-subtle);--bs-list-group-border-color:var(--bs-primary-border-subtle)}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-primary-border-subtle)}.list-group-item-primary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-primary-text);--bs-list-group-active-border-color:var(--bs-primary-text)}.list-group-item-secondary{--bs-list-group-color:var(--bs-secondary-text);--bs-list-group-bg:var(--bs-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-secondary-border-subtle)}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-secondary-border-subtle)}.list-group-item-secondary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-secondary-text);--bs-list-group-active-border-color:var(--bs-secondary-text)}.list-group-item-success{--bs-list-group-color:var(--bs-success-text);--bs-list-group-bg:var(--bs-success-bg-subtle);--bs-list-group-border-color:var(--bs-success-border-subtle)}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-success-border-subtle)}.list-group-item-success.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-success-text);--bs-list-group-active-border-color:var(--bs-success-text)}.list-group-item-info{--bs-list-group-color:var(--bs-info-text);--bs-list-group-bg:var(--bs-info-bg-subtle);--bs-list-group-border-color:var(--bs-info-border-subtle)}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-info-border-subtle)}.list-group-item-info.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-info-text);--bs-list-group-active-border-color:var(--bs-info-text)}.list-group-item-warning{--bs-list-group-color:var(--bs-warning-text);--bs-list-group-bg:var(--bs-warning-bg-subtle);--bs-list-group-border-color:var(--bs-warning-border-subtle)}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-warning-border-subtle)}.list-group-item-warning.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-warning-text);--bs-list-group-active-border-color:var(--bs-warning-text)}.list-group-item-danger{--bs-list-group-color:var(--bs-danger-text);--bs-list-group-bg:var(--bs-danger-bg-subtle);--bs-list-group-border-color:var(--bs-danger-border-subtle)}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-danger-border-subtle)}.list-group-item-danger.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-danger-text);--bs-list-group-active-border-color:var(--bs-danger-text)}.list-group-item-light{--bs-list-group-color:var(--bs-light-text);--bs-list-group-bg:var(--bs-light-bg-subtle);--bs-list-group-border-color:var(--bs-light-border-subtle)}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-border-subtle)}.list-group-item-light.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-text);--bs-list-group-active-border-color:var(--bs-light-text)}.list-group-item-dark{--bs-list-group-color:var(--bs-dark-text);--bs-list-group-bg:var(--bs-dark-bg-subtle);--bs-list-group-border-color:var(--bs-dark-border-subtle)}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-border-subtle)}.list-group-item-dark.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-dark-text);--bs-list-group-active-border-color:var(--bs-dark-text)}.list-group-item-muted{--bs-list-group-color:var(--bs-muted-text);--bs-list-group-bg:var(--bs-muted-bg-subtle);--bs-list-group-border-color:var(--bs-muted-border-subtle)}.list-group-item-muted.list-group-item-action:focus,.list-group-item-muted.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-muted-border-subtle)}.list-group-item-muted.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-muted-text);--bs-list-group-active-border-color:var(--bs-muted-text)}.list-group-item-indigo{--bs-list-group-color:var(--bs-indigo-text);--bs-list-group-bg:var(--bs-indigo-bg-subtle);--bs-list-group-border-color:var(--bs-indigo-border-subtle)}.list-group-item-indigo.list-group-item-action:focus,.list-group-item-indigo.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-indigo-border-subtle)}.list-group-item-indigo.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-indigo-text);--bs-list-group-active-border-color:var(--bs-indigo-text)}.list-group-item-light-primary{--bs-list-group-color:var(--bs-light-primary-text);--bs-list-group-bg:var(--bs-light-primary-bg-subtle);--bs-list-group-border-color:var(--bs-light-primary-border-subtle)}.list-group-item-light-primary.list-group-item-action:focus,.list-group-item-light-primary.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-primary-border-subtle)}.list-group-item-light-primary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-primary-text);--bs-list-group-active-border-color:var(--bs-light-primary-text)}.list-group-item-light-secondary{--bs-list-group-color:var(--bs-light-secondary-text);--bs-list-group-bg:var(--bs-light-secondary-bg-subtle);--bs-list-group-border-color:var(--bs-light-secondary-border-subtle)}.list-group-item-light-secondary.list-group-item-action:focus,.list-group-item-light-secondary.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-secondary-border-subtle)}.list-group-item-light-secondary.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-secondary-text);--bs-list-group-active-border-color:var(--bs-light-secondary-text)}.list-group-item-light-info{--bs-list-group-color:var(--bs-light-info-text);--bs-list-group-bg:var(--bs-light-info-bg-subtle);--bs-list-group-border-color:var(--bs-light-info-border-subtle)}.list-group-item-light-info.list-group-item-action:focus,.list-group-item-light-info.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-info-border-subtle)}.list-group-item-light-info.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-info-text);--bs-list-group-active-border-color:var(--bs-light-info-text)}.list-group-item-light-success{--bs-list-group-color:var(--bs-light-success-text);--bs-list-group-bg:var(--bs-light-success-bg-subtle);--bs-list-group-border-color:var(--bs-light-success-border-subtle)}.list-group-item-light-success.list-group-item-action:focus,.list-group-item-light-success.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-success-border-subtle)}.list-group-item-light-success.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-success-text);--bs-list-group-active-border-color:var(--bs-light-success-text)}.list-group-item-light-warning{--bs-list-group-color:var(--bs-light-warning-text);--bs-list-group-bg:var(--bs-light-warning-bg-subtle);--bs-list-group-border-color:var(--bs-light-warning-border-subtle)}.list-group-item-light-warning.list-group-item-action:focus,.list-group-item-light-warning.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-warning-border-subtle)}.list-group-item-light-warning.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-warning-text);--bs-list-group-active-border-color:var(--bs-light-warning-text)}.list-group-item-light-danger{--bs-list-group-color:var(--bs-light-danger-text);--bs-list-group-bg:var(--bs-light-danger-bg-subtle);--bs-list-group-border-color:var(--bs-light-danger-border-subtle)}.list-group-item-light-danger.list-group-item-action:focus,.list-group-item-light-danger.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-danger-border-subtle)}.list-group-item-light-danger.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-danger-text);--bs-list-group-active-border-color:var(--bs-light-danger-text)}.list-group-item-light-indigo{--bs-list-group-color:var(--bs-light-indigo-text);--bs-list-group-bg:var(--bs-light-indigo-bg-subtle);--bs-list-group-border-color:var(--bs-light-indigo-border-subtle)}.list-group-item-light-indigo.list-group-item-action:focus,.list-group-item-light-indigo.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-indigo-border-subtle)}.list-group-item-light-indigo.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-indigo-text);--bs-list-group-active-border-color:var(--bs-light-indigo-text)}.list-group-item-dark-light{--bs-list-group-color:var(--bs-dark-light-text);--bs-list-group-bg:var(--bs-dark-light-bg-subtle);--bs-list-group-border-color:var(--bs-dark-light-border-subtle)}.list-group-item-dark-light.list-group-item-action:focus,.list-group-item-dark-light.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-dark-light-border-subtle)}.list-group-item-dark-light.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-dark-light-text);--bs-list-group-active-border-color:var(--bs-dark-light-text)}.list-group-item-light-gray{--bs-list-group-color:var(--bs-light-gray-text);--bs-list-group-bg:var(--bs-light-gray-bg-subtle);--bs-list-group-border-color:var(--bs-light-gray-border-subtle)}.list-group-item-light-gray.list-group-item-action:focus,.list-group-item-light-gray.list-group-item-action:hover{--bs-list-group-action-hover-color:var(--bs-emphasis-color);--bs-list-group-action-hover-bg:var(--bs-light-gray-border-subtle)}.list-group-item-light-gray.list-group-item-action:active{--bs-list-group-active-color:var(--bs-emphasis-color);--bs-list-group-active-bg:var(--bs-light-gray-text);--bs-list-group-active-border-color:var(--bs-light-gray-text)}.btn-close{--bs-btn-close-color:#000;--bs-btn-close-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity:0.5;--bs-btn-close-hover-opacity:0.75;--bs-btn-close-focus-shadow:0 0 0 0.25rem rgba(93,135,255,0.25);--bs-btn-close-focus-opacity:1;--bs-btn-close-disabled-opacity:0.25;--bs-btn-close-white-filter:invert(1) grayscale(100%) brightness(200%);-webkit-box-sizing:content-box;box-sizing:content-box;width:1em;height:1em;padding:0.25em 0.25em;color:var(--bs-btn-close-color);background:transparent var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:7px;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;-webkit-box-shadow:var(--bs-btn-close-focus-shadow);box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{-webkit-filter:var(--bs-btn-close-white-filter);filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{-webkit-filter:var(--bs-btn-close-white-filter);filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:24px;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color:;--bs-toast-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:var(--bs-border-radius);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-secondary-color);--bs-toast-header-bg:rgba(var(--bs-body-bg-rgb),0.85);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);-webkit-box-shadow:var(--bs-toast-box-shadow);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;position:absolute;z-index:var(--bs-toast-zindex);width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5 * var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color:;--bs-modal-bg:var(--bs-body-bg);--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:0;--bs-modal-border-radius:var(--bs-border-radius-lg);--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-modal-inner-border-radius:calc(var(--bs-border-radius-lg) - 0);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:0;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg:;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:0;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform 0.3s ease-out;transition:-webkit-transform 0.3s ease-out;transition:transform 0.3s ease-out;transition:transform 0.3s ease-out,-webkit-transform 0.3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{-webkit-transition:none;transition:none}}.modal.show .modal-dialog{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);-webkit-box-shadow:var(--bs-modal-box-shadow);box-shadow:var(--bs-modal-box-shadow);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5);margin:calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * 0.5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0px 15px 30px rgba(0,0,0,0.12)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin:;--bs-tooltip-font-size:0.75rem;--bs-tooltip-color:var(--bs-body-bg);--bs-tooltip-bg:#2A3547;--bs-tooltip-border-radius:var(--bs-border-radius);--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow:before,.bs-tooltip-top .tooltip-arrow:before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow:before,.bs-tooltip-end .tooltip-arrow:before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow:before,.bs-tooltip-bottom .tooltip-arrow:before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow:before,.bs-tooltip-start .tooltip-arrow:before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.765625rem;--bs-popover-bg:var(--bs-body-bg);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-border-radius-lg);--bs-popover-inner-border-radius:calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow:0px 15px 30px rgba(0,0,0,0.12);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:0.875rem;--bs-popover-header-color:#2A3547;--bs-popover-header-bg:var(--bs-secondary-bg);--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:var(--bs-body-color);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);-webkit-box-shadow:var(--bs-popover-box-shadow);box-shadow:var(--bs-popover-box-shadow)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow:after,.popover .popover-arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-top>.popover-arrow:before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow:after,.bs-popover-top>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-end>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow:after,.bs-popover-end>.popover-arrow:after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:before{border-width:0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow:after,.bs-popover-bottom>.popover-arrow:after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5 * var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-start>.popover-arrow:before{border-width:calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow:after,.bs-popover-start>.popover-arrow:after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform 0.6s ease-in-out;transition:-webkit-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out,-webkit-transform 0.6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{-webkit-transition:none;transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;-webkit-transition:opacity 0s 0.6s;transition:opacity 0s 0.6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{-webkit-transition:none;transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:0.5;-webkit-transition:opacity 0.15s ease;transition:opacity 0.15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{-webkit-transition:none;transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:0.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:0.5;-webkit-transition:opacity 0.6s ease;transition:opacity 0.6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{-webkit-transition:none;transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{-webkit-filter:invert(1) grayscale(100);filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark] .carousel .carousel-control-prev-icon{-webkit-filter:invert(1) grayscale(100);filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;-webkit-animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-zindex:1045;--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color:var(--bs-body-color);--bs-offcanvas-bg:var(--bs-body-bg);--bs-offcanvas-border-width:0;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-offcanvas-transition:transform 0.3s ease-in-out;--bs-offcanvas-title-line-height:1.5}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{-webkit-transition:none;transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{-webkit-transform:none;transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{-webkit-transition:none;transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{-webkit-transform:none;transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{-webkit-transition:none;transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{-webkit-transform:none;transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{-webkit-transition:none;transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{-webkit-transform:none;transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{-webkit-transition:none;transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{-webkit-transform:none;transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-box-shadow:var(--bs-offcanvas-box-shadow);box-shadow:var(--bs-offcanvas-box-shadow);-webkit-transition:var(--bs-offcanvas-transition);transition:var(--bs-offcanvas-transition)}@media (prefers-reduced-motion:reduce){.offcanvas{-webkit-transition:none;transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{-webkit-transform:none;transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:0.5}.offcanvas-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5);margin-top:calc(-0.5 * var(--bs-offcanvas-padding-y));margin-right:calc(-0.5 * var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5 * var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:0.5}.placeholder.btn:before{display:inline-block;content:""}.placeholder-xs{min-height:0.6em}.placeholder-sm{min-height:0.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:0.2}}@keyframes placeholder-glow{50%{opacity:0.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{to{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix:after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(93,135,255,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(73,190,255,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(19,222,185,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#fff!important;background-color:RGBA(83,155,255,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#fff!important;background-color:RGBA(255,174,31,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(250,137,107,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(246,249,252,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(42,53,71,var(--bs-bg-opacity,1))!important}.text-bg-muted{color:#fff!important;background-color:RGBA(90,106,133,var(--bs-bg-opacity,1))!important}.text-bg-indigo{color:#fff!important;background-color:RGBA(102,16,242,var(--bs-bg-opacity,1))!important}.text-bg-light-primary{color:#000!important;background-color:RGBA(236,242,255,var(--bs-bg-opacity,1))!important}.text-bg-light-secondary{color:#000!important;background-color:RGBA(232,247,255,var(--bs-bg-opacity,1))!important}.text-bg-light-info{color:#000!important;background-color:RGBA(235,243,254,var(--bs-bg-opacity,1))!important}.text-bg-light-success{color:#000!important;background-color:RGBA(230,255,250,var(--bs-bg-opacity,1))!important}.text-bg-light-warning{color:#000!important;background-color:RGBA(254,245,229,var(--bs-bg-opacity,1))!important}.text-bg-light-danger{color:#000!important;background-color:RGBA(251,242,239,var(--bs-bg-opacity,1))!important}.text-bg-light-indigo{color:#000!important;background-color:RGBA(235,243,254,var(--bs-bg-opacity,1))!important}.text-bg-dark-light{color:#fff!important;background-color:RGBA(42,53,71,var(--bs-bg-opacity,1))!important}.text-bg-light-gray{color:#000!important;background-color:RGBA(246,249,252,var(--bs-bg-opacity,1))!important}.link-primary{color:#5D87FF!important}.link-primary:focus,.link-primary:hover{color:#4a6ccc!important}.link-secondary{color:#49BEFF!important}.link-secondary:focus,.link-secondary:hover{color:#3a98cc!important}.link-success{color:#13DEB9!important}.link-success:focus,.link-success:hover{color:#0fb294!important}.link-info{color:#539BFF!important}.link-info:focus,.link-info:hover{color:#427ccc!important}.link-warning{color:#FFAE1F!important}.link-warning:focus,.link-warning:hover{color:#cc8b19!important}.link-danger{color:#FA896B!important}.link-danger:focus,.link-danger:hover{color:#c86e56!important}.link-light{color:#F6F9FC!important}.link-light:focus,.link-light:hover{color:#f8fafd!important}.link-dark{color:#2A3547!important}.link-dark:focus,.link-dark:hover{color:#222a39!important}.link-muted{color:#5A6A85!important}.link-muted:focus,.link-muted:hover{color:#48556a!important}.link-indigo{color:#6610f2!important}.link-indigo:focus,.link-indigo:hover{color:#520dc2!important}.link-light-primary{color:#ECF2FF!important}.link-light-primary:focus,.link-light-primary:hover{color:#f0f5ff!important}.link-light-secondary{color:#E8F7FF!important}.link-light-secondary:focus,.link-light-secondary:hover{color:#edf9ff!important}.link-light-info{color:#EBF3FE!important}.link-light-info:focus,.link-light-info:hover{color:#eff5fe!important}.link-light-success{color:#E6FFFA!important}.link-light-success:focus,.link-light-success:hover{color:#ebfffb!important}.link-light-warning{color:#FEF5E5!important}.link-light-warning:focus,.link-light-warning:hover{color:#fef7ea!important}.link-light-danger{color:#FBF2EF!important}.link-light-danger:focus,.link-light-danger:hover{color:#fcf5f2!important}.link-light-indigo{color:#EBF3FE!important}.link-light-indigo:focus,.link-light-indigo:hover{color:#eff5fe!important}.link-dark-light{color:#2A3547!important}.link-dark-light:focus,.link-dark-light:hover{color:#222a39!important}.link-light-gray{color:#F6F9FC!important}.link-light-gray:focus,.link-light-gray:hover{color:#f8fafd!important}.ratio{position:relative;width:100%}.ratio:before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.vstack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:0.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.object-fit-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-none{-o-object-fit:none!important;object-fit:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:0.25!important}.opacity-50{opacity:0.5!important}.opacity-75{opacity:0.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.overflow-x-auto{overflow-x:auto!important}.overflow-x-hidden{overflow-x:hidden!important}.overflow-x-visible{overflow-x:visible!important}.overflow-x-scroll{overflow-x:scroll!important}.overflow-y-auto{overflow-y:auto!important}.overflow-y-hidden{overflow-y:hidden!important}.overflow-y-visible{overflow-y:visible!important}.overflow-y-scroll{overflow-y:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:-ms-grid!important;display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-none{display:none!important}.shadow{-webkit-box-shadow:0px 15px 30px rgba(0,0,0,0.12)!important;box-shadow:0px 15px 30px rgba(0,0,0,0.12)!important}.shadow-sm{-webkit-box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075)!important;box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,0.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,0.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{-webkit-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}.translate-middle-x{-webkit-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.translate-middle-y{-webkit-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-muted{--bs-border-opacity:1;border-color:rgba(var(--bs-muted-rgb),var(--bs-border-opacity))!important}.border-indigo{--bs-border-opacity:1;border-color:rgba(var(--bs-indigo-rgb),var(--bs-border-opacity))!important}.border-light-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-light-primary-rgb),var(--bs-border-opacity))!important}.border-light-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-light-secondary-rgb),var(--bs-border-opacity))!important}.border-light-info{--bs-border-opacity:1;border-color:rgba(var(--bs-light-info-rgb),var(--bs-border-opacity))!important}.border-light-success{--bs-border-opacity:1;border-color:rgba(var(--bs-light-success-rgb),var(--bs-border-opacity))!important}.border-light-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-light-warning-rgb),var(--bs-border-opacity))!important}.border-light-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-light-danger-rgb),var(--bs-border-opacity))!important}.border-light-indigo{--bs-border-opacity:1;border-color:rgba(var(--bs-light-indigo-rgb),var(--bs-border-opacity))!important}.border-dark-light{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-light-rgb),var(--bs-border-opacity))!important}.border-light-gray{--bs-border-opacity:1;border-color:rgba(var(--bs-light-gray-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle)!important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle)!important}.border-success-subtle{border-color:var(--bs-success-border-subtle)!important}.border-info-subtle{border-color:var(--bs-info-border-subtle)!important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle)!important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle)!important}.border-light-subtle{border-color:var(--bs-light-border-subtle)!important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle)!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-20{width:20%!important}.w-25{width:25%!important}.w-30{width:30%!important}.w-40{width:40%!important}.w-50{width:50%!important}.w-60{width:60%!important}.w-70{width:70%!important}.w-75{width:75%!important}.w-85{width:85%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-0{margin:0!important}.m-1{margin:0.25rem!important}.m-2{margin:0.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-6{margin:12px!important}.m-7{margin:30px!important}.m-8{margin:10px!important}.m-9{margin:20px!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-6{margin-right:12px!important;margin-left:12px!important}.mx-7{margin-right:30px!important;margin-left:30px!important}.mx-8{margin-right:10px!important;margin-left:10px!important}.mx-9{margin-right:20px!important;margin-left:20px!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-6{margin-top:12px!important;margin-bottom:12px!important}.my-7{margin-top:30px!important;margin-bottom:30px!important}.my-8{margin-top:10px!important;margin-bottom:10px!important}.my-9{margin-top:20px!important;margin-bottom:20px!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:0.25rem!important}.mt-2{margin-top:0.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-6{margin-top:12px!important}.mt-7{margin-top:30px!important}.mt-8{margin-top:10px!important}.mt-9{margin-top:20px!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:0.25rem!important}.me-2{margin-right:0.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-6{margin-right:12px!important}.me-7{margin-right:30px!important}.me-8{margin-right:10px!important}.me-9{margin-right:20px!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:0.25rem!important}.mb-2{margin-bottom:0.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-6{margin-bottom:12px!important}.mb-7{margin-bottom:30px!important}.mb-8{margin-bottom:10px!important}.mb-9{margin-bottom:20px!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:0.25rem!important}.ms-2{margin-left:0.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-6{margin-left:12px!important}.ms-7{margin-left:30px!important}.ms-8{margin-left:10px!important}.ms-9{margin-left:20px!important}.ms-auto{margin-left:auto!important}.m-n1{margin:-0.25rem!important}.m-n2{margin:-0.5rem!important}.m-n3{margin:-1rem!important}.m-n4{margin:-1.5rem!important}.m-n5{margin:-3rem!important}.m-n6{margin:-12px!important}.m-n7{margin:-30px!important}.m-n8{margin:-10px!important}.m-n9{margin:-20px!important}.mx-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-n9{margin-right:-20px!important;margin-left:-20px!important}.my-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-n1{margin-top:-0.25rem!important}.mt-n2{margin-top:-0.5rem!important}.mt-n3{margin-top:-1rem!important}.mt-n4{margin-top:-1.5rem!important}.mt-n5{margin-top:-3rem!important}.mt-n6{margin-top:-12px!important}.mt-n7{margin-top:-30px!important}.mt-n8{margin-top:-10px!important}.mt-n9{margin-top:-20px!important}.me-n1{margin-right:-0.25rem!important}.me-n2{margin-right:-0.5rem!important}.me-n3{margin-right:-1rem!important}.me-n4{margin-right:-1.5rem!important}.me-n5{margin-right:-3rem!important}.me-n6{margin-right:-12px!important}.me-n7{margin-right:-30px!important}.me-n8{margin-right:-10px!important}.me-n9{margin-right:-20px!important}.mb-n1{margin-bottom:-0.25rem!important}.mb-n2{margin-bottom:-0.5rem!important}.mb-n3{margin-bottom:-1rem!important}.mb-n4{margin-bottom:-1.5rem!important}.mb-n5{margin-bottom:-3rem!important}.mb-n6{margin-bottom:-12px!important}.mb-n7{margin-bottom:-30px!important}.mb-n8{margin-bottom:-10px!important}.mb-n9{margin-bottom:-20px!important}.ms-n1{margin-left:-0.25rem!important}.ms-n2{margin-left:-0.5rem!important}.ms-n3{margin-left:-1rem!important}.ms-n4{margin-left:-1.5rem!important}.ms-n5{margin-left:-3rem!important}.ms-n6{margin-left:-12px!important}.ms-n7{margin-left:-30px!important}.ms-n8{margin-left:-10px!important}.ms-n9{margin-left:-20px!important}.p-0{padding:0!important}.p-1{padding:0.25rem!important}.p-2{padding:0.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.p-6{padding:12px!important}.p-7{padding:30px!important}.p-8{padding:10px!important}.p-9{padding:20px!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.px-6{padding-right:12px!important;padding-left:12px!important}.px-7{padding-right:30px!important;padding-left:30px!important}.px-8{padding-right:10px!important;padding-left:10px!important}.px-9{padding-right:20px!important;padding-left:20px!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-6{padding-top:12px!important;padding-bottom:12px!important}.py-7{padding-top:30px!important;padding-bottom:30px!important}.py-8{padding-top:10px!important;padding-bottom:10px!important}.py-9{padding-top:20px!important;padding-bottom:20px!important}.pt-0{padding-top:0!important}.pt-1{padding-top:0.25rem!important}.pt-2{padding-top:0.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pt-6{padding-top:12px!important}.pt-7{padding-top:30px!important}.pt-8{padding-top:10px!important}.pt-9{padding-top:20px!important}.pe-0{padding-right:0!important}.pe-1{padding-right:0.25rem!important}.pe-2{padding-right:0.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pe-6{padding-right:12px!important}.pe-7{padding-right:30px!important}.pe-8{padding-right:10px!important}.pe-9{padding-right:20px!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:0.25rem!important}.pb-2{padding-bottom:0.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.pb-6{padding-bottom:12px!important}.pb-7{padding-bottom:30px!important}.pb-8{padding-bottom:10px!important}.pb-9{padding-bottom:20px!important}.ps-0{padding-left:0!important}.ps-1{padding-left:0.25rem!important}.ps-2{padding-left:0.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.ps-6{padding-left:12px!important}.ps-7{padding-left:30px!important}.ps-8{padding-left:10px!important}.ps-9{padding-left:20px!important}.gap-0{gap:0!important}.gap-1{gap:0.25rem!important}.gap-2{gap:0.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.gap-6{gap:12px!important}.gap-7{gap:30px!important}.gap-8{gap:10px!important}.gap-9{gap:20px!important}.row-gap-0{row-gap:0!important}.row-gap-1{row-gap:0.25rem!important}.row-gap-2{row-gap:0.5rem!important}.row-gap-3{row-gap:1rem!important}.row-gap-4{row-gap:1.5rem!important}.row-gap-5{row-gap:3rem!important}.row-gap-6{row-gap:12px!important}.row-gap-7{row-gap:30px!important}.row-gap-8{row-gap:10px!important}.row-gap-9{row-gap:20px!important}.column-gap-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:0.625rem!important}.fs-2{font-size:0.75rem!important}.fs-3{font-size:0.875rem!important}.fs-4{font-size:1rem!important}.fs-5{font-size:1.125rem!important}.fs-6{font-size:1.25rem!important}.fs-7{font-size:calc(1.275rem + 0.3vw)!important}.fs-8{font-size:calc(1.3125rem + 0.75vw)!important}.fs-9{font-size:calc(1.35rem + 1.2vw)!important}.fs-10{font-size:calc(1.375rem + 1.5vw)!important}.fs-11{font-size:calc(1.40625rem + 1.875vw)!important}.fs-12{font-size:calc(1.425rem + 2.1vw)!important}.fs-13{font-size:calc(1.46875rem + 2.625vw)!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-lighter{font-weight:300!important}.fw-light{font-weight:300!important}.fw-normal{font-weight:400!important}.fw-medium{font-weight:500!important}.fw-semibold{font-weight:600!important}.fw-bold{font-weight:500!important}.fw-bolder{font-weight:700!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#5A6A85!important}.text-indigo{--bs-text-opacity:1;color:rgba(var(--bs-indigo-rgb),var(--bs-text-opacity))!important}.text-light-primary{--bs-text-opacity:1;color:rgba(var(--bs-light-primary-rgb),var(--bs-text-opacity))!important}.text-light-secondary{--bs-text-opacity:1;color:rgba(var(--bs-light-secondary-rgb),var(--bs-text-opacity))!important}.text-light-info{--bs-text-opacity:1;color:rgba(var(--bs-light-info-rgb),var(--bs-text-opacity))!important}.text-light-success{--bs-text-opacity:1;color:rgba(var(--bs-light-success-rgb),var(--bs-text-opacity))!important}.text-light-warning{--bs-text-opacity:1;color:rgba(var(--bs-light-warning-rgb),var(--bs-text-opacity))!important}.text-light-danger{--bs-text-opacity:1;color:rgba(var(--bs-light-danger-rgb),var(--bs-text-opacity))!important}.text-light-indigo{--bs-text-opacity:1;color:rgba(var(--bs-light-indigo-rgb),var(--bs-text-opacity))!important}.text-dark-light{--bs-text-opacity:1;color:rgba(var(--bs-dark-light-rgb),var(--bs-text-opacity))!important}.text-light-gray{--bs-text-opacity:1;color:rgba(var(--bs-light-gray-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,0.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,0.5)!important}.text-body-secondary{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.text-body-tertiary{--bs-text-opacity:1;color:var(--bs-tertiary-color)!important}.text-body-emphasis{--bs-text-opacity:1;color:var(--bs-emphasis-color)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.text-primary-emphasis{color:var(--bs-primary-text)!important}.text-secondary-emphasis{color:var(--bs-secondary-text)!important}.text-success-emphasis{color:var(--bs-success-text)!important}.text-info-emphasis{color:var(--bs-info-text)!important}.text-warning-emphasis{color:var(--bs-warning-text)!important}.text-danger-emphasis{color:var(--bs-danger-text)!important}.text-light-emphasis{color:var(--bs-light-text)!important}.text-dark-emphasis{color:var(--bs-dark-text)!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-muted{--bs-bg-opacity:1;background-color:rgba(var(--bs-muted-rgb),var(--bs-bg-opacity))!important}.bg-indigo{--bs-bg-opacity:1;background-color:rgba(var(--bs-indigo-rgb),var(--bs-bg-opacity))!important}.bg-light-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-primary-rgb),var(--bs-bg-opacity))!important}.bg-light-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-secondary-rgb),var(--bs-bg-opacity))!important}.bg-light-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-info-rgb),var(--bs-bg-opacity))!important}.bg-light-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-success-rgb),var(--bs-bg-opacity))!important}.bg-light-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-warning-rgb),var(--bs-bg-opacity))!important}.bg-light-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-danger-rgb),var(--bs-bg-opacity))!important}.bg-light-indigo{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-indigo-rgb),var(--bs-bg-opacity))!important}.bg-dark-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-light-rgb),var(--bs-bg-opacity))!important}.bg-light-gray{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-gray-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-body-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-tertiary{--bs-bg-opacity:1;background-color:rgba(var(--bs-tertiary-bg-rgb),var(--bs-bg-opacity))!important}.bg-body-emphasis{--bs-bg-opacity:1;background-color:rgba(var(--bs-emphasis-bg-rgb),var(--bs-bg-opacity))!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle)!important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle)!important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle)!important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle)!important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle)!important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle)!important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle)!important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle)!important}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-0{border-top-left-radius:0!important;border-top-right-radius:0!important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm)!important;border-top-right-radius:var(--bs-border-radius-sm)!important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg)!important;border-top-right-radius:var(--bs-border-radius-lg)!important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl)!important;border-top-right-radius:var(--bs-border-radius-xl)!important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-2xl)!important;border-top-right-radius:var(--bs-border-radius-2xl)!important}.rounded-top-circle{border-top-left-radius:50%!important;border-top-right-radius:50%!important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill)!important;border-top-right-radius:var(--bs-border-radius-pill)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-0{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm)!important;border-bottom-right-radius:var(--bs-border-radius-sm)!important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg)!important;border-bottom-right-radius:var(--bs-border-radius-lg)!important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl)!important;border-bottom-right-radius:var(--bs-border-radius-xl)!important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-right-radius:var(--bs-border-radius-2xl)!important}.rounded-end-circle{border-top-right-radius:50%!important;border-bottom-right-radius:50%!important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill)!important;border-bottom-right-radius:var(--bs-border-radius-pill)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-0{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm)!important;border-bottom-left-radius:var(--bs-border-radius-sm)!important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg)!important;border-bottom-left-radius:var(--bs-border-radius-lg)!important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl)!important;border-bottom-left-radius:var(--bs-border-radius-xl)!important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-2xl)!important;border-bottom-left-radius:var(--bs-border-radius-2xl)!important}.rounded-bottom-circle{border-bottom-right-radius:50%!important;border-bottom-left-radius:50%!important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill)!important;border-bottom-left-radius:var(--bs-border-radius-pill)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-0{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm)!important;border-top-left-radius:var(--bs-border-radius-sm)!important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg)!important;border-top-left-radius:var(--bs-border-radius-lg)!important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl)!important;border-top-left-radius:var(--bs-border-radius-xl)!important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-2xl)!important;border-top-left-radius:var(--bs-border-radius-2xl)!important}.rounded-start-circle{border-bottom-left-radius:50%!important;border-top-left-radius:50%!important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill)!important;border-top-left-radius:var(--bs-border-radius-pill)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}.z-n1{z-index:-1!important}.z-0{z-index:0!important}.z-1{z-index:1!important}.z-2{z-index:2!important}.z-3{z-index:3!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.object-fit-sm-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-sm-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-sm-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-sm-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-sm-none{-o-object-fit:none!important;object-fit:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:-ms-grid!important;display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-sm-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-sm-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-sm-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-sm-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-sm-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-sm-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-sm-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-sm-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-sm-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:0.25rem!important}.m-sm-2{margin:0.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-6{margin:12px!important}.m-sm-7{margin:30px!important}.m-sm-8{margin:10px!important}.m-sm-9{margin:20px!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-sm-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-6{margin-right:12px!important;margin-left:12px!important}.mx-sm-7{margin-right:30px!important;margin-left:30px!important}.mx-sm-8{margin-right:10px!important;margin-left:10px!important}.mx-sm-9{margin-right:20px!important;margin-left:20px!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-sm-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-6{margin-top:12px!important;margin-bottom:12px!important}.my-sm-7{margin-top:30px!important;margin-bottom:30px!important}.my-sm-8{margin-top:10px!important;margin-bottom:10px!important}.my-sm-9{margin-top:20px!important;margin-bottom:20px!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:0.25rem!important}.mt-sm-2{margin-top:0.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-6{margin-top:12px!important}.mt-sm-7{margin-top:30px!important}.mt-sm-8{margin-top:10px!important}.mt-sm-9{margin-top:20px!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:0.25rem!important}.me-sm-2{margin-right:0.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-6{margin-right:12px!important}.me-sm-7{margin-right:30px!important}.me-sm-8{margin-right:10px!important}.me-sm-9{margin-right:20px!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:0.25rem!important}.mb-sm-2{margin-bottom:0.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-6{margin-bottom:12px!important}.mb-sm-7{margin-bottom:30px!important}.mb-sm-8{margin-bottom:10px!important}.mb-sm-9{margin-bottom:20px!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:0.25rem!important}.ms-sm-2{margin-left:0.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-6{margin-left:12px!important}.ms-sm-7{margin-left:30px!important}.ms-sm-8{margin-left:10px!important}.ms-sm-9{margin-left:20px!important}.ms-sm-auto{margin-left:auto!important}.m-sm-n1{margin:-0.25rem!important}.m-sm-n2{margin:-0.5rem!important}.m-sm-n3{margin:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.m-sm-n6{margin:-12px!important}.m-sm-n7{margin:-30px!important}.m-sm-n8{margin:-10px!important}.m-sm-n9{margin:-20px!important}.mx-sm-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-sm-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-sm-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-sm-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-sm-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-sm-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-sm-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-sm-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-sm-n9{margin-right:-20px!important;margin-left:-20px!important}.my-sm-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-sm-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-sm-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-sm-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-sm-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-sm-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-sm-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-sm-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-sm-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-sm-n1{margin-top:-0.25rem!important}.mt-sm-n2{margin-top:-0.5rem!important}.mt-sm-n3{margin-top:-1rem!important}.mt-sm-n4{margin-top:-1.5rem!important}.mt-sm-n5{margin-top:-3rem!important}.mt-sm-n6{margin-top:-12px!important}.mt-sm-n7{margin-top:-30px!important}.mt-sm-n8{margin-top:-10px!important}.mt-sm-n9{margin-top:-20px!important}.me-sm-n1{margin-right:-0.25rem!important}.me-sm-n2{margin-right:-0.5rem!important}.me-sm-n3{margin-right:-1rem!important}.me-sm-n4{margin-right:-1.5rem!important}.me-sm-n5{margin-right:-3rem!important}.me-sm-n6{margin-right:-12px!important}.me-sm-n7{margin-right:-30px!important}.me-sm-n8{margin-right:-10px!important}.me-sm-n9{margin-right:-20px!important}.mb-sm-n1{margin-bottom:-0.25rem!important}.mb-sm-n2{margin-bottom:-0.5rem!important}.mb-sm-n3{margin-bottom:-1rem!important}.mb-sm-n4{margin-bottom:-1.5rem!important}.mb-sm-n5{margin-bottom:-3rem!important}.mb-sm-n6{margin-bottom:-12px!important}.mb-sm-n7{margin-bottom:-30px!important}.mb-sm-n8{margin-bottom:-10px!important}.mb-sm-n9{margin-bottom:-20px!important}.ms-sm-n1{margin-left:-0.25rem!important}.ms-sm-n2{margin-left:-0.5rem!important}.ms-sm-n3{margin-left:-1rem!important}.ms-sm-n4{margin-left:-1.5rem!important}.ms-sm-n5{margin-left:-3rem!important}.ms-sm-n6{margin-left:-12px!important}.ms-sm-n7{margin-left:-30px!important}.ms-sm-n8{margin-left:-10px!important}.ms-sm-n9{margin-left:-20px!important}.p-sm-0{padding:0!important}.p-sm-1{padding:0.25rem!important}.p-sm-2{padding:0.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.p-sm-6{padding:12px!important}.p-sm-7{padding:30px!important}.p-sm-8{padding:10px!important}.p-sm-9{padding:20px!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-sm-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.px-sm-6{padding-right:12px!important;padding-left:12px!important}.px-sm-7{padding-right:30px!important;padding-left:30px!important}.px-sm-8{padding-right:10px!important;padding-left:10px!important}.px-sm-9{padding-right:20px!important;padding-left:20px!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-sm-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-sm-6{padding-top:12px!important;padding-bottom:12px!important}.py-sm-7{padding-top:30px!important;padding-bottom:30px!important}.py-sm-8{padding-top:10px!important;padding-bottom:10px!important}.py-sm-9{padding-top:20px!important;padding-bottom:20px!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:0.25rem!important}.pt-sm-2{padding-top:0.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pt-sm-6{padding-top:12px!important}.pt-sm-7{padding-top:30px!important}.pt-sm-8{padding-top:10px!important}.pt-sm-9{padding-top:20px!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:0.25rem!important}.pe-sm-2{padding-right:0.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pe-sm-6{padding-right:12px!important}.pe-sm-7{padding-right:30px!important}.pe-sm-8{padding-right:10px!important}.pe-sm-9{padding-right:20px!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:0.25rem!important}.pb-sm-2{padding-bottom:0.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.pb-sm-6{padding-bottom:12px!important}.pb-sm-7{padding-bottom:30px!important}.pb-sm-8{padding-bottom:10px!important}.pb-sm-9{padding-bottom:20px!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:0.25rem!important}.ps-sm-2{padding-left:0.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.ps-sm-6{padding-left:12px!important}.ps-sm-7{padding-left:30px!important}.ps-sm-8{padding-left:10px!important}.ps-sm-9{padding-left:20px!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:0.25rem!important}.gap-sm-2{gap:0.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.gap-sm-6{gap:12px!important}.gap-sm-7{gap:30px!important}.gap-sm-8{gap:10px!important}.gap-sm-9{gap:20px!important}.row-gap-sm-0{row-gap:0!important}.row-gap-sm-1{row-gap:0.25rem!important}.row-gap-sm-2{row-gap:0.5rem!important}.row-gap-sm-3{row-gap:1rem!important}.row-gap-sm-4{row-gap:1.5rem!important}.row-gap-sm-5{row-gap:3rem!important}.row-gap-sm-6{row-gap:12px!important}.row-gap-sm-7{row-gap:30px!important}.row-gap-sm-8{row-gap:10px!important}.row-gap-sm-9{row-gap:20px!important}.column-gap-sm-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-sm-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-sm-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-sm-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-sm-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-sm-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-sm-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-sm-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-sm-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-sm-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.object-fit-md-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-md-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-md-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-md-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-md-none{-o-object-fit:none!important;object-fit:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:-ms-grid!important;display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-md-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-md-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-md-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-md-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-md-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-md-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-md-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-md-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-md-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:0.25rem!important}.m-md-2{margin:0.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-6{margin:12px!important}.m-md-7{margin:30px!important}.m-md-8{margin:10px!important}.m-md-9{margin:20px!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-md-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-6{margin-right:12px!important;margin-left:12px!important}.mx-md-7{margin-right:30px!important;margin-left:30px!important}.mx-md-8{margin-right:10px!important;margin-left:10px!important}.mx-md-9{margin-right:20px!important;margin-left:20px!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-md-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-6{margin-top:12px!important;margin-bottom:12px!important}.my-md-7{margin-top:30px!important;margin-bottom:30px!important}.my-md-8{margin-top:10px!important;margin-bottom:10px!important}.my-md-9{margin-top:20px!important;margin-bottom:20px!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:0.25rem!important}.mt-md-2{margin-top:0.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-6{margin-top:12px!important}.mt-md-7{margin-top:30px!important}.mt-md-8{margin-top:10px!important}.mt-md-9{margin-top:20px!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:0.25rem!important}.me-md-2{margin-right:0.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-6{margin-right:12px!important}.me-md-7{margin-right:30px!important}.me-md-8{margin-right:10px!important}.me-md-9{margin-right:20px!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:0.25rem!important}.mb-md-2{margin-bottom:0.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-6{margin-bottom:12px!important}.mb-md-7{margin-bottom:30px!important}.mb-md-8{margin-bottom:10px!important}.mb-md-9{margin-bottom:20px!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:0.25rem!important}.ms-md-2{margin-left:0.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-6{margin-left:12px!important}.ms-md-7{margin-left:30px!important}.ms-md-8{margin-left:10px!important}.ms-md-9{margin-left:20px!important}.ms-md-auto{margin-left:auto!important}.m-md-n1{margin:-0.25rem!important}.m-md-n2{margin:-0.5rem!important}.m-md-n3{margin:-1rem!important}.m-md-n4{margin:-1.5rem!important}.m-md-n5{margin:-3rem!important}.m-md-n6{margin:-12px!important}.m-md-n7{margin:-30px!important}.m-md-n8{margin:-10px!important}.m-md-n9{margin:-20px!important}.mx-md-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-md-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-md-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-md-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-md-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-md-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-md-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-md-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-md-n9{margin-right:-20px!important;margin-left:-20px!important}.my-md-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-md-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-md-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-md-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-md-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-md-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-md-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-md-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-md-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-md-n1{margin-top:-0.25rem!important}.mt-md-n2{margin-top:-0.5rem!important}.mt-md-n3{margin-top:-1rem!important}.mt-md-n4{margin-top:-1.5rem!important}.mt-md-n5{margin-top:-3rem!important}.mt-md-n6{margin-top:-12px!important}.mt-md-n7{margin-top:-30px!important}.mt-md-n8{margin-top:-10px!important}.mt-md-n9{margin-top:-20px!important}.me-md-n1{margin-right:-0.25rem!important}.me-md-n2{margin-right:-0.5rem!important}.me-md-n3{margin-right:-1rem!important}.me-md-n4{margin-right:-1.5rem!important}.me-md-n5{margin-right:-3rem!important}.me-md-n6{margin-right:-12px!important}.me-md-n7{margin-right:-30px!important}.me-md-n8{margin-right:-10px!important}.me-md-n9{margin-right:-20px!important}.mb-md-n1{margin-bottom:-0.25rem!important}.mb-md-n2{margin-bottom:-0.5rem!important}.mb-md-n3{margin-bottom:-1rem!important}.mb-md-n4{margin-bottom:-1.5rem!important}.mb-md-n5{margin-bottom:-3rem!important}.mb-md-n6{margin-bottom:-12px!important}.mb-md-n7{margin-bottom:-30px!important}.mb-md-n8{margin-bottom:-10px!important}.mb-md-n9{margin-bottom:-20px!important}.ms-md-n1{margin-left:-0.25rem!important}.ms-md-n2{margin-left:-0.5rem!important}.ms-md-n3{margin-left:-1rem!important}.ms-md-n4{margin-left:-1.5rem!important}.ms-md-n5{margin-left:-3rem!important}.ms-md-n6{margin-left:-12px!important}.ms-md-n7{margin-left:-30px!important}.ms-md-n8{margin-left:-10px!important}.ms-md-n9{margin-left:-20px!important}.p-md-0{padding:0!important}.p-md-1{padding:0.25rem!important}.p-md-2{padding:0.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.p-md-6{padding:12px!important}.p-md-7{padding:30px!important}.p-md-8{padding:10px!important}.p-md-9{padding:20px!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-md-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.px-md-6{padding-right:12px!important;padding-left:12px!important}.px-md-7{padding-right:30px!important;padding-left:30px!important}.px-md-8{padding-right:10px!important;padding-left:10px!important}.px-md-9{padding-right:20px!important;padding-left:20px!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-md-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-md-6{padding-top:12px!important;padding-bottom:12px!important}.py-md-7{padding-top:30px!important;padding-bottom:30px!important}.py-md-8{padding-top:10px!important;padding-bottom:10px!important}.py-md-9{padding-top:20px!important;padding-bottom:20px!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:0.25rem!important}.pt-md-2{padding-top:0.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pt-md-6{padding-top:12px!important}.pt-md-7{padding-top:30px!important}.pt-md-8{padding-top:10px!important}.pt-md-9{padding-top:20px!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:0.25rem!important}.pe-md-2{padding-right:0.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pe-md-6{padding-right:12px!important}.pe-md-7{padding-right:30px!important}.pe-md-8{padding-right:10px!important}.pe-md-9{padding-right:20px!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:0.25rem!important}.pb-md-2{padding-bottom:0.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.pb-md-6{padding-bottom:12px!important}.pb-md-7{padding-bottom:30px!important}.pb-md-8{padding-bottom:10px!important}.pb-md-9{padding-bottom:20px!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:0.25rem!important}.ps-md-2{padding-left:0.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.ps-md-6{padding-left:12px!important}.ps-md-7{padding-left:30px!important}.ps-md-8{padding-left:10px!important}.ps-md-9{padding-left:20px!important}.gap-md-0{gap:0!important}.gap-md-1{gap:0.25rem!important}.gap-md-2{gap:0.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.gap-md-6{gap:12px!important}.gap-md-7{gap:30px!important}.gap-md-8{gap:10px!important}.gap-md-9{gap:20px!important}.row-gap-md-0{row-gap:0!important}.row-gap-md-1{row-gap:0.25rem!important}.row-gap-md-2{row-gap:0.5rem!important}.row-gap-md-3{row-gap:1rem!important}.row-gap-md-4{row-gap:1.5rem!important}.row-gap-md-5{row-gap:3rem!important}.row-gap-md-6{row-gap:12px!important}.row-gap-md-7{row-gap:30px!important}.row-gap-md-8{row-gap:10px!important}.row-gap-md-9{row-gap:20px!important}.column-gap-md-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-md-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-md-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-md-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-md-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-md-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-md-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-md-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-md-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-md-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.object-fit-lg-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-lg-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-lg-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-lg-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-lg-none{-o-object-fit:none!important;object-fit:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:-ms-grid!important;display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-lg-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-lg-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-lg-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-lg-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-lg-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-lg-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-lg-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-lg-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-lg-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:0.25rem!important}.m-lg-2{margin:0.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-6{margin:12px!important}.m-lg-7{margin:30px!important}.m-lg-8{margin:10px!important}.m-lg-9{margin:20px!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-lg-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-6{margin-right:12px!important;margin-left:12px!important}.mx-lg-7{margin-right:30px!important;margin-left:30px!important}.mx-lg-8{margin-right:10px!important;margin-left:10px!important}.mx-lg-9{margin-right:20px!important;margin-left:20px!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-lg-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-6{margin-top:12px!important;margin-bottom:12px!important}.my-lg-7{margin-top:30px!important;margin-bottom:30px!important}.my-lg-8{margin-top:10px!important;margin-bottom:10px!important}.my-lg-9{margin-top:20px!important;margin-bottom:20px!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:0.25rem!important}.mt-lg-2{margin-top:0.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-6{margin-top:12px!important}.mt-lg-7{margin-top:30px!important}.mt-lg-8{margin-top:10px!important}.mt-lg-9{margin-top:20px!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:0.25rem!important}.me-lg-2{margin-right:0.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-6{margin-right:12px!important}.me-lg-7{margin-right:30px!important}.me-lg-8{margin-right:10px!important}.me-lg-9{margin-right:20px!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:0.25rem!important}.mb-lg-2{margin-bottom:0.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-6{margin-bottom:12px!important}.mb-lg-7{margin-bottom:30px!important}.mb-lg-8{margin-bottom:10px!important}.mb-lg-9{margin-bottom:20px!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:0.25rem!important}.ms-lg-2{margin-left:0.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-6{margin-left:12px!important}.ms-lg-7{margin-left:30px!important}.ms-lg-8{margin-left:10px!important}.ms-lg-9{margin-left:20px!important}.ms-lg-auto{margin-left:auto!important}.m-lg-n1{margin:-0.25rem!important}.m-lg-n2{margin:-0.5rem!important}.m-lg-n3{margin:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.m-lg-n6{margin:-12px!important}.m-lg-n7{margin:-30px!important}.m-lg-n8{margin:-10px!important}.m-lg-n9{margin:-20px!important}.mx-lg-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-lg-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-lg-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-lg-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-lg-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-lg-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-lg-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-lg-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-lg-n9{margin-right:-20px!important;margin-left:-20px!important}.my-lg-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-lg-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-lg-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-lg-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-lg-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-lg-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-lg-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-lg-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-lg-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-lg-n1{margin-top:-0.25rem!important}.mt-lg-n2{margin-top:-0.5rem!important}.mt-lg-n3{margin-top:-1rem!important}.mt-lg-n4{margin-top:-1.5rem!important}.mt-lg-n5{margin-top:-3rem!important}.mt-lg-n6{margin-top:-12px!important}.mt-lg-n7{margin-top:-30px!important}.mt-lg-n8{margin-top:-10px!important}.mt-lg-n9{margin-top:-20px!important}.me-lg-n1{margin-right:-0.25rem!important}.me-lg-n2{margin-right:-0.5rem!important}.me-lg-n3{margin-right:-1rem!important}.me-lg-n4{margin-right:-1.5rem!important}.me-lg-n5{margin-right:-3rem!important}.me-lg-n6{margin-right:-12px!important}.me-lg-n7{margin-right:-30px!important}.me-lg-n8{margin-right:-10px!important}.me-lg-n9{margin-right:-20px!important}.mb-lg-n1{margin-bottom:-0.25rem!important}.mb-lg-n2{margin-bottom:-0.5rem!important}.mb-lg-n3{margin-bottom:-1rem!important}.mb-lg-n4{margin-bottom:-1.5rem!important}.mb-lg-n5{margin-bottom:-3rem!important}.mb-lg-n6{margin-bottom:-12px!important}.mb-lg-n7{margin-bottom:-30px!important}.mb-lg-n8{margin-bottom:-10px!important}.mb-lg-n9{margin-bottom:-20px!important}.ms-lg-n1{margin-left:-0.25rem!important}.ms-lg-n2{margin-left:-0.5rem!important}.ms-lg-n3{margin-left:-1rem!important}.ms-lg-n4{margin-left:-1.5rem!important}.ms-lg-n5{margin-left:-3rem!important}.ms-lg-n6{margin-left:-12px!important}.ms-lg-n7{margin-left:-30px!important}.ms-lg-n8{margin-left:-10px!important}.ms-lg-n9{margin-left:-20px!important}.p-lg-0{padding:0!important}.p-lg-1{padding:0.25rem!important}.p-lg-2{padding:0.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.p-lg-6{padding:12px!important}.p-lg-7{padding:30px!important}.p-lg-8{padding:10px!important}.p-lg-9{padding:20px!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-lg-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.px-lg-6{padding-right:12px!important;padding-left:12px!important}.px-lg-7{padding-right:30px!important;padding-left:30px!important}.px-lg-8{padding-right:10px!important;padding-left:10px!important}.px-lg-9{padding-right:20px!important;padding-left:20px!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-lg-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-lg-6{padding-top:12px!important;padding-bottom:12px!important}.py-lg-7{padding-top:30px!important;padding-bottom:30px!important}.py-lg-8{padding-top:10px!important;padding-bottom:10px!important}.py-lg-9{padding-top:20px!important;padding-bottom:20px!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:0.25rem!important}.pt-lg-2{padding-top:0.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pt-lg-6{padding-top:12px!important}.pt-lg-7{padding-top:30px!important}.pt-lg-8{padding-top:10px!important}.pt-lg-9{padding-top:20px!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:0.25rem!important}.pe-lg-2{padding-right:0.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pe-lg-6{padding-right:12px!important}.pe-lg-7{padding-right:30px!important}.pe-lg-8{padding-right:10px!important}.pe-lg-9{padding-right:20px!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:0.25rem!important}.pb-lg-2{padding-bottom:0.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.pb-lg-6{padding-bottom:12px!important}.pb-lg-7{padding-bottom:30px!important}.pb-lg-8{padding-bottom:10px!important}.pb-lg-9{padding-bottom:20px!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:0.25rem!important}.ps-lg-2{padding-left:0.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.ps-lg-6{padding-left:12px!important}.ps-lg-7{padding-left:30px!important}.ps-lg-8{padding-left:10px!important}.ps-lg-9{padding-left:20px!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:0.25rem!important}.gap-lg-2{gap:0.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.gap-lg-6{gap:12px!important}.gap-lg-7{gap:30px!important}.gap-lg-8{gap:10px!important}.gap-lg-9{gap:20px!important}.row-gap-lg-0{row-gap:0!important}.row-gap-lg-1{row-gap:0.25rem!important}.row-gap-lg-2{row-gap:0.5rem!important}.row-gap-lg-3{row-gap:1rem!important}.row-gap-lg-4{row-gap:1.5rem!important}.row-gap-lg-5{row-gap:3rem!important}.row-gap-lg-6{row-gap:12px!important}.row-gap-lg-7{row-gap:30px!important}.row-gap-lg-8{row-gap:10px!important}.row-gap-lg-9{row-gap:20px!important}.column-gap-lg-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-lg-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-lg-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-lg-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-lg-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-lg-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-lg-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-lg-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-lg-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-lg-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.object-fit-xl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xl-none{-o-object-fit:none!important;object-fit:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:-ms-grid!important;display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-xl-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-xl-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-xl-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-xl-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-xl-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-xl-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-xl-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-xl-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-xl-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:0.25rem!important}.m-xl-2{margin:0.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-6{margin:12px!important}.m-xl-7{margin:30px!important}.m-xl-8{margin:10px!important}.m-xl-9{margin:20px!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-xl-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-6{margin-right:12px!important;margin-left:12px!important}.mx-xl-7{margin-right:30px!important;margin-left:30px!important}.mx-xl-8{margin-right:10px!important;margin-left:10px!important}.mx-xl-9{margin-right:20px!important;margin-left:20px!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-xl-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-6{margin-top:12px!important;margin-bottom:12px!important}.my-xl-7{margin-top:30px!important;margin-bottom:30px!important}.my-xl-8{margin-top:10px!important;margin-bottom:10px!important}.my-xl-9{margin-top:20px!important;margin-bottom:20px!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:0.25rem!important}.mt-xl-2{margin-top:0.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-6{margin-top:12px!important}.mt-xl-7{margin-top:30px!important}.mt-xl-8{margin-top:10px!important}.mt-xl-9{margin-top:20px!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:0.25rem!important}.me-xl-2{margin-right:0.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-6{margin-right:12px!important}.me-xl-7{margin-right:30px!important}.me-xl-8{margin-right:10px!important}.me-xl-9{margin-right:20px!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:0.25rem!important}.mb-xl-2{margin-bottom:0.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-6{margin-bottom:12px!important}.mb-xl-7{margin-bottom:30px!important}.mb-xl-8{margin-bottom:10px!important}.mb-xl-9{margin-bottom:20px!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:0.25rem!important}.ms-xl-2{margin-left:0.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-6{margin-left:12px!important}.ms-xl-7{margin-left:30px!important}.ms-xl-8{margin-left:10px!important}.ms-xl-9{margin-left:20px!important}.ms-xl-auto{margin-left:auto!important}.m-xl-n1{margin:-0.25rem!important}.m-xl-n2{margin:-0.5rem!important}.m-xl-n3{margin:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.m-xl-n6{margin:-12px!important}.m-xl-n7{margin:-30px!important}.m-xl-n8{margin:-10px!important}.m-xl-n9{margin:-20px!important}.mx-xl-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-xl-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-xl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xl-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-xl-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-xl-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-xl-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-xl-n9{margin-right:-20px!important;margin-left:-20px!important}.my-xl-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-xl-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-xl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xl-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-xl-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-xl-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-xl-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-xl-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-xl-n1{margin-top:-0.25rem!important}.mt-xl-n2{margin-top:-0.5rem!important}.mt-xl-n3{margin-top:-1rem!important}.mt-xl-n4{margin-top:-1.5rem!important}.mt-xl-n5{margin-top:-3rem!important}.mt-xl-n6{margin-top:-12px!important}.mt-xl-n7{margin-top:-30px!important}.mt-xl-n8{margin-top:-10px!important}.mt-xl-n9{margin-top:-20px!important}.me-xl-n1{margin-right:-0.25rem!important}.me-xl-n2{margin-right:-0.5rem!important}.me-xl-n3{margin-right:-1rem!important}.me-xl-n4{margin-right:-1.5rem!important}.me-xl-n5{margin-right:-3rem!important}.me-xl-n6{margin-right:-12px!important}.me-xl-n7{margin-right:-30px!important}.me-xl-n8{margin-right:-10px!important}.me-xl-n9{margin-right:-20px!important}.mb-xl-n1{margin-bottom:-0.25rem!important}.mb-xl-n2{margin-bottom:-0.5rem!important}.mb-xl-n3{margin-bottom:-1rem!important}.mb-xl-n4{margin-bottom:-1.5rem!important}.mb-xl-n5{margin-bottom:-3rem!important}.mb-xl-n6{margin-bottom:-12px!important}.mb-xl-n7{margin-bottom:-30px!important}.mb-xl-n8{margin-bottom:-10px!important}.mb-xl-n9{margin-bottom:-20px!important}.ms-xl-n1{margin-left:-0.25rem!important}.ms-xl-n2{margin-left:-0.5rem!important}.ms-xl-n3{margin-left:-1rem!important}.ms-xl-n4{margin-left:-1.5rem!important}.ms-xl-n5{margin-left:-3rem!important}.ms-xl-n6{margin-left:-12px!important}.ms-xl-n7{margin-left:-30px!important}.ms-xl-n8{margin-left:-10px!important}.ms-xl-n9{margin-left:-20px!important}.p-xl-0{padding:0!important}.p-xl-1{padding:0.25rem!important}.p-xl-2{padding:0.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.p-xl-6{padding:12px!important}.p-xl-7{padding:30px!important}.p-xl-8{padding:10px!important}.p-xl-9{padding:20px!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-xl-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.px-xl-6{padding-right:12px!important;padding-left:12px!important}.px-xl-7{padding-right:30px!important;padding-left:30px!important}.px-xl-8{padding-right:10px!important;padding-left:10px!important}.px-xl-9{padding-right:20px!important;padding-left:20px!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-xl-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-xl-6{padding-top:12px!important;padding-bottom:12px!important}.py-xl-7{padding-top:30px!important;padding-bottom:30px!important}.py-xl-8{padding-top:10px!important;padding-bottom:10px!important}.py-xl-9{padding-top:20px!important;padding-bottom:20px!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:0.25rem!important}.pt-xl-2{padding-top:0.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pt-xl-6{padding-top:12px!important}.pt-xl-7{padding-top:30px!important}.pt-xl-8{padding-top:10px!important}.pt-xl-9{padding-top:20px!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:0.25rem!important}.pe-xl-2{padding-right:0.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pe-xl-6{padding-right:12px!important}.pe-xl-7{padding-right:30px!important}.pe-xl-8{padding-right:10px!important}.pe-xl-9{padding-right:20px!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:0.25rem!important}.pb-xl-2{padding-bottom:0.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.pb-xl-6{padding-bottom:12px!important}.pb-xl-7{padding-bottom:30px!important}.pb-xl-8{padding-bottom:10px!important}.pb-xl-9{padding-bottom:20px!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:0.25rem!important}.ps-xl-2{padding-left:0.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.ps-xl-6{padding-left:12px!important}.ps-xl-7{padding-left:30px!important}.ps-xl-8{padding-left:10px!important}.ps-xl-9{padding-left:20px!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:0.25rem!important}.gap-xl-2{gap:0.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.gap-xl-6{gap:12px!important}.gap-xl-7{gap:30px!important}.gap-xl-8{gap:10px!important}.gap-xl-9{gap:20px!important}.row-gap-xl-0{row-gap:0!important}.row-gap-xl-1{row-gap:0.25rem!important}.row-gap-xl-2{row-gap:0.5rem!important}.row-gap-xl-3{row-gap:1rem!important}.row-gap-xl-4{row-gap:1.5rem!important}.row-gap-xl-5{row-gap:3rem!important}.row-gap-xl-6{row-gap:12px!important}.row-gap-xl-7{row-gap:30px!important}.row-gap-xl-8{row-gap:10px!important}.row-gap-xl-9{row-gap:20px!important}.column-gap-xl-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-xl-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-xl-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-xl-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xl-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xl-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xl-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-xl-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-xl-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-xl-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.object-fit-xxl-contain{-o-object-fit:contain!important;object-fit:contain!important}.object-fit-xxl-cover{-o-object-fit:cover!important;object-fit:cover!important}.object-fit-xxl-fill{-o-object-fit:fill!important;object-fit:fill!important}.object-fit-xxl-scale{-o-object-fit:scale-down!important;object-fit:scale-down!important}.object-fit-xxl-none{-o-object-fit:none!important;object-fit:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:-ms-grid!important;display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xxl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xxl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xxl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xxl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xxl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xxl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xxl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xxl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xxl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-xxl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xxl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xxl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xxl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xxl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xxl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xxl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-xxl-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-xxl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xxl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xxl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xxl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xxl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xxl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xxl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xxl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xxl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xxl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xxl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xxl-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xxl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xxl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xxl-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xxl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xxl-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-xxl-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-xxl-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-xxl-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-xxl-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-xxl-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-xxl-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-xxl-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-xxl-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:0.25rem!important}.m-xxl-2{margin:0.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-6{margin:12px!important}.m-xxl-7{margin:30px!important}.m-xxl-8{margin:10px!important}.m-xxl-9{margin:20px!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:0.25rem!important;margin-left:0.25rem!important}.mx-xxl-2{margin-right:0.5rem!important;margin-left:0.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-6{margin-right:12px!important;margin-left:12px!important}.mx-xxl-7{margin-right:30px!important;margin-left:30px!important}.mx-xxl-8{margin-right:10px!important;margin-left:10px!important}.mx-xxl-9{margin-right:20px!important;margin-left:20px!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:0.25rem!important;margin-bottom:0.25rem!important}.my-xxl-2{margin-top:0.5rem!important;margin-bottom:0.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-6{margin-top:12px!important;margin-bottom:12px!important}.my-xxl-7{margin-top:30px!important;margin-bottom:30px!important}.my-xxl-8{margin-top:10px!important;margin-bottom:10px!important}.my-xxl-9{margin-top:20px!important;margin-bottom:20px!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:0.25rem!important}.mt-xxl-2{margin-top:0.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-6{margin-top:12px!important}.mt-xxl-7{margin-top:30px!important}.mt-xxl-8{margin-top:10px!important}.mt-xxl-9{margin-top:20px!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:0.25rem!important}.me-xxl-2{margin-right:0.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-6{margin-right:12px!important}.me-xxl-7{margin-right:30px!important}.me-xxl-8{margin-right:10px!important}.me-xxl-9{margin-right:20px!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:0.25rem!important}.mb-xxl-2{margin-bottom:0.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-6{margin-bottom:12px!important}.mb-xxl-7{margin-bottom:30px!important}.mb-xxl-8{margin-bottom:10px!important}.mb-xxl-9{margin-bottom:20px!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:0.25rem!important}.ms-xxl-2{margin-left:0.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-6{margin-left:12px!important}.ms-xxl-7{margin-left:30px!important}.ms-xxl-8{margin-left:10px!important}.ms-xxl-9{margin-left:20px!important}.ms-xxl-auto{margin-left:auto!important}.m-xxl-n1{margin:-0.25rem!important}.m-xxl-n2{margin:-0.5rem!important}.m-xxl-n3{margin:-1rem!important}.m-xxl-n4{margin:-1.5rem!important}.m-xxl-n5{margin:-3rem!important}.m-xxl-n6{margin:-12px!important}.m-xxl-n7{margin:-30px!important}.m-xxl-n8{margin:-10px!important}.m-xxl-n9{margin:-20px!important}.mx-xxl-n1{margin-right:-0.25rem!important;margin-left:-0.25rem!important}.mx-xxl-n2{margin-right:-0.5rem!important;margin-left:-0.5rem!important}.mx-xxl-n3{margin-right:-1rem!important;margin-left:-1rem!important}.mx-xxl-n4{margin-right:-1.5rem!important;margin-left:-1.5rem!important}.mx-xxl-n5{margin-right:-3rem!important;margin-left:-3rem!important}.mx-xxl-n6{margin-right:-12px!important;margin-left:-12px!important}.mx-xxl-n7{margin-right:-30px!important;margin-left:-30px!important}.mx-xxl-n8{margin-right:-10px!important;margin-left:-10px!important}.mx-xxl-n9{margin-right:-20px!important;margin-left:-20px!important}.my-xxl-n1{margin-top:-0.25rem!important;margin-bottom:-0.25rem!important}.my-xxl-n2{margin-top:-0.5rem!important;margin-bottom:-0.5rem!important}.my-xxl-n3{margin-top:-1rem!important;margin-bottom:-1rem!important}.my-xxl-n4{margin-top:-1.5rem!important;margin-bottom:-1.5rem!important}.my-xxl-n5{margin-top:-3rem!important;margin-bottom:-3rem!important}.my-xxl-n6{margin-top:-12px!important;margin-bottom:-12px!important}.my-xxl-n7{margin-top:-30px!important;margin-bottom:-30px!important}.my-xxl-n8{margin-top:-10px!important;margin-bottom:-10px!important}.my-xxl-n9{margin-top:-20px!important;margin-bottom:-20px!important}.mt-xxl-n1{margin-top:-0.25rem!important}.mt-xxl-n2{margin-top:-0.5rem!important}.mt-xxl-n3{margin-top:-1rem!important}.mt-xxl-n4{margin-top:-1.5rem!important}.mt-xxl-n5{margin-top:-3rem!important}.mt-xxl-n6{margin-top:-12px!important}.mt-xxl-n7{margin-top:-30px!important}.mt-xxl-n8{margin-top:-10px!important}.mt-xxl-n9{margin-top:-20px!important}.me-xxl-n1{margin-right:-0.25rem!important}.me-xxl-n2{margin-right:-0.5rem!important}.me-xxl-n3{margin-right:-1rem!important}.me-xxl-n4{margin-right:-1.5rem!important}.me-xxl-n5{margin-right:-3rem!important}.me-xxl-n6{margin-right:-12px!important}.me-xxl-n7{margin-right:-30px!important}.me-xxl-n8{margin-right:-10px!important}.me-xxl-n9{margin-right:-20px!important}.mb-xxl-n1{margin-bottom:-0.25rem!important}.mb-xxl-n2{margin-bottom:-0.5rem!important}.mb-xxl-n3{margin-bottom:-1rem!important}.mb-xxl-n4{margin-bottom:-1.5rem!important}.mb-xxl-n5{margin-bottom:-3rem!important}.mb-xxl-n6{margin-bottom:-12px!important}.mb-xxl-n7{margin-bottom:-30px!important}.mb-xxl-n8{margin-bottom:-10px!important}.mb-xxl-n9{margin-bottom:-20px!important}.ms-xxl-n1{margin-left:-0.25rem!important}.ms-xxl-n2{margin-left:-0.5rem!important}.ms-xxl-n3{margin-left:-1rem!important}.ms-xxl-n4{margin-left:-1.5rem!important}.ms-xxl-n5{margin-left:-3rem!important}.ms-xxl-n6{margin-left:-12px!important}.ms-xxl-n7{margin-left:-30px!important}.ms-xxl-n8{margin-left:-10px!important}.ms-xxl-n9{margin-left:-20px!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:0.25rem!important}.p-xxl-2{padding:0.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.p-xxl-6{padding:12px!important}.p-xxl-7{padding:30px!important}.p-xxl-8{padding:10px!important}.p-xxl-9{padding:20px!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:0.25rem!important;padding-left:0.25rem!important}.px-xxl-2{padding-right:0.5rem!important;padding-left:0.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.px-xxl-6{padding-right:12px!important;padding-left:12px!important}.px-xxl-7{padding-right:30px!important;padding-left:30px!important}.px-xxl-8{padding-right:10px!important;padding-left:10px!important}.px-xxl-9{padding-right:20px!important;padding-left:20px!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:0.25rem!important;padding-bottom:0.25rem!important}.py-xxl-2{padding-top:0.5rem!important;padding-bottom:0.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.py-xxl-6{padding-top:12px!important;padding-bottom:12px!important}.py-xxl-7{padding-top:30px!important;padding-bottom:30px!important}.py-xxl-8{padding-top:10px!important;padding-bottom:10px!important}.py-xxl-9{padding-top:20px!important;padding-bottom:20px!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:0.25rem!important}.pt-xxl-2{padding-top:0.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pt-xxl-6{padding-top:12px!important}.pt-xxl-7{padding-top:30px!important}.pt-xxl-8{padding-top:10px!important}.pt-xxl-9{padding-top:20px!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:0.25rem!important}.pe-xxl-2{padding-right:0.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pe-xxl-6{padding-right:12px!important}.pe-xxl-7{padding-right:30px!important}.pe-xxl-8{padding-right:10px!important}.pe-xxl-9{padding-right:20px!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:0.25rem!important}.pb-xxl-2{padding-bottom:0.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.pb-xxl-6{padding-bottom:12px!important}.pb-xxl-7{padding-bottom:30px!important}.pb-xxl-8{padding-bottom:10px!important}.pb-xxl-9{padding-bottom:20px!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:0.25rem!important}.ps-xxl-2{padding-left:0.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.ps-xxl-6{padding-left:12px!important}.ps-xxl-7{padding-left:30px!important}.ps-xxl-8{padding-left:10px!important}.ps-xxl-9{padding-left:20px!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:0.25rem!important}.gap-xxl-2{gap:0.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.gap-xxl-6{gap:12px!important}.gap-xxl-7{gap:30px!important}.gap-xxl-8{gap:10px!important}.gap-xxl-9{gap:20px!important}.row-gap-xxl-0{row-gap:0!important}.row-gap-xxl-1{row-gap:0.25rem!important}.row-gap-xxl-2{row-gap:0.5rem!important}.row-gap-xxl-3{row-gap:1rem!important}.row-gap-xxl-4{row-gap:1.5rem!important}.row-gap-xxl-5{row-gap:3rem!important}.row-gap-xxl-6{row-gap:12px!important}.row-gap-xxl-7{row-gap:30px!important}.row-gap-xxl-8{row-gap:10px!important}.row-gap-xxl-9{row-gap:20px!important}.column-gap-xxl-0{-webkit-column-gap:0!important;-moz-column-gap:0!important;column-gap:0!important}.column-gap-xxl-1{-webkit-column-gap:0.25rem!important;-moz-column-gap:0.25rem!important;column-gap:0.25rem!important}.column-gap-xxl-2{-webkit-column-gap:0.5rem!important;-moz-column-gap:0.5rem!important;column-gap:0.5rem!important}.column-gap-xxl-3{-webkit-column-gap:1rem!important;-moz-column-gap:1rem!important;column-gap:1rem!important}.column-gap-xxl-4{-webkit-column-gap:1.5rem!important;-moz-column-gap:1.5rem!important;column-gap:1.5rem!important}.column-gap-xxl-5{-webkit-column-gap:3rem!important;-moz-column-gap:3rem!important;column-gap:3rem!important}.column-gap-xxl-6{-webkit-column-gap:12px!important;-moz-column-gap:12px!important;column-gap:12px!important}.column-gap-xxl-7{-webkit-column-gap:30px!important;-moz-column-gap:30px!important;column-gap:30px!important}.column-gap-xxl-8{-webkit-column-gap:10px!important;-moz-column-gap:10px!important;column-gap:10px!important}.column-gap-xxl-9{-webkit-column-gap:20px!important;-moz-column-gap:20px!important;column-gap:20px!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-7{font-size:1.5rem!important}.fs-8{font-size:1.875rem!important}.fs-9{font-size:2.25rem!important}.fs-10{font-size:2.5rem!important}.fs-11{font-size:2.8125rem!important}.fs-12{font-size:3rem!important}.fs-13{font-size:3.4375rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:-ms-grid!important;display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-print-none{display:none!important}}.left-sidebar{width:270px;background-color:#fff;position:absolute;-webkit-transition:0.2s ease-in;transition:0.2s ease-in;height:100%;z-index:11;border-right:1px solid rgb(229,234,239)}.left-sidebar .scroll-sidebar{overflow-y:auto;padding:0 24px;height:calc(100vh - 190px);border-radius:7px}.left-sidebar .scroll-sidebar .simplebar-track.simplebar-horizontal{visibility:hidden!important}.brand-logo{min-height:70px;padding:0 24px}.unlimited-access{padding:18px 22px 25px;margin:0 -5px}.unlimited-access .unlimited-access-img{margin:-35px -5px 0 -43px}.nav-small-cap{margin-top:24px;color:#2A3547;font-size:12px;font-weight:700;padding:3px 12px;line-height:26px;text-transform:uppercase}.nav-small-cap .nav-small-cap-icon{display:none}.sidebar-nav ul .sidebar-item .sidebar-link{color:#2A3547;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:14px;white-space:nowrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;line-height:25px;position:relative;margin:0px 0px 2px;padding:10px;border-radius:7px;gap:15px;font-weight:400}.sidebar-nav ul .sidebar-item .sidebar-link span:first-child{display:-webkit-box;display:-ms-flexbox;display:flex}.sidebar-nav ul .sidebar-item .sidebar-link .ti{-ms-flex-negative:0;flex-shrink:0;font-size:21px}.sidebar-nav ul .sidebar-item .sidebar-link:hover{background-color:rgba(93,135,255,0.1);color:#5D87FF}.sidebar-nav ul .sidebar-item .sidebar-link:hover.has-arrow:after{border-color:#5D87FF}.sidebar-nav ul .sidebar-item .sidebar-link.active:hover.has-arrow:after{border-color:#fff}.sidebar-nav ul .sidebar-item .link-disabled{opacity:0.38}.sidebar-nav ul .sidebar-item .first-level .sidebar-item{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out;border-bottom:0}.sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link:hover{background-color:transparent;color:#5D87FF}.sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link.active.has-arrow:after{border-color:#5D87FF}.sidebar-nav ul .sidebar-item .first-level .sidebar-item>.sidebar-link{padding:8px 10px;border-radius:7px;font-size:14px;gap:23px}.sidebar-nav ul .sidebar-item .first-level .sidebar-item>.sidebar-link .sidebar-icon{-ms-flex-negative:0;flex-shrink:0;margin-left:12px;margin-right:35px;width:14px;height:14px}.sidebar-nav ul .sidebar-item .first-level .sidebar-item:last-child{margin-bottom:16px}.sidebar-nav ul .sidebar-item .first-level .sidebar-link .ti{font-size:7px}.sidebar-nav ul .sidebar-item .first-level .sidebar-item .sidebar-link.active{background-color:transparent!important;color:#5D87FF!important}.sidebar-nav ul .sidebar-item .two-level .sidebar-item .sidebar-link{padding:8px 10px 8px 45px}.sidebar-nav ul .sidebar-item .three-level .sidebar-item .sidebar-link{padding:8px 10px 8px 60px}.sidebar-nav ul .sidebar-item.selected>.sidebar-link,.sidebar-nav ul .sidebar-item.selected>.sidebar-link.active,.sidebar-nav ul .sidebar-item>.sidebar-link.active{background-color:#5D87FF;color:#fff}.sidebar-nav .sidebar-list .sidebar-list-item{padding:8px 0}.collapse.in{display:block}.sidebar-nav .has-arrow{position:relative}.sidebar-nav .has-arrow:after{position:absolute;content:"";width:7px;height:7px;border-width:1px 0 0 1px;border-style:solid;border-color:#2A3547;margin-left:10px;-webkit-transform:rotate(135deg) translate(0,-50%);transform:rotate(135deg) translate(0,-50%);-webkit-transform-origin:top;transform-origin:top;top:22px;right:15px;-webkit-transition:all 0.3s ease-out;transition:all 0.3s ease-out}.sidebar-nav .has-arrow[aria-expanded=true]:after,.sidebar-nav li.active>.has-arrow:after,.sidebar-nav li>.has-arrow.active:after{top:18px;margin-top:1px;border-color:#fff;-webkit-transform:rotate(-135deg) translate(0,-50%);transform:rotate(-135deg) translate(0,-50%)}.app-header{position:relative;z-index:50;width:100%;background:#fff;padding:0 25px}.app-header .container-fluid,.app-header .container-lg,.app-header .container-md,.app-header .container-sm,.app-header .container-xl,.app-header .container-xxl{max-width:1200px;margin:0 auto;padding:0 30px}.app-header .navbar{min-height:70px;padding:0}.app-header .navbar .navbar-nav .nav-item .nav-link{padding:8px 16px;line-height:70px;height:70px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:20px;z-index:2}.app-header .navbar .navbar-nav.quick-links .nav-item .nav-link{font-size:0.875rem;position:relative;z-index:2}.app-header .navbar .navbar-nav.quick-links .nav-item:hover .nav-link{-webkit-transition:all 0.1s ease-in-out;transition:all 0.1s ease-in-out;color:#5D87FF!important}.app-header .navbar .navbar-nav.quick-links .nav-item:hover .nav-link:before{content:"";position:absolute;left:0;right:0;height:36px;width:100%;border-radius:7px;background:#ECF2FF;z-index:-1}.nav-icon-hover{-webkit-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out}.nav-icon-hover:hover:before{content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);height:40px;width:40px;z-index:-1;border-radius:100px;-webkit-transition:all 0.3s ease-in-out;transition:all 0.3s ease-in-out;background-color:#ECF2FF}.profile-name{color:#fff}.message-body{max-height:360px}.arrow-none.dropdown-toggle:after{display:none}.navbar-nav .dropdown-menu{position:absolute;min-width:200px}.navbar-nav .dropdown-menu .dropdown-item{border-radius:8px}.navbar-nav .hover-dd{position:static}.navbar-nav .hover-dd .dropdown-menu-nav{max-width:860px;width:100%}.navbar-nav .hover-dd:hover .dropdown-menu{display:block}.notification{content:"";position:absolute;top:22px;right:9px;width:8px;height:8px}.notify-badge{position:relative}.notify-badge .badge{width:18px;height:18px;padding:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:16px;right:6px}.profile-dropdown{max-height:100vh}.mobile-navbar{height:calc(100vh - 40px)}.shopping-cart{width:330px!important}@media (max-width:991.98px){.app-header.fixed-header .navbar-collapse{padding:0 0px}.app-header .navbar{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.app-header .navbar .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-collapse{border-top:1px solid #ebf1f6;padding:0 15px;background-color:#fff;border-bottom-left-radius:15px;border-bottom-right-radius:15px}}@media (max-width:767.98px){.app-header .container-fluid,.app-header .container-lg,.app-header .container-md,.app-header .container-sm,.app-header .container-xl,.app-header .container-xxl{padding:0 20px}.navbar-nav .dropdown-menu{position:absolute;width:100%}.navbar-nav .nav-item.dropdown{position:static}}.searchbar{position:absolute;left:0;top:0;width:100%;z-index:110}@-webkit-keyframes animation-dropdown-menu-move-up-scroll{0%{top:71px}to{top:70px}}@keyframes animation-dropdown-menu-move-up-scroll{0%{top:71px}to{top:70px}}@-webkit-keyframes animation-dropdown-menu-fade-in{0%{opacity:0}to{opacity:1}}@keyframes animation-dropdown-menu-fade-in{0%{opacity:0}to{opacity:1}}.dropdown-menu-animate-up{-webkit-animation:animation-dropdown-menu-fade-in 0.5s ease 1,animation-dropdown-menu-move-up 0.5s ease-out 1;animation:animation-dropdown-menu-fade-in 0.5s ease 1,animation-dropdown-menu-move-up 0.5s ease-out 1}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:none;transform:none}}@media (max-width:991.98px){.w-xs-100{width:100%!important}}#main-wrapper[data-layout=vertical] .app-header.fixed-header{-webkit-transition:0.2s ease-in;transition:0.2s ease-in}#main-wrapper[data-layout=vertical] .app-header.fixed-header .notification{top:20px}#main-wrapper[data-layout=vertical] .app-header.fixed-header .navbar{background:#fff;padding:0 15px;border-radius:15px;-webkit-box-shadow:1px 0px 20px 0px rgba(0,0,0,0.12);box-shadow:1px 0px 20px 0px rgba(0,0,0,0.12);margin-top:15px}.page-wrapper{position:relative}.body-wrapper{position:relative}.body-wrapper>.container-fluid,.body-wrapper>.container-lg,.body-wrapper>.container-md,.body-wrapper>.container-sm,.body-wrapper>.container-xl,.body-wrapper>.container-xxl{max-width:1200px;margin:0 auto;padding:24px;-webkit-transition:0.2s ease-in;transition:0.2s ease-in}@media (max-width:767.98px){.body-wrapper>.container-fluid,.body-wrapper>.container-lg,.body-wrapper>.container-md,.body-wrapper>.container-sm,.body-wrapper>.container-xl,.body-wrapper>.container-xxl{padding:30px 20px}}.simplebar-scrollbar:before{background:rgba(0,0,0,0.5)!important}#main-wrapper[data-layout=vertical][data-sidebar-position=fixed] .left-sidebar{position:fixed;top:0}#main-wrapper[data-layout=vertical][data-header-position=fixed] .app-header{position:fixed;z-index:10}#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-fluid,#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-lg,#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-md,#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-sm,#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-xl,#main-wrapper[data-layout=vertical][data-header-position=fixed] .body-wrapper>.container-xxl{padding-top:calc(70px + 15px)}@media (min-width:1200px){#main-wrapper[data-layout=vertical][data-header-position=fixed][data-sidebartype=mini-sidebar] .app-header{width:100%}#main-wrapper[data-layout=vertical][data-header-position=fixed] .app-header{width:calc(100% - 270px)}#main-wrapper[data-layout=vertical][data-sidebartype=full] .body-wrapper{margin-left:270px}}@media (max-width:1199px){#main-wrapper[data-layout=vertical][data-sidebartype=full] .left-sidebar,#main-wrapper[data-layout=vertical][data-sidebartype=mini-sidebar] .left-sidebar{left:-270px}#main-wrapper[data-layout=vertical][data-sidebartype=full].show-sidebar .left-sidebar,#main-wrapper[data-layout=vertical][data-sidebartype=mini-sidebar].show-sidebar .left-sidebar{left:0}}.hover-img{-webkit-transition:all 0.2s ease-in 0s;transition:all 0.2s ease-in 0s}.hover-img:hover{-webkit-transform:scale(1.01);transform:scale(1.01)}.z-1{position:relative;z-index:1}.text-bodycolor{color:#5A6A85!important}*{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}a{text-decoration:none}a:hover{color:#5D87FF}ul{list-style:none;padding-left:0}:focus{outline:0;-webkit-box-shadow:none!important;box-shadow:none!important}.cursor-pointer{cursor:pointer}.calendar-events{cursor:move}.object-fit-cover{-o-object-fit:cover;object-fit:cover}.card-title{font-size:18px}.card-subtitle{font-size:14px}.card{margin-bottom:30px}.card-hover{-webkit-transition:0.2s ease-in;transition:0.2s ease-in}.card-hover:hover{-webkit-transform:translate3d(0px,-5px,0px);transform:translate3d(0px,-5px,0px)}.round-8{width:8px;height:8px}.round-20{width:20px!important;height:20px!important}.radial-gradient{position:relative}.radial-gradient:before{content:"";position:absolute;height:100%;width:100%;opacity:0.3;background:radial-gradient(rgb(210,241,223),rgb(211,215,250),rgb(186,216,244)) 0% 0%/400% 400%;-webkit-animation:15s ease 0s infinite normal none running gradient;animation:15s ease 0s infinite normal none running gradient}.timeline-widget .timeline-item{min-height:70px}.timeline-widget .timeline-item .timeline-time{padding:6px 16px 6px 0;min-width:90px}.timeline-widget .timeline-item .timeline-badge-wrap .timeline-badge{width:12px;height:12px;border-radius:50px;background-color:transparent}.timeline-widget .timeline-item .timeline-badge-wrap .timeline-badge-border{width:1px;height:100%;background-color:#ebf1f6}.timeline-widget .timeline-item .timeline-desc{padding:6px 16px}.timeline-widget .timeline-item .timeline-badge.badge-primary{border:2px solid #5D87FF} \ No newline at end of file diff --git a/public/assets/css/styles.min.css b/public/assets/css/styles.min.css new file mode 100644 index 0000000..c6bdd2d --- /dev/null +++ b/public/assets/css/styles.min.css @@ -0,0 +1,16908 @@ +@charset "UTF-8"; +@import url("https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@200;300;400;500;600;700;800&display=swap"); +/*! + * Bootstrap v5.3.0-alpha1 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +@import "../libs/simplebar/dist/simplebar.css"; +@import "../css/icons/tabler-icons/tabler-icons.css"; +:root, +[data-bs-theme="light"] { + --bs-blue: #5d87ff; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #fa896b; + --bs-orange: #fd7e14; + --bs-yellow: #ffae1f; + --bs-green: #13deb9; + --bs-teal: #20c997; + --bs-cyan: #539bff; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #2a3547; + --bs-gray-dark: #343a40; + --bs-gray-100: #f6f9fc; + --bs-gray-200: #eaeff4; + --bs-gray-300: #dfe5ef; + --bs-gray-400: #7c8fac; + --bs-gray-500: #5a6a85; + --bs-gray-600: #2a3547; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #5d87ff; + --bs-secondary: #49beff; + --bs-success: #13deb9; + --bs-info: #539bff; + --bs-warning: #ffae1f; + --bs-danger: #fa896b; + --bs-light: #f6f9fc; + --bs-dark: #2a3547; + --bs-muted: #5a6a85; + --bs-indigo: #6610f2; + --bs-light-primary: #ecf2ff; + --bs-light-secondary: #e8f7ff; + --bs-light-info: #ebf3fe; + --bs-light-success: #e6fffa; + --bs-light-warning: #fef5e5; + --bs-light-danger: #fbf2ef; + --bs-light-indigo: #ebf3fe; + --bs-dark-light: #2a3547; + --bs-light-gray: #f6f9fc; + --bs-primary-rgb: 93, 135, 255; + --bs-secondary-rgb: 73, 190, 255; + --bs-success-rgb: 19, 222, 185; + --bs-info-rgb: 83, 155, 255; + --bs-warning-rgb: 255, 174, 31; + --bs-danger-rgb: 250, 137, 107; + --bs-light-rgb: 246, 249, 252; + --bs-dark-rgb: 42, 53, 71; + --bs-muted-rgb: 90, 106, 133; + --bs-indigo-rgb: 102, 16, 242; + --bs-light-primary-rgb: 236, 242, 255; + --bs-light-secondary-rgb: 232, 247, 255; + --bs-light-info-rgb: 235, 243, 254; + --bs-light-success-rgb: 230, 255, 250; + --bs-light-warning-rgb: 254, 245, 229; + --bs-light-danger-rgb: 251, 242, 239; + --bs-light-indigo-rgb: 235, 243, 254; + --bs-dark-light-rgb: 42, 53, 71; + --bs-light-gray-rgb: 246, 249, 252; + --bs-primary-text: #4a6ccc; + --bs-secondary-text: #2a3547; + --bs-success-text: #0fb294; + --bs-info-text: #325d99; + --bs-warning-text: #996813; + --bs-danger-text: #c86e56; + --bs-light-text: #2a3547; + --bs-dark-text: #495057; + --bs-primary-bg-subtle: #dfe7ff; + --bs-secondary-bg-subtle: #f6f9fc; + --bs-success-bg-subtle: #d0f8f1; + --bs-info-bg-subtle: #ddebff; + --bs-warning-bg-subtle: #ffefd2; + --bs-danger-bg-subtle: #fee7e1; + --bs-light-bg-subtle: #fbfcfe; + --bs-dark-bg-subtle: #7c8fac; + --bs-primary-border-subtle: #becfff; + --bs-secondary-border-subtle: #eaeff4; + --bs-success-border-subtle: #a1f2e3; + --bs-info-border-subtle: #bad7ff; + --bs-warning-border-subtle: #ffdfa5; + --bs-danger-border-subtle: #fdd0c4; + --bs-light-border-subtle: #eaeff4; + --bs-dark-border-subtle: #5a6a85; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 90, 106, 133; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: "Plus Jakarta Sans", sans-serif; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, + "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient( + 180deg, + rgba(255, 255, 255, 0.15), + rgba(255, 255, 255, 0) + ); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 0.875rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #5a6a85; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(90, 106, 133, 0.75); + --bs-secondary-color-rgb: 90, 106, 133; + --bs-secondary-bg: #eaeff4; + --bs-secondary-bg-rgb: 234, 239, 244; + --bs-tertiary-color: rgba(90, 106, 133, 0.5); + --bs-tertiary-color-rgb: 90, 106, 133; + --bs-tertiary-bg: #f6f9fc; + --bs-tertiary-bg-rgb: 246, 249, 252; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-heading-color: #2a3547; + --bs-link-color: #5d87ff; + --bs-link-color-rgb: 93, 135, 255; + --bs-link-decoration: underline; + --bs-link-hover-color: #4a6ccc; + --bs-link-hover-color-rgb: 74, 108, 204; + --bs-code-color: #d63384; + --bs-highlight-bg: #ffefd2; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #ebf1f6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 7px; + --bs-border-radius-sm: 5px; + --bs-border-radius-lg: 15px; + --bs-border-radius-xl: 12px; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + --bs-emphasis-color: #000; + --bs-form-control-bg: var(--bs-body-bg); + --bs-form-control-disabled-bg: var(--bs-secondary-bg); + --bs-highlight-bg: #ffefd2; + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} +[data-bs-theme="dark"] { + --bs-body-color: #5a6a85; + --bs-body-color-rgb: 90, 106, 133; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #f6f9fc; + --bs-emphasis-color-rgb: 246, 249, 252; + --bs-secondary-color: rgba(90, 106, 133, 0.75); + --bs-secondary-color-rgb: 90, 106, 133; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(90, 106, 133, 0.5); + --bs-tertiary-color-rgb: 90, 106, 133; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-emphasis-color: #fff; + --bs-primary-text: #9eb7ff; + --bs-secondary-text: #dfe5ef; + --bs-success-text: #71ebd5; + --bs-info-text: #98c3ff; + --bs-warning-text: #ffce79; + --bs-danger-text: #fcb8a6; + --bs-light-text: #f6f9fc; + --bs-dark-text: #dfe5ef; + --bs-primary-bg-subtle: #131b33; + --bs-secondary-bg-subtle: #212529; + --bs-success-bg-subtle: #042c25; + --bs-info-bg-subtle: #111f33; + --bs-warning-bg-subtle: #332306; + --bs-danger-bg-subtle: #321b15; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #385199; + --bs-secondary-border-subtle: #495057; + --bs-success-border-subtle: #0b856f; + --bs-info-border-subtle: #213e66; + --bs-warning-border-subtle: #66460c; + --bs-danger-border-subtle: #965240; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: #fff; + --bs-link-color: #9eb7ff; + --bs-link-hover-color: #becfff; + --bs-link-color-rgb: 158, 183, 255; + --bs-link-hover-color-rgb: 190, 207, 255; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); +} +*, +:after, +:before { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color, inherit); +} +.h1, +h1 { + font-size: calc(1.34375rem + 1.125vw); +} +@media (min-width: 1200px) { + .h1, + h1 { + font-size: 2.1875rem; + } +} +.h2, +h2 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + .h2, + h2 { + font-size: 1.75rem; + } +} +.h3, +h3 { + font-size: calc(1.278125rem + 0.3375vw); +} +@media (min-width: 1200px) { + .h3, + h3 { + font-size: 1.53125rem; + } +} +.h4, +h4 { + font-size: calc(1.25625rem + 0.075vw); +} +@media (min-width: 1200px) { + .h4, + h4 { + font-size: 1.3125rem; + } +} +.h5, +h5 { + font-size: 1.09375rem; +} +.h6, +h6 { + font-size: 0.875rem; +} +p { + margin-top: 0; + margin-bottom: 1rem; +} +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} +ol, +ul { + padding-left: 2rem; +} +dl, +ol, +ul { + margin-top: 0; + margin-bottom: 1rem; +} +ol ol, +ol ul, +ul ol, +ul ul { + margin-bottom: 0; +} +dt { + font-weight: 500; +} +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} +blockquote { + margin: 0 0 1rem; +} +b, +strong { + font-weight: 700; +} +.small, +small { + font-size: 0.875em; +} +.mark, +mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} +a:not([href]):not([class]), +a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} +code, +kbd, +pre, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 5px; +} +kbd kbd { + padding: 0; + font-size: 1em; +} +figure { + margin: 0 0 1rem; +} +img, +svg { + vertical-align: middle; +} +table { + caption-side: bottom; + border-collapse: collapse; +} +caption { + padding-top: 16px; + padding-bottom: 16px; + color: #5a6a85; + text-align: left; +} +th { + font-weight: 600; + text-align: inherit; + text-align: -webkit-match-parent; +} +tbody, +td, +tfoot, +th, +thead, +tr { + border-color: inherit; + border-style: solid; + border-width: 0; +} +label { + display: inline-block; +} +button { + border-radius: 0; +} +button:focus:not(:focus-visible) { + outline: 0; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +button, +select { + text-transform: none; +} +[role="button"] { + cursor: pointer; +} +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} +[list]:not([type="date"]):not([type="datetime-local"]):not([type="month"]):not( + [type="week"] + ):not([type="time"])::-webkit-calendar-picker-indicator { + display: none !important; +} +[type="button"], +[type="reset"], +[type="submit"], +button { + -webkit-appearance: button; +} +[type="button"]:not(:disabled), +[type="reset"]:not(:disabled), +[type="submit"]:not(:disabled), +button:not(:disabled) { + cursor: pointer; +} +::-moz-focus-inner { + padding: 0; + border-style: none; +} +textarea { + resize: vertical; +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-year-field { + padding: 0; +} +::-webkit-inner-spin-button { + height: auto; +} +[type="search"] { + outline-offset: -2px; + -webkit-appearance: textfield; +} +::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-color-swatch-wrapper { + padding: 0; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +iframe { + border: 0; +} +summary { + display: list-item; + cursor: pointer; +} +progress { + vertical-align: baseline; +} +[hidden] { + display: none !important; +} +.lead { + font-size: 1.09375rem; + font-weight: 300; +} +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + list-style: none; +} +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} +.blockquote { + margin-bottom: 1rem; + font-size: 1.09375rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #2a3547; +} +.blockquote-footer:before { + content: "— "; +} +.img-fluid { + max-width: 100%; + height: auto; +} +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + -webkit-box-shadow: var(--bs-box-shadow-sm); + box-shadow: var(--bs-box-shadow-sm); + max-width: 100%; + height: auto; +} +.figure { + display: inline-block; +} +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} +.figure-caption { + font-size: 0.875em; + color: var(--bs-secondary-color); +} +.container, +.container-fluid, +.container-lg, +.container-md, +.container-sm, +.container-xl, +.container-xxl { + --bs-gutter-x: 24px; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 576px) { + .container, + .container-sm { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container, + .container-md, + .container-sm { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container, + .container-lg, + .container-md, + .container-sm { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container, + .container-lg, + .container-md, + .container-sm, + .container-xl, + .container-xxl { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 24px; + --bs-gutter-y: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + -ms-flex-negative: 0; + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} +.col { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; +} +.row-cols-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} +.row-cols-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; +} +.row-cols-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; +} +.row-cols-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; +} +.row-cols-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; +} +.row-cols-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; +} +.row-cols-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; +} +.col-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; +} +.col-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; +} +.col-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; +} +.col-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; +} +.col-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; +} +.col-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; +} +.col-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; +} +.col-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; +} +.col-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; +} +.col-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; +} +.col-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; +} +.col-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; +} +.col-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; +} +.offset-1 { + margin-left: 8.33333333%; +} +.offset-2 { + margin-left: 16.66666667%; +} +.offset-3 { + margin-left: 25%; +} +.offset-4 { + margin-left: 33.33333333%; +} +.offset-5 { + margin-left: 41.66666667%; +} +.offset-6 { + margin-left: 50%; +} +.offset-7 { + margin-left: 58.33333333%; +} +.offset-8 { + margin-left: 66.66666667%; +} +.offset-9 { + margin-left: 75%; +} +.offset-10 { + margin-left: 83.33333333%; +} +.offset-11 { + margin-left: 91.66666667%; +} +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} +.g-6, +.gx-6 { + --bs-gutter-x: 12px; +} +.g-6, +.gy-6 { + --bs-gutter-y: 12px; +} +.g-7, +.gx-7 { + --bs-gutter-x: 30px; +} +.g-7, +.gy-7 { + --bs-gutter-y: 30px; +} +.g-8, +.gx-8 { + --bs-gutter-x: 10px; +} +.g-8, +.gy-8 { + --bs-gutter-y: 10px; +} +.g-9, +.gx-9 { + --bs-gutter-x: 20px; +} +.g-9, +.gy-9 { + --bs-gutter-y: 20px; +} +@media (min-width: 576px) { + .col-sm { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } + .g-sm-6, + .gx-sm-6 { + --bs-gutter-x: 12px; + } + .g-sm-6, + .gy-sm-6 { + --bs-gutter-y: 12px; + } + .g-sm-7, + .gx-sm-7 { + --bs-gutter-x: 30px; + } + .g-sm-7, + .gy-sm-7 { + --bs-gutter-y: 30px; + } + .g-sm-8, + .gx-sm-8 { + --bs-gutter-x: 10px; + } + .g-sm-8, + .gy-sm-8 { + --bs-gutter-y: 10px; + } + .g-sm-9, + .gx-sm-9 { + --bs-gutter-x: 20px; + } + .g-sm-9, + .gy-sm-9 { + --bs-gutter-y: 20px; + } +} +@media (min-width: 768px) { + .col-md { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .row-cols-md-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } + .g-md-6, + .gx-md-6 { + --bs-gutter-x: 12px; + } + .g-md-6, + .gy-md-6 { + --bs-gutter-y: 12px; + } + .g-md-7, + .gx-md-7 { + --bs-gutter-x: 30px; + } + .g-md-7, + .gy-md-7 { + --bs-gutter-y: 30px; + } + .g-md-8, + .gx-md-8 { + --bs-gutter-x: 10px; + } + .g-md-8, + .gy-md-8 { + --bs-gutter-y: 10px; + } + .g-md-9, + .gx-md-9 { + --bs-gutter-x: 20px; + } + .g-md-9, + .gy-md-9 { + --bs-gutter-y: 20px; + } +} +@media (min-width: 992px) { + .col-lg { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } + .g-lg-6, + .gx-lg-6 { + --bs-gutter-x: 12px; + } + .g-lg-6, + .gy-lg-6 { + --bs-gutter-y: 12px; + } + .g-lg-7, + .gx-lg-7 { + --bs-gutter-x: 30px; + } + .g-lg-7, + .gy-lg-7 { + --bs-gutter-y: 30px; + } + .g-lg-8, + .gx-lg-8 { + --bs-gutter-x: 10px; + } + .g-lg-8, + .gy-lg-8 { + --bs-gutter-y: 10px; + } + .g-lg-9, + .gx-lg-9 { + --bs-gutter-x: 20px; + } + .g-lg-9, + .gy-lg-9 { + --bs-gutter-y: 20px; + } +} +@media (min-width: 1200px) { + .col-xl { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } + .g-xl-6, + .gx-xl-6 { + --bs-gutter-x: 12px; + } + .g-xl-6, + .gy-xl-6 { + --bs-gutter-y: 12px; + } + .g-xl-7, + .gx-xl-7 { + --bs-gutter-x: 30px; + } + .g-xl-7, + .gy-xl-7 { + --bs-gutter-y: 30px; + } + .g-xl-8, + .gx-xl-8 { + --bs-gutter-x: 10px; + } + .g-xl-8, + .gy-xl-8 { + --bs-gutter-y: 10px; + } + .g-xl-9, + .gx-xl-9 { + --bs-gutter-x: 20px; + } + .g-xl-9, + .gy-xl-9 { + --bs-gutter-y: 20px; + } +} +@media (min-width: 1400px) { + .col-xxl { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } + .g-xxl-6, + .gx-xxl-6 { + --bs-gutter-x: 12px; + } + .g-xxl-6, + .gy-xxl-6 { + --bs-gutter-y: 12px; + } + .g-xxl-7, + .gx-xxl-7 { + --bs-gutter-x: 30px; + } + .g-xxl-7, + .gy-xxl-7 { + --bs-gutter-y: 30px; + } + .g-xxl-8, + .gx-xxl-8 { + --bs-gutter-x: 10px; + } + .g-xxl-8, + .gy-xxl-8 { + --bs-gutter-y: 10px; + } + .g-xxl-9, + .gx-xxl-9 { + --bs-gutter-x: 20px; + } + .g-xxl-9, + .gy-xxl-9 { + --bs-gutter-y: 20px; + } +} +.table { + --bs-table-color: var(--bs-body-color); + --bs-table-bg: transparent; + --bs-table-border-color: #ebf1f6; + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: #eaeff4; + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: #f6f9fc; + width: 100%; + margin-bottom: 1rem; + color: var(--bs-table-color); + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 16px 16px; + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + -webkit-box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} +.table-group-divider { + border-top: calc(var(--bs-border-width) * 2) solid currentcolor; +} +.caption-top { + caption-side: top; +} +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} +.table-bordered > :not(caption) > * { + border-width: var(--bs-border-width) 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--bs-border-width); +} +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} +.table-striped-columns > :not(caption) > tr > :nth-child(2n) { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #dfe7ff; + --bs-table-border-color: #c9d0e6; + --bs-table-striped-bg: #d4dbf2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #c9d0e6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ced6ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #dbf2ff; + --bs-table-border-color: #c5dae6; + --bs-table-striped-bg: #d0e6f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #c5dae6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #cbe0ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d0f8f1; + --bs-table-border-color: #bbdfd9; + --bs-table-striped-bg: #c6ece5; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bbdfd9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c0e5df; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-info { + --bs-table-color: #000; + --bs-table-bg: #ddebff; + --bs-table-border-color: #c7d4e6; + --bs-table-striped-bg: #d2dff2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #c7d4e6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ccd9ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #ffefd2; + --bs-table-border-color: #e6d7bd; + --bs-table-striped-bg: #f2e3c8; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6d7bd; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ecddc2; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #fee7e1; + --bs-table-border-color: #e5d0cb; + --bs-table-striped-bg: #f1dbd6; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e5d0cb; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ebd6d0; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f6f9fc; + --bs-table-border-color: #dde0e3; + --bs-table-striped-bg: #eaedef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dde0e3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e4e6e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #2a3547; + --bs-table-border-color: #3f4959; + --bs-table-striped-bg: #353f50; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #3f4959; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #3a4455; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; + font-weight: 600; + color: #2a3547; +} +.col-form-label { + padding-top: calc(8px + var(--bs-border-width)); + padding-bottom: calc(8px + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + font-weight: 600; + line-height: 1.5; + color: #2a3547; +} +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.09375rem; +} +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.765625rem; +} +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #5a6a85; +} +.form-control { + display: block; + width: 100%; + padding: 8px 16px; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #5a6a85; + background-color: transparent; + background-clip: padding-box; + border: var(--bs-border-width) solid #dfe5ef; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 7px; + -webkit-box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + -webkit-transition: border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + -webkit-transition: none; + transition: none; + } +} +.form-control[type="file"] { + overflow: hidden; +} +.form-control[type="file"]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: #5a6a85; + background-color: transparent; + border-color: #aec3ff; + outline: 0; + -webkit-box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075), + 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075), + 0 0 0 0.25rem rgba(93, 135, 255, 0.25); +} +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-webkit-input-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::-ms-input-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:disabled { + background-color: var(--bs-form-control-disabled-bg); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 8px 16px; + margin: -8px -16px; + -webkit-margin-end: 16px; + margin-inline-end: 16px; + color: #5a6a85; + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 8px 16px; + margin: -8px -16px; + -webkit-margin-end: 16px; + margin-inline-end: 16px; + color: #5a6a85; + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + -webkit-transition: none; + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); +} +.form-control-plaintext { + display: block; + width: 100%; + padding: 8px 0; + margin-bottom: 0; + line-height: 1.5; + color: var(--bs-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--bs-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-lg, +.form-control-plaintext.form-control-sm { + padding-right: 0; + padding-left: 0; +} +.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); + padding: 0.25rem 0.5rem; + font-size: 0.765625rem; + border-radius: 5px; +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); + padding: 0.5rem 1rem; + font-size: 1.09375rem; + border-radius: 15px; +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +textarea.form-control { + min-height: calc(1.5em + 16px + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color { + width: 3rem; + height: calc(1.5em + 16px + calc(var(--bs-border-width) * 2)); + padding: 8px; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: 7px; +} +.form-control-color::-webkit-color-swatch { + border-radius: 7px; +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 8px 38px 8px 16px; + -moz-padding-start: 13px; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #5a6a85; + background-color: transparent; + background-image: var(--bs-form-select-bg-img), + var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 16px center; + background-size: 16px 12px; + border: var(--bs-border-width) solid #dfe5ef; + border-radius: 7px; + -webkit-box-shadow: unset; + box-shadow: unset; + -webkit-transition: border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + -webkit-transition: none; + transition: none; + } +} +.form-select:focus { + border-color: #aec3ff; + outline: 0; + -webkit-box-shadow: unset, 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + box-shadow: unset, 0 0 0 0.25rem rgba(93, 135, 255, 0.25); +} +.form-select[multiple], +.form-select[size]:not([size="1"]) { + padding-right: 16px; + background-image: none; +} +.form-select:disabled { + background-color: var(--bs-form-control-disabled-bg); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #5a6a85; +} +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.765625rem; + border-radius: 5px; +} +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.09375rem; + border-radius: 15px; +} +[data-bs-theme="dark"] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%235A6A85' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} +.form-check { + display: block; + min-height: 1.188em; + padding-left: 1.688em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.688em; +} +.form-check-reverse { + padding-right: 1.688em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.688em; + margin-left: 0; +} +.form-check-input { + --bs-form-check-bg: transparent; + width: 1.188em; + height: 1.188em; + margin-top: 0.156em; + vertical-align: top; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1.25px solid #dfe5ef; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type="checkbox"] { + border-radius: 0.25em; +} +.form-check-input[type="radio"] { + border-radius: 50%; +} +.form-check-input:active { + -webkit-filter: brightness(90%); + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #aec3ff; + outline: 0; + -webkit-box-shadow: 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + box-shadow: 0 0 0 0.25rem rgba(93, 135, 255, 0.25); +} +.form-check-input:checked { + background-color: #5d87ff; + border-color: #5d87ff; +} +.form-check-input:checked[type="checkbox"] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type="radio"] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type="checkbox"]:indeterminate { + background-color: #5d87ff; + border-color: #5d87ff; + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + -webkit-filter: none; + filter: none; + opacity: 0.5; +} +.form-check-input:disabled ~ .form-check-label, +.form-check-input[disabled] ~ .form-check-label { + cursor: default; + opacity: 0.5; +} +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 2em; + -webkit-transition: background-position 0.15s ease-in-out; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + -webkit-transition: none; + transition: none; + } +} +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23aec3ff'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check:disabled + .btn, +.btn-check[disabled] + .btn { + pointer-events: none; + -webkit-filter: none; + filter: none; + opacity: 0.65; +} +[data-bs-theme="dark"] + .form-switch + .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + -webkit-box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(93, 135, 255, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(93, 135, 255, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #5d87ff; + border: 0; + border-radius: 1rem; + -webkit-box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -webkit-transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #cedbff; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-tertiary-bg); + border-color: transparent; + border-radius: 1rem; + -webkit-box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); + box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #5d87ff; + border: 0; + border-radius: 1rem; + box-shadow: 0 0.1rem 0.25rem rgba(0, 0, 0, 0.1); + -moz-transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #cedbff; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-tertiary-bg); + border-color: transparent; + border-radius: 1rem; + box-shadow: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-secondary-color); +} +.form-floating { + position: relative; +} +.form-floating:before:not(.form-control:disabled) { + position: absolute; + top: var(--bs-border-width); + left: var(--bs-border-width); + width: calc(100% - (calc(calc(0.375em + 4px) + calc(0.75em + 8px)))); + height: 1.875em; + content: ""; + background-color: transparent; + border-radius: 7px; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem 16px; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--bs-border-width) solid transparent; + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transition: opacity 0.1s ease-in-out, + -webkit-transform 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out, -webkit-transform 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out, + -webkit-transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + -webkit-transition: none; + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 16px; +} +.form-floating > .form-control-plaintext::-webkit-input-placeholder, +.form-floating > .form-control::-webkit-input-placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext::-moz-placeholder, +.form-floating > .form-control::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext:-ms-input-placeholder, +.form-floating > .form-control:-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext::-ms-input-placeholder, +.form-floating > .form-control::-ms-input-placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext::placeholder, +.form-floating > .form-control::placeholder { + color: transparent; +} +.form-floating > .form-control-plaintext:not(:-moz-placeholder-shown), +.form-floating > .form-control:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control-plaintext:not(:-ms-input-placeholder), +.form-floating > .form-control:not(:-ms-input-placeholder) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown), +.form-floating > .form-control:focus, +.form-floating > .form-control:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control-plaintext:-webkit-autofill, +.form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-ms-input-placeholder) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + -webkit-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + -webkit-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--bs-border-width) 0; +} +.form-floating > .form-control:disabled ~ label { + color: #2a3547; +} +.input-group { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-floating, +.input-group > .form-select { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-floating:focus-within, +.input-group > .form-select:focus { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} +.input-group-text { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 8px 16px; + font-size: 0.875rem; + font-weight: 400; + line-height: 1.5; + color: #5a6a85; + text-align: center; + white-space: nowrap; + background-color: #eaeff4; + border: var(--bs-border-width) solid #f6f9fc; + border-radius: 7px; +} +.input-group-lg > .btn, +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text { + padding: 0.5rem 1rem; + font-size: 1.09375rem; + border-radius: 15px; +} +.input-group-sm > .btn, +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text { + padding: 0.25rem 0.5rem; + font-size: 0.765625rem; + border-radius: 5px; +} +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 54px; +} +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n + 3), +.input-group:not(.has-validation) + > .form-floating:not(:last-child) + > .form-control, +.input-group:not(.has-validation) + > .form-floating:not(:last-child) + > .form-select, +.input-group:not(.has-validation) + > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not( + .form-floating + ) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > .dropdown-toggle:nth-last-child(n + 4), +.input-group.has-validation + > .form-floating:nth-last-child(n + 3) + > .form-control, +.input-group.has-validation + > .form-floating:nth-last-child(n + 3) + > .form-select, +.input-group.has-validation + > :nth-last-child(n + 3):not(.dropdown-toggle):not(.dropdown-menu):not( + .form-floating + ) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group + > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not( + .valid-feedback + ):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--bs-border-width) * -1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-success-text); +} +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); +} +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip, +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip { + display: block; +} +.form-control.is-valid, +.was-validated .form-control:valid { + border-color: var(--bs-success); + padding-right: calc(1.5em + 16px); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2313DEB9' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 4px) center; + background-size: calc(0.75em + 8px) calc(0.75em + 8px); +} +.form-control.is-valid:focus, +.was-validated .form-control:valid:focus { + border-color: var(--bs-success); + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated textarea.form-control:valid, +textarea.form-control.is-valid { + padding-right: calc(1.5em + 16px); + background-position: top calc(0.375em + 4px) right calc(0.375em + 4px); +} +.form-select.is-valid, +.was-validated .form-select:valid { + border-color: var(--bs-success); +} +.form-select.is-valid:not([multiple]):not([size]), +.form-select.is-valid:not([multiple])[size="1"], +.was-validated .form-select:valid:not([multiple]):not([size]), +.was-validated .form-select:valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2313DEB9' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 78px; + background-position: right 16px center, center right 38px; + background-size: 16px 12px, calc(0.75em + 8px) calc(0.75em + 8px); +} +.form-select.is-valid:focus, +.was-validated .form-select:valid:focus { + border-color: var(--bs-success); + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.form-control-color.is-valid, +.was-validated .form-control-color:valid { + width: calc(3rem + calc(1.5em + 16px)); +} +.form-check-input.is-valid, +.was-validated .form-check-input:valid { + border-color: var(--bs-success); +} +.form-check-input.is-valid:checked, +.was-validated .form-check-input:valid:checked { + background-color: var(--bs-success-text); +} +.form-check-input.is-valid:focus, +.was-validated .form-check-input:valid:focus { + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.form-check-input.is-valid ~ .form-check-label, +.was-validated .form-check-input:valid ~ .form-check-label { + color: var(--bs-success-text); +} +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} +.input-group > .form-control:not(:focus).is-valid, +.input-group > .form-floating:not(:focus-within).is-valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-control:not(:focus):valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.was-validated .input-group > .form-select:not(:focus):valid { + z-index: 3; +} +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-danger-text); +} +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.765625rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); +} +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip, +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip { + display: block; +} +.form-control.is-invalid, +.was-validated .form-control:invalid { + border-color: var(--bs-danger); + padding-right: calc(1.5em + 16px); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FA896B'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FA896B' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 4px) center; + background-size: calc(0.75em + 8px) calc(0.75em + 8px); +} +.form-control.is-invalid:focus, +.was-validated .form-control:invalid:focus { + border-color: var(--bs-danger); + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated textarea.form-control:invalid, +textarea.form-control.is-invalid { + padding-right: calc(1.5em + 16px); + background-position: top calc(0.375em + 4px) right calc(0.375em + 4px); +} +.form-select.is-invalid, +.was-validated .form-select:invalid { + border-color: var(--bs-danger); +} +.form-select.is-invalid:not([multiple]):not([size]), +.form-select.is-invalid:not([multiple])[size="1"], +.was-validated .form-select:invalid:not([multiple]):not([size]), +.was-validated .form-select:invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23FA896B'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23FA896B' stroke='none'/%3e%3c/svg%3e"); + padding-right: 78px; + background-position: right 16px center, center right 38px; + background-size: 16px 12px, calc(0.75em + 8px) calc(0.75em + 8px); +} +.form-select.is-invalid:focus, +.was-validated .form-select:invalid:focus { + border-color: var(--bs-danger); + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.form-control-color.is-invalid, +.was-validated .form-control-color:invalid { + width: calc(3rem + calc(1.5em + 16px)); +} +.form-check-input.is-invalid, +.was-validated .form-check-input:invalid { + border-color: var(--bs-danger); +} +.form-check-input.is-invalid:checked, +.was-validated .form-check-input:invalid:checked { + background-color: var(--bs-danger-text); +} +.form-check-input.is-invalid:focus, +.was-validated .form-check-input:invalid:focus { + -webkit-box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.form-check-input.is-invalid ~ .form-check-label, +.was-validated .form-check-input:invalid ~ .form-check-label { + color: var(--bs-danger-text); +} +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} +.input-group > .form-control:not(:focus).is-invalid, +.input-group > .form-floating:not(:focus-within).is-invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-control:not(:focus):invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.was-validated .input-group > .form-select:not(:focus):invalid { + z-index: 4; +} +.btn { + --bs-btn-padding-x: 16px; + --bs-btn-padding-y: 7px; + --bs-btn-font-family: ; + --bs-btn-font-size: 14; + --bs-btn-font-weight: 500; + --bs-btn-line-height: 1.5; + --bs-btn-color: #5a6a85; + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: 7px; + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: unset; + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem + rgba(var(--bs-btn-focus-shadow-rgb), 0.5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + -webkit-box-shadow: var(--bs-btn-box-shadow); + box-shadow: var(--bs-btn-box-shadow); + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + -webkit-transition: none; + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + -webkit-box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); + box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + -webkit-box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); + box-shadow: var(--bs-btn-box-shadow), var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, +.btn.active, +.btn.show, +.btn:first-child:active, +:not(.btn-check) + .btn:active { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); + -webkit-box-shadow: var(--bs-btn-active-shadow); + box-shadow: var(--bs-btn-active-shadow); +} +.btn-check:checked + .btn:focus-visible, +.btn.active:focus-visible, +.btn.show:focus-visible, +.btn:first-child:active:focus-visible, +:not(.btn-check) + .btn:active:focus-visible { + -webkit-box-shadow: var(--bs-btn-active-shadow), + var(--bs-btn-focus-box-shadow); + box-shadow: var(--bs-btn-active-shadow), var(--bs-btn-focus-box-shadow); +} +.btn.disabled, +.btn:disabled, +fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #5d87ff; + --bs-btn-border-color: #5d87ff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #4f73d9; + --bs-btn-hover-border-color: #4a6ccc; + --bs-btn-focus-shadow-rgb: 117, 153, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4a6ccc; + --bs-btn-active-border-color: #4665bf; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #5d87ff; + --bs-btn-disabled-border-color: #5d87ff; +} +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #49beff; + --bs-btn-border-color: #49beff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #3ea2d9; + --bs-btn-hover-border-color: #3a98cc; + --bs-btn-focus-shadow-rgb: 100, 200, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #3a98cc; + --bs-btn-active-border-color: #378fbf; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #49beff; + --bs-btn-disabled-border-color: #49beff; +} +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #13deb9; + --bs-btn-border-color: #13deb9; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #10bd9d; + --bs-btn-hover-border-color: #0fb294; + --bs-btn-focus-shadow-rgb: 54, 227, 196; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0fb294; + --bs-btn-active-border-color: #0ea78b; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #13deb9; + --bs-btn-disabled-border-color: #13deb9; +} +.btn-info { + --bs-btn-color: #fff; + --bs-btn-bg: #539bff; + --bs-btn-border-color: #539bff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #4784d9; + --bs-btn-hover-border-color: #427ccc; + --bs-btn-focus-shadow-rgb: 109, 170, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #427ccc; + --bs-btn-active-border-color: #3e74bf; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #539bff; + --bs-btn-disabled-border-color: #539bff; +} +.btn-warning { + --bs-btn-color: #fff; + --bs-btn-bg: #ffae1f; + --bs-btn-border-color: #ffae1f; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #d9941a; + --bs-btn-hover-border-color: #cc8b19; + --bs-btn-focus-shadow-rgb: 255, 186, 65; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #cc8b19; + --bs-btn-active-border-color: #bf8317; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #ffae1f; + --bs-btn-disabled-border-color: #ffae1f; +} +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #fa896b; + --bs-btn-border-color: #fa896b; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #d5745b; + --bs-btn-hover-border-color: #c86e56; + --bs-btn-focus-shadow-rgb: 251, 155, 129; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #c86e56; + --bs-btn-active-border-color: #bc6750; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #fa896b; + --bs-btn-disabled-border-color: #fa896b; +} +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f6f9fc; + --bs-btn-border-color: #f6f9fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d1d4d6; + --bs-btn-hover-border-color: #c5c7ca; + --bs-btn-focus-shadow-rgb: 209, 212, 214; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c5c7ca; + --bs-btn-active-border-color: #b9bbbd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f6f9fc; + --bs-btn-disabled-border-color: #f6f9fc; +} +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #2a3547; + --bs-btn-border-color: #2a3547; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #4a5363; + --bs-btn-hover-border-color: #3f4959; + --bs-btn-focus-shadow-rgb: 74, 83, 99; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #555d6c; + --bs-btn-active-border-color: #3f4959; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #2a3547; + --bs-btn-disabled-border-color: #2a3547; +} +.btn-muted { + --bs-btn-color: #fff; + --bs-btn-bg: #5a6a85; + --bs-btn-border-color: #5a6a85; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #4d5a71; + --bs-btn-hover-border-color: #48556a; + --bs-btn-focus-shadow-rgb: 115, 128, 151; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #48556a; + --bs-btn-active-border-color: #445064; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #5a6a85; + --bs-btn-disabled-border-color: #5a6a85; +} +.btn-indigo { + --bs-btn-color: #fff; + --bs-btn-bg: #6610f2; + --bs-btn-border-color: #6610f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #570ece; + --bs-btn-hover-border-color: #520dc2; + --bs-btn-focus-shadow-rgb: 125, 52, 244; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #520dc2; + --bs-btn-active-border-color: #4d0cb6; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6610f2; + --bs-btn-disabled-border-color: #6610f2; +} +.btn-light-primary { + --bs-btn-color: #000; + --bs-btn-bg: #ecf2ff; + --bs-btn-border-color: #ecf2ff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #eff4ff; + --bs-btn-hover-border-color: #eef3ff; + --bs-btn-focus-shadow-rgb: 201, 206, 217; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f0f5ff; + --bs-btn-active-border-color: #eef3ff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ecf2ff; + --bs-btn-disabled-border-color: #ecf2ff; +} +.btn-light-secondary { + --bs-btn-color: #000; + --bs-btn-bg: #e8f7ff; + --bs-btn-border-color: #e8f7ff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ebf8ff; + --bs-btn-hover-border-color: #eaf8ff; + --bs-btn-focus-shadow-rgb: 197, 210, 217; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #edf9ff; + --bs-btn-active-border-color: #eaf8ff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #e8f7ff; + --bs-btn-disabled-border-color: #e8f7ff; +} +.btn-light-info { + --bs-btn-color: #000; + --bs-btn-bg: #ebf3fe; + --bs-btn-border-color: #ebf3fe; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #eef5fe; + --bs-btn-hover-border-color: #edf4fe; + --bs-btn-focus-shadow-rgb: 200, 207, 216; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #eff5fe; + --bs-btn-active-border-color: #edf4fe; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ebf3fe; + --bs-btn-disabled-border-color: #ebf3fe; +} +.btn-light-success { + --bs-btn-color: #000; + --bs-btn-bg: #e6fffa; + --bs-btn-border-color: #e6fffa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #eafffb; + --bs-btn-hover-border-color: #e9fffb; + --bs-btn-focus-shadow-rgb: 196, 217, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ebfffb; + --bs-btn-active-border-color: #e9fffb; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #e6fffa; + --bs-btn-disabled-border-color: #e6fffa; +} +.btn-light-warning { + --bs-btn-color: #000; + --bs-btn-bg: #fef5e5; + --bs-btn-border-color: #fef5e5; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #fef7e9; + --bs-btn-hover-border-color: #fef6e8; + --bs-btn-focus-shadow-rgb: 216, 208, 195; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #fef7ea; + --bs-btn-active-border-color: #fef6e8; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #fef5e5; + --bs-btn-disabled-border-color: #fef5e5; +} +.btn-light-danger { + --bs-btn-color: #000; + --bs-btn-bg: #fbf2ef; + --bs-btn-border-color: #fbf2ef; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #fcf4f1; + --bs-btn-hover-border-color: #fbf3f1; + --bs-btn-focus-shadow-rgb: 213, 206, 203; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #fcf5f2; + --bs-btn-active-border-color: #fbf3f1; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #fbf2ef; + --bs-btn-disabled-border-color: #fbf2ef; +} +.btn-light-indigo { + --bs-btn-color: #000; + --bs-btn-bg: #ebf3fe; + --bs-btn-border-color: #ebf3fe; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #eef5fe; + --bs-btn-hover-border-color: #edf4fe; + --bs-btn-focus-shadow-rgb: 200, 207, 216; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #eff5fe; + --bs-btn-active-border-color: #edf4fe; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ebf3fe; + --bs-btn-disabled-border-color: #ebf3fe; +} +.btn-dark-light { + --bs-btn-color: #fff; + --bs-btn-bg: #2a3547; + --bs-btn-border-color: #2a3547; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #242d3c; + --bs-btn-hover-border-color: #222a39; + --bs-btn-focus-shadow-rgb: 74, 83, 99; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #222a39; + --bs-btn-active-border-color: #202835; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #2a3547; + --bs-btn-disabled-border-color: #2a3547; +} +.btn-light-gray { + --bs-btn-color: #000; + --bs-btn-bg: #f6f9fc; + --bs-btn-border-color: #f6f9fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f7fafc; + --bs-btn-hover-border-color: #f7fafc; + --bs-btn-focus-shadow-rgb: 209, 212, 214; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8fafd; + --bs-btn-active-border-color: #f7fafc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f6f9fc; + --bs-btn-disabled-border-color: #f6f9fc; +} +.btn-outline-primary { + --bs-btn-color: #5d87ff; + --bs-btn-border-color: #5d87ff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5d87ff; + --bs-btn-hover-border-color: #5d87ff; + --bs-btn-focus-shadow-rgb: 93, 135, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #5d87ff; + --bs-btn-active-border-color: #5d87ff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #5d87ff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #5d87ff; + --bs-gradient: none; +} +.btn-outline-secondary { + --bs-btn-color: #49beff; + --bs-btn-border-color: #49beff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #49beff; + --bs-btn-hover-border-color: #49beff; + --bs-btn-focus-shadow-rgb: 73, 190, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #49beff; + --bs-btn-active-border-color: #49beff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #49beff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #49beff; + --bs-gradient: none; +} +.btn-outline-success { + --bs-btn-color: #13deb9; + --bs-btn-border-color: #13deb9; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #13deb9; + --bs-btn-hover-border-color: #13deb9; + --bs-btn-focus-shadow-rgb: 19, 222, 185; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #13deb9; + --bs-btn-active-border-color: #13deb9; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #13deb9; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #13deb9; + --bs-gradient: none; +} +.btn-outline-info { + --bs-btn-color: #539bff; + --bs-btn-border-color: #539bff; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #539bff; + --bs-btn-hover-border-color: #539bff; + --bs-btn-focus-shadow-rgb: 83, 155, 255; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #539bff; + --bs-btn-active-border-color: #539bff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #539bff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #539bff; + --bs-gradient: none; +} +.btn-outline-warning { + --bs-btn-color: #ffae1f; + --bs-btn-border-color: #ffae1f; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #ffae1f; + --bs-btn-hover-border-color: #ffae1f; + --bs-btn-focus-shadow-rgb: 255, 174, 31; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #ffae1f; + --bs-btn-active-border-color: #ffae1f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffae1f; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffae1f; + --bs-gradient: none; +} +.btn-outline-danger { + --bs-btn-color: #fa896b; + --bs-btn-border-color: #fa896b; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #fa896b; + --bs-btn-hover-border-color: #fa896b; + --bs-btn-focus-shadow-rgb: 250, 137, 107; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #fa896b; + --bs-btn-active-border-color: #fa896b; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fa896b; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #fa896b; + --bs-gradient: none; +} +.btn-outline-light { + --bs-btn-color: #f6f9fc; + --bs-btn-border-color: #f6f9fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f6f9fc; + --bs-btn-hover-border-color: #f6f9fc; + --bs-btn-focus-shadow-rgb: 246, 249, 252; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f6f9fc; + --bs-btn-active-border-color: #f6f9fc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f6f9fc; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f6f9fc; + --bs-gradient: none; +} +.btn-outline-dark { + --bs-btn-color: #2a3547; + --bs-btn-border-color: #2a3547; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #2a3547; + --bs-btn-hover-border-color: #2a3547; + --bs-btn-focus-shadow-rgb: 42, 53, 71; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #2a3547; + --bs-btn-active-border-color: #2a3547; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #2a3547; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #2a3547; + --bs-gradient: none; +} +.btn-outline-muted { + --bs-btn-color: #5a6a85; + --bs-btn-border-color: #5a6a85; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5a6a85; + --bs-btn-hover-border-color: #5a6a85; + --bs-btn-focus-shadow-rgb: 90, 106, 133; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #5a6a85; + --bs-btn-active-border-color: #5a6a85; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #5a6a85; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #5a6a85; + --bs-gradient: none; +} +.btn-outline-indigo { + --bs-btn-color: #6610f2; + --bs-btn-border-color: #6610f2; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6610f2; + --bs-btn-hover-border-color: #6610f2; + --bs-btn-focus-shadow-rgb: 102, 16, 242; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6610f2; + --bs-btn-active-border-color: #6610f2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6610f2; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6610f2; + --bs-gradient: none; +} +.btn-outline-light-primary { + --bs-btn-color: #ecf2ff; + --bs-btn-border-color: #ecf2ff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ecf2ff; + --bs-btn-hover-border-color: #ecf2ff; + --bs-btn-focus-shadow-rgb: 236, 242, 255; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ecf2ff; + --bs-btn-active-border-color: #ecf2ff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ecf2ff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ecf2ff; + --bs-gradient: none; +} +.btn-outline-light-secondary { + --bs-btn-color: #e8f7ff; + --bs-btn-border-color: #e8f7ff; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e8f7ff; + --bs-btn-hover-border-color: #e8f7ff; + --bs-btn-focus-shadow-rgb: 232, 247, 255; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e8f7ff; + --bs-btn-active-border-color: #e8f7ff; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e8f7ff; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e8f7ff; + --bs-gradient: none; +} +.btn-outline-light-info { + --bs-btn-color: #ebf3fe; + --bs-btn-border-color: #ebf3fe; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ebf3fe; + --bs-btn-hover-border-color: #ebf3fe; + --bs-btn-focus-shadow-rgb: 235, 243, 254; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ebf3fe; + --bs-btn-active-border-color: #ebf3fe; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ebf3fe; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ebf3fe; + --bs-gradient: none; +} +.btn-outline-light-success { + --bs-btn-color: #e6fffa; + --bs-btn-border-color: #e6fffa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #e6fffa; + --bs-btn-hover-border-color: #e6fffa; + --bs-btn-focus-shadow-rgb: 230, 255, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #e6fffa; + --bs-btn-active-border-color: #e6fffa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #e6fffa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #e6fffa; + --bs-gradient: none; +} +.btn-outline-light-warning { + --bs-btn-color: #fef5e5; + --bs-btn-border-color: #fef5e5; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #fef5e5; + --bs-btn-hover-border-color: #fef5e5; + --bs-btn-focus-shadow-rgb: 254, 245, 229; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #fef5e5; + --bs-btn-active-border-color: #fef5e5; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fef5e5; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #fef5e5; + --bs-gradient: none; +} +.btn-outline-light-danger { + --bs-btn-color: #fbf2ef; + --bs-btn-border-color: #fbf2ef; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #fbf2ef; + --bs-btn-hover-border-color: #fbf2ef; + --bs-btn-focus-shadow-rgb: 251, 242, 239; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #fbf2ef; + --bs-btn-active-border-color: #fbf2ef; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fbf2ef; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #fbf2ef; + --bs-gradient: none; +} +.btn-outline-light-indigo { + --bs-btn-color: #ebf3fe; + --bs-btn-border-color: #ebf3fe; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ebf3fe; + --bs-btn-hover-border-color: #ebf3fe; + --bs-btn-focus-shadow-rgb: 235, 243, 254; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ebf3fe; + --bs-btn-active-border-color: #ebf3fe; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ebf3fe; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ebf3fe; + --bs-gradient: none; +} +.btn-outline-dark-light { + --bs-btn-color: #2a3547; + --bs-btn-border-color: #2a3547; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #2a3547; + --bs-btn-hover-border-color: #2a3547; + --bs-btn-focus-shadow-rgb: 42, 53, 71; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #2a3547; + --bs-btn-active-border-color: #2a3547; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #2a3547; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #2a3547; + --bs-gradient: none; +} +.btn-outline-light-gray { + --bs-btn-color: #f6f9fc; + --bs-btn-border-color: #f6f9fc; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f6f9fc; + --bs-btn-hover-border-color: #f6f9fc; + --bs-btn-focus-shadow-rgb: 246, 249, 252; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f6f9fc; + --bs-btn-active-border-color: #f6f9fc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f6f9fc; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f6f9fc; + --bs-gradient: none; +} +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #2a3547; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: none; + --bs-btn-focus-shadow-rgb: 117, 153, 255; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} +.btn-group-lg > .btn, +.btn-lg { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.09375rem; + --bs-btn-border-radius: 9px; +} +.btn-group-sm > .btn, +.btn-sm { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.765625rem; + --bs-btn-border-radius: 5px; +} +.fade { + -webkit-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + -webkit-transition: none; + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} +.collapse:not(.show) { + display: none; +} +.collapsing { + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + -webkit-transition: none; + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + -webkit-transition: width 0.35s ease; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + -webkit-transition: none; + transition: none; + } +} +.dropdown, +.dropdown-center, +.dropend, +.dropstart, +.dropup, +.dropup-center { + position: relative; +} +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle:after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty:after { + margin-left: 0; +} +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 0.875rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: transparent; + --bs-dropdown-border-radius: 7px; + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc(7px - var(--bs-border-width)); + --bs-dropdown-divider-bg: transparent; + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: rgba(145, 158, 171, 0.2) 0px 0px 2px 0px, + rgba(145, 158, 171, 0.12) 0px 12px 24px -4px; + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: #f6f9fc; + --bs-dropdown-link-active-color: #2a3547; + --bs-dropdown-link-active-bg: #f6f9fc; + --bs-dropdown-link-disabled-color: #5a6a85; + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 10px; + --bs-dropdown-header-color: #2a3547; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid + var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); + -webkit-box-shadow: var(--bs-dropdown-box-shadow); + box-shadow: var(--bs-dropdown-box-shadow); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle:after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty:after { + margin-left: 0; +} +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle:after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty:after { + margin-left: 0; +} +.dropend .dropdown-toggle:after { + vertical-align: 0; +} +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle:after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle:after { + display: none; +} +.dropstart .dropdown-toggle:before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty:after { + margin-left: 0; +} +.dropstart .dropdown-toggle:before { + vertical-align: 0; +} +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); +} +.dropdown-item:focus, +.dropdown-item:hover { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, +.dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, +.dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} +.dropdown-menu.show { + display: block; +} +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) + var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.765625rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} +.dropdown-menu-dark { + --bs-dropdown-color: #dfe5ef; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: transparent; + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dfe5ef; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: transparent; + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #2a3547; + --bs-dropdown-link-active-bg: #f6f9fc; + --bs-dropdown-link-disabled-color: #5a6a85; + --bs-dropdown-header-color: #5a6a85; +} +.btn-group, +.btn-group-vertical { + position: relative; + display: -webkit-inline-box; + display: -ms-inline-flexbox; + display: inline-flex; + vertical-align: middle; +} +.btn-group-vertical > .btn, +.btn-group > .btn { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; +} +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn.active, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:hover, +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn.active, +.btn-group > .btn:active, +.btn-group > .btn:focus, +.btn-group > .btn:hover { + z-index: 1; +} +.btn-toolbar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} +.btn-group { + border-radius: 7px; +} +.btn-group > .btn-group:not(:first-child), +.btn-group > :not(.btn-check:first-child) + .btn { + margin-left: calc(var(--bs-border-width) * -1); +} +.btn-group > .btn-group:not(:last-child) > .btn, +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:not(:first-child) > .btn, +.btn-group > .btn:nth-child(n + 3), +.btn-group > :not(.btn-check) + .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.dropdown-toggle-split { + padding-right: 12px; + padding-left: 12px; +} +.dropdown-toggle-split:after, +.dropend .dropdown-toggle-split:after, +.dropup .dropdown-toggle-split:after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split:before { + margin-right: 0; +} +.btn-group-sm > .btn + .dropdown-toggle-split, +.btn-sm + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} +.btn-group-lg > .btn + .dropdown-toggle-split, +.btn-lg + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.btn-group.show .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} +.btn-group.show .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-group-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn-group:not(:first-child), +.btn-group-vertical > .btn:not(:first-child) { + margin-top: calc(var(--bs-border-width) * -1); +} +.btn-group-vertical > .btn-group:not(:last-child) > .btn, +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:not(:first-child) > .btn, +.btn-group-vertical > .btn ~ .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + -webkit-transition: none; + transition: none; + } +} +.nav-link:focus, +.nav-link:hover { + color: var(--bs-nav-link-hover-color); +} +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) + var(--bs-secondary-bg) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) + var(--bs-border-color) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid + var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + background: none; + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:focus, +.nav-tabs .nav-link:hover { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.disabled, +.nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-item.show .nav-link, +.nav-tabs .nav-link.active { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.nav-pills { + --bs-nav-pills-border-radius: 7px; + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #5d87ff; +} +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} +.nav-fill .nav-item, +.nav-fill > .nav-link { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + text-align: center; +} +.nav-justified .nav-item, +.nav-justified > .nav-link { + -ms-flex-preferred-size: 0; + flex-basis: 0; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + text-align: center; +} +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: #2a3547; + --bs-navbar-hover-color: #5d87ff; + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.3359375rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.09375rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.09375rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2890, 106, 133, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: 7px; + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-lg, +.navbar > .container-md, +.navbar > .container-sm, +.navbar > .container-xl, +.navbar > .container-xxl { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: inherit; + flex-wrap: inherit; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} +.navbar-brand:focus, +.navbar-brand:hover { + color: var(--bs-navbar-brand-hover-color); +} +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, +.navbar-nav .show > .nav-link { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:focus, +.navbar-text a:hover { + color: var(--bs-navbar-active-color); +} +.navbar-collapse { + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) + var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + -webkit-transition: var(--bs-navbar-toggler-transition); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + -webkit-transition: none; + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + -webkit-box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} +@media (min-width: 576px) { + .navbar-expand-sm { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + -ms-flex-preferred-size: auto; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + -webkit-transform: none !important; + transform: none !important; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-transition: none; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} +.navbar-dark { + --bs-navbar-color: #dfe5ef; + --bs-navbar-hover-color: #5d87ff; + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dfe5ef' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +[data-bs-theme="dark"] .navbar { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23dfe5ef' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.card { + --bs-card-spacer-y: 30px; + --bs-card-spacer-x: 30px; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: #2a3547; + --bs-card-subtitle-color: #2a3547; + --bs-card-border-width: 0px; + --bs-card-border-color: #ebf1f6; + --bs-card-border-radius: 7px; + --bs-card-box-shadow: rgba(145, 158, 171, 0.2) 0px 0px 2px 0px, + rgba(145, 158, 171, 0.12) 0px 12px 24px -4px; + --bs-card-inner-border-radius: 7px; + --bs-card-cap-padding-y: 15px; + --bs-card-cap-padding-x: 30px; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: auto; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 12px; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); + -webkit-box-shadow: var(--bs-card-box-shadow); + box-shadow: var(--bs-card-box-shadow); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} +.card-body { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; + color: var(--bs-card-subtitle-color); +} +.card-text:last-child { + margin-bottom: 0; +} +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) + var(--bs-card-inner-border-radius) 0 0; +} +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) + var(--bs-card-inner-border-radius); +} +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} +.card-img, +.card-img-bottom, +.card-img-top { + width: 100%; +} +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + } + .card-group > .card { + -webkit-box-flex: 1; + -ms-flex: 1 0 0%; + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-header, + .card-group > .card:not(:last-child) .card-img-top { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-footer, + .card-group > .card:not(:last-child) .card-img-bottom { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-header, + .card-group > .card:not(:first-child) .card-img-top { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-footer, + .card-group > .card:not(:first-child) .card-img-bottom { + border-bottom-left-radius: 0; + } +} +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: var(--bs-border-radius); + --bs-accordion-inner-border-radius: calc( + var(--bs-border-radius) - (var(--bs-border-width)) + ); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%235A6A85'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%234a6ccc'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: #aec3ff; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: var(--bs-primary-text); + --bs-accordion-active-bg: var(--bs-primary-bg-subtle); +} +.accordion-button { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 0.875rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + -webkit-transition: var(--bs-accordion-transition); + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + -webkit-transition: none; + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + -webkit-box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 + var(--bs-accordion-border-color); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 + var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed):after { + background-image: var(--bs-accordion-btn-active-icon); + -webkit-transform: var(--bs-accordion-btn-icon-transform); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button:after { + -ms-flex-negative: 0; + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + -webkit-transition: var(--bs-accordion-btn-icon-transition); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button:after { + -webkit-transition: none; + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + -webkit-box-shadow: var(--bs-accordion-btn-focus-box-shadow); + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} +.accordion-header { + margin-bottom: 0; +} +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid + var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-body { + padding: var(--bs-accordion-body-padding-y) + var(--bs-accordion-body-padding-x); +} +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, +.accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} +[data-bs-theme="dark"] .accordion-button:after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239eb7ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239eb7ff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-secondary-color); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-secondary-color); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item:before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/"); +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #5d87ff; + --bs-pagination-active-border-color: #5d87ff; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + padding-left: 0; + list-style: none; +} +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid + var(--bs-pagination-border-color); + -webkit-transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, -webkit-box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, + -webkit-box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + -webkit-transition: none; + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + -webkit-box-shadow: var(--bs-pagination-focus-box-shadow); + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.active > .page-link, +.page-link.active { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.disabled > .page-link, +.page-link.disabled { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.09375rem; + --bs-pagination-border-radius: 15px; +} +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.765625rem; + --bs-pagination-border-radius: 5px; +} +.badge { + --bs-badge-padding-x: 10px; + --bs-badge-padding-y: 5px; + --bs-badge-font-size: 0.875rem; + --bs-badge-font-weight: 400; + --bs-badge-color: #fff; + --bs-badge-border-radius: 4px; + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: 7px; + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} +.alert-heading { + color: inherit; +} +.alert-link { + font-weight: 500; + color: var(--bs-alert-link-color); +} +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} +.alert-primary { + --bs-alert-color: var(--bs-primary-text); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text); +} +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text); +} +.alert-success { + --bs-alert-color: var(--bs-success-text); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text); +} +.alert-info { + --bs-alert-color: var(--bs-info-text); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text); +} +.alert-warning { + --bs-alert-color: var(--bs-warning-text); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text); +} +.alert-danger { + --bs-alert-color: var(--bs-danger-text); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text); +} +.alert-light { + --bs-alert-color: var(--bs-light-text); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text); +} +.alert-dark { + --bs-alert-color: var(--bs-dark-text); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text); +} +.alert-muted { + --bs-alert-color: var(--bs-muted-text); + --bs-alert-bg: var(--bs-muted-bg-subtle); + --bs-alert-border-color: var(--bs-muted-border-subtle); + --bs-alert-link-color: var(--bs-muted-text); +} +.alert-indigo { + --bs-alert-color: var(--bs-indigo-text); + --bs-alert-bg: var(--bs-indigo-bg-subtle); + --bs-alert-border-color: var(--bs-indigo-border-subtle); + --bs-alert-link-color: var(--bs-indigo-text); +} +.alert-light-primary { + --bs-alert-color: var(--bs-light-primary-text); + --bs-alert-bg: var(--bs-light-primary-bg-subtle); + --bs-alert-border-color: var(--bs-light-primary-border-subtle); + --bs-alert-link-color: var(--bs-light-primary-text); +} +.alert-light-secondary { + --bs-alert-color: var(--bs-light-secondary-text); + --bs-alert-bg: var(--bs-light-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-light-secondary-border-subtle); + --bs-alert-link-color: var(--bs-light-secondary-text); +} +.alert-light-info { + --bs-alert-color: var(--bs-light-info-text); + --bs-alert-bg: var(--bs-light-info-bg-subtle); + --bs-alert-border-color: var(--bs-light-info-border-subtle); + --bs-alert-link-color: var(--bs-light-info-text); +} +.alert-light-success { + --bs-alert-color: var(--bs-light-success-text); + --bs-alert-bg: var(--bs-light-success-bg-subtle); + --bs-alert-border-color: var(--bs-light-success-border-subtle); + --bs-alert-link-color: var(--bs-light-success-text); +} +.alert-light-warning { + --bs-alert-color: var(--bs-light-warning-text); + --bs-alert-bg: var(--bs-light-warning-bg-subtle); + --bs-alert-border-color: var(--bs-light-warning-border-subtle); + --bs-alert-link-color: var(--bs-light-warning-text); +} +.alert-light-danger { + --bs-alert-color: var(--bs-light-danger-text); + --bs-alert-bg: var(--bs-light-danger-bg-subtle); + --bs-alert-border-color: var(--bs-light-danger-border-subtle); + --bs-alert-link-color: var(--bs-light-danger-text); +} +.alert-light-indigo { + --bs-alert-color: var(--bs-light-indigo-text); + --bs-alert-bg: var(--bs-light-indigo-bg-subtle); + --bs-alert-border-color: var(--bs-light-indigo-border-subtle); + --bs-alert-link-color: var(--bs-light-indigo-text); +} +.alert-dark-light { + --bs-alert-color: var(--bs-dark-light-text); + --bs-alert-bg: var(--bs-dark-light-bg-subtle); + --bs-alert-border-color: var(--bs-dark-light-border-subtle); + --bs-alert-link-color: var(--bs-dark-light-text); +} +.alert-light-gray { + --bs-alert-color: var(--bs-light-gray-text); + --bs-alert-bg: var(--bs-light-gray-bg-subtle); + --bs-alert-border-color: var(--bs-light-gray-border-subtle); + --bs-alert-link-color: var(--bs-light-gray-text); +} +@-webkit-keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, +.progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.65625rem; + --bs-progress-bg: var(--bs-secondary-bg); + --bs-progress-border-radius: var(--bs-border-radius); + --bs-progress-box-shadow: var(--bs-box-shadow-inset); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #5d87ff; + --bs-progress-bar-transition: width 0.6s ease; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); + -webkit-box-shadow: var(--bs-progress-box-shadow); + box-shadow: var(--bs-progress-box-shadow); +} +.progress-bar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + -webkit-transition: var(--bs-progress-bar-transition); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + -webkit-transition: none; + transition: none; + } +} +.progress-bar-striped { + background-image: linear-gradient( + 45deg, + rgba(255, 255, 255, 0.15) 25%, + transparent 25%, + transparent 50%, + rgba(255, 255, 255, 0.15) 50%, + rgba(255, 255, 255, 0.15) 75%, + transparent 75%, + transparent + ); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} +.progress-stacked > .progress { + overflow: visible; +} +.progress-stacked > .progress > .progress-bar { + width: 100%; +} +.progress-bar-animated { + -webkit-animation: 1s linear infinite progress-bar-stripes; + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + -webkit-animation: none; + animation: none; + } +} +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-secondary-color); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-secondary-bg); + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #5d87ff; + --bs-list-group-active-border-color: #5d87ff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item:before { + content: counters(section, ".") ". "; + counter-increment: section; +} +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:focus, +.list-group-item-action:hover { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) + var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid + var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, +.list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} +.list-group-horizontal { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} +@media (min-width: 576px) { + .list-group-horizontal-sm { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); +} +.list-group-item-primary.list-group-item-action:focus, +.list-group-item-primary.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); +} +.list-group-item-primary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-primary-text); + --bs-list-group-active-border-color: var(--bs-primary-text); +} +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); +} +.list-group-item-secondary.list-group-item-action:focus, +.list-group-item-secondary.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); +} +.list-group-item-secondary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-secondary-text); + --bs-list-group-active-border-color: var(--bs-secondary-text); +} +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); +} +.list-group-item-success.list-group-item-action:focus, +.list-group-item-success.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); +} +.list-group-item-success.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-success-text); + --bs-list-group-active-border-color: var(--bs-success-text); +} +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); +} +.list-group-item-info.list-group-item-action:focus, +.list-group-item-info.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); +} +.list-group-item-info.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-info-text); + --bs-list-group-active-border-color: var(--bs-info-text); +} +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); +} +.list-group-item-warning.list-group-item-action:focus, +.list-group-item-warning.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); +} +.list-group-item-warning.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-warning-text); + --bs-list-group-active-border-color: var(--bs-warning-text); +} +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); +} +.list-group-item-danger.list-group-item-action:focus, +.list-group-item-danger.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); +} +.list-group-item-danger.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-danger-text); + --bs-list-group-active-border-color: var(--bs-danger-text); +} +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); +} +.list-group-item-light.list-group-item-action:focus, +.list-group-item-light.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); +} +.list-group-item-light.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-text); + --bs-list-group-active-border-color: var(--bs-light-text); +} +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); +} +.list-group-item-dark.list-group-item-action:focus, +.list-group-item-dark.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); +} +.list-group-item-dark.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-dark-text); + --bs-list-group-active-border-color: var(--bs-dark-text); +} +.list-group-item-muted { + --bs-list-group-color: var(--bs-muted-text); + --bs-list-group-bg: var(--bs-muted-bg-subtle); + --bs-list-group-border-color: var(--bs-muted-border-subtle); +} +.list-group-item-muted.list-group-item-action:focus, +.list-group-item-muted.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-muted-border-subtle); +} +.list-group-item-muted.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-muted-text); + --bs-list-group-active-border-color: var(--bs-muted-text); +} +.list-group-item-indigo { + --bs-list-group-color: var(--bs-indigo-text); + --bs-list-group-bg: var(--bs-indigo-bg-subtle); + --bs-list-group-border-color: var(--bs-indigo-border-subtle); +} +.list-group-item-indigo.list-group-item-action:focus, +.list-group-item-indigo.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-indigo-border-subtle); +} +.list-group-item-indigo.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-indigo-text); + --bs-list-group-active-border-color: var(--bs-indigo-text); +} +.list-group-item-light-primary { + --bs-list-group-color: var(--bs-light-primary-text); + --bs-list-group-bg: var(--bs-light-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-light-primary-border-subtle); +} +.list-group-item-light-primary.list-group-item-action:focus, +.list-group-item-light-primary.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-primary-border-subtle); +} +.list-group-item-light-primary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-primary-text); + --bs-list-group-active-border-color: var(--bs-light-primary-text); +} +.list-group-item-light-secondary { + --bs-list-group-color: var(--bs-light-secondary-text); + --bs-list-group-bg: var(--bs-light-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-light-secondary-border-subtle); +} +.list-group-item-light-secondary.list-group-item-action:focus, +.list-group-item-light-secondary.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-secondary-border-subtle); +} +.list-group-item-light-secondary.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-secondary-text); + --bs-list-group-active-border-color: var(--bs-light-secondary-text); +} +.list-group-item-light-info { + --bs-list-group-color: var(--bs-light-info-text); + --bs-list-group-bg: var(--bs-light-info-bg-subtle); + --bs-list-group-border-color: var(--bs-light-info-border-subtle); +} +.list-group-item-light-info.list-group-item-action:focus, +.list-group-item-light-info.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-info-border-subtle); +} +.list-group-item-light-info.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-info-text); + --bs-list-group-active-border-color: var(--bs-light-info-text); +} +.list-group-item-light-success { + --bs-list-group-color: var(--bs-light-success-text); + --bs-list-group-bg: var(--bs-light-success-bg-subtle); + --bs-list-group-border-color: var(--bs-light-success-border-subtle); +} +.list-group-item-light-success.list-group-item-action:focus, +.list-group-item-light-success.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-success-border-subtle); +} +.list-group-item-light-success.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-success-text); + --bs-list-group-active-border-color: var(--bs-light-success-text); +} +.list-group-item-light-warning { + --bs-list-group-color: var(--bs-light-warning-text); + --bs-list-group-bg: var(--bs-light-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-light-warning-border-subtle); +} +.list-group-item-light-warning.list-group-item-action:focus, +.list-group-item-light-warning.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-warning-border-subtle); +} +.list-group-item-light-warning.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-warning-text); + --bs-list-group-active-border-color: var(--bs-light-warning-text); +} +.list-group-item-light-danger { + --bs-list-group-color: var(--bs-light-danger-text); + --bs-list-group-bg: var(--bs-light-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-light-danger-border-subtle); +} +.list-group-item-light-danger.list-group-item-action:focus, +.list-group-item-light-danger.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-danger-border-subtle); +} +.list-group-item-light-danger.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-danger-text); + --bs-list-group-active-border-color: var(--bs-light-danger-text); +} +.list-group-item-light-indigo { + --bs-list-group-color: var(--bs-light-indigo-text); + --bs-list-group-bg: var(--bs-light-indigo-bg-subtle); + --bs-list-group-border-color: var(--bs-light-indigo-border-subtle); +} +.list-group-item-light-indigo.list-group-item-action:focus, +.list-group-item-light-indigo.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-indigo-border-subtle); +} +.list-group-item-light-indigo.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-indigo-text); + --bs-list-group-active-border-color: var(--bs-light-indigo-text); +} +.list-group-item-dark-light { + --bs-list-group-color: var(--bs-dark-light-text); + --bs-list-group-bg: var(--bs-dark-light-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-light-border-subtle); +} +.list-group-item-dark-light.list-group-item-action:focus, +.list-group-item-dark-light.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-light-border-subtle); +} +.list-group-item-dark-light.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-dark-light-text); + --bs-list-group-active-border-color: var(--bs-dark-light-text); +} +.list-group-item-light-gray { + --bs-list-group-color: var(--bs-light-gray-text); + --bs-list-group-bg: var(--bs-light-gray-bg-subtle); + --bs-list-group-border-color: var(--bs-light-gray-border-subtle); +} +.list-group-item-light-gray.list-group-item-action:focus, +.list-group-item-light-gray.list-group-item-action:hover { + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-gray-border-subtle); +} +.list-group-item-light-gray.list-group-item-action:active { + --bs-list-group-active-color: var(--bs-emphasis-color); + --bs-list-group-active-bg: var(--bs-light-gray-text); + --bs-list-group-active-border-color: var(--bs-light-gray-text); +} +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(93, 135, 255, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + -webkit-box-sizing: content-box; + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 7px; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + -webkit-box-shadow: var(--bs-btn-close-focus-shadow); + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close.disabled, +.btn-close:disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} +.btn-close-white { + -webkit-filter: var(--bs-btn-close-white-filter); + filter: var(--bs-btn-close-white-filter); +} +[data-bs-theme="dark"] .btn-close { + -webkit-filter: var(--bs-btn-close-white-filter); + filter: var(--bs-btn-close-white-filter); +} +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 24px; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + -webkit-box-shadow: var(--bs-toast-box-shadow); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} +.toast-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid + var(--bs-toast-header-border-color); + border-top-left-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); + border-top-right-radius: calc( + var(--bs-toast-border-radius) - var(--bs-toast-border-width) + ); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: 0; + --bs-modal-border-radius: var(--bs-border-radius-lg); + --bs-modal-box-shadow: 0 0.125rem 0.25rem + rgba(var(--bs-body-color-rgb), 0.075); + --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - 0); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: 0; + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: 0; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform 0.3s ease-out; + transition: -webkit-transform 0.3s ease-out; + transition: transform 0.3s ease-out; + transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out; + -webkit-transform: translate(0, -50px); + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + -webkit-transition: none; + transition: none; + } +} +.modal.show .modal-dialog { + -webkit-transform: none; + transform: none; +} +.modal.modal-static .modal-dialog { + -webkit-transform: scale(1.02); + transform: scale(1.02); +} +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} +.modal-dialog-centered { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-content { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + -webkit-box-shadow: var(--bs-modal-box-shadow); + box-shadow: var(--bs-modal-box-shadow); + outline: 0; +} +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} +.modal-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-negative: 0; + flex-shrink: 0; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid + var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) + calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) + calc(-0.5 * var(--bs-modal-header-padding-x)) + calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} +.modal-body { + position: relative; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} +.modal-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-negative: 0; + flex-shrink: 0; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid + var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.5rem 1rem + rgba(var(--bs-body-color-rgb), 0.15); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-footer, +.modal-fullscreen .modal-header { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-footer, + .modal-fullscreen-sm-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-footer, + .modal-fullscreen-md-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-footer, + .modal-fullscreen-lg-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-footer, + .modal-fullscreen-xl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-footer, + .modal-fullscreen-xxl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.765625rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + padding: var(--bs-tooltip-arrow-height); + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow:before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} +.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow, +.bs-tooltip-top .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow:before, +.bs-tooltip-top .tooltip-arrow:before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) + calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow, +.bs-tooltip-end .tooltip-arrow { + left: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow:before, +.bs-tooltip-end .tooltip-arrow:before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) + 0; + border-right-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow, +.bs-tooltip-bottom .tooltip-arrow { + top: 0; +} +.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow:before, +.bs-tooltip-bottom .tooltip-arrow:before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) + var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} +.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow, +.bs-tooltip-start .tooltip-arrow { + right: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow:before, +.bs-tooltip-start .tooltip-arrow:before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 + calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.765625rem; + --bs-popover-bg: var(--bs-body-bg); + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: var(--bs-border-radius-lg); + --bs-popover-inner-border-radius: calc( + var(--bs-border-radius-lg) - var(--bs-border-width) + ); + --bs-popover-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 0.875rem; + --bs-popover-header-color: #2a3547; + --bs-popover-header-bg: var(--bs-secondary-bg); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: var(--bs-body-color); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); + -webkit-box-shadow: var(--bs-popover-box-shadow); + box-shadow: var(--bs-popover-box-shadow); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow:after, +.popover .popover-arrow:before { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow, +.bs-popover-top > .popover-arrow { + bottom: calc( + -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width) + ); +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow:after, +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow:before, +.bs-popover-top > .popover-arrow:after, +.bs-popover-top > .popover-arrow:before { + border-width: var(--bs-popover-arrow-height) + calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow:before, +.bs-popover-top > .popover-arrow:before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="top"] > .popover-arrow:after, +.bs-popover-top > .popover-arrow:after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow, +.bs-popover-end > .popover-arrow { + left: calc( + -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width) + ); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow:after, +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow:before, +.bs-popover-end > .popover-arrow:after, +.bs-popover-end > .popover-arrow:before { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) + var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) + 0; +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow:before, +.bs-popover-end > .popover-arrow:before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="right"] > .popover-arrow:after, +.bs-popover-end > .popover-arrow:after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow, +.bs-popover-bottom > .popover-arrow { + top: calc( + -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width) + ); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow:after, +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow:before, +.bs-popover-bottom > .popover-arrow:after, +.bs-popover-bottom > .popover-arrow:before { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) + var(--bs-popover-arrow-height); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow:before, +.bs-popover-bottom > .popover-arrow:before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="bottom"] > .popover-arrow:after, +.bs-popover-bottom > .popover-arrow:after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-auto[data-popper-placement^="bottom"] .popover-header:before, +.bs-popover-bottom .popover-header:before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid + var(--bs-popover-header-bg); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow, +.bs-popover-start > .popover-arrow { + right: calc( + -1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width) + ); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow:after, +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow:before, +.bs-popover-start > .popover-arrow:after, +.bs-popover-start > .popover-arrow:before { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 + calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow:before, +.bs-popover-start > .popover-arrow:before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-auto[data-popper-placement^="left"] > .popover-arrow:after, +.bs-popover-start > .popover-arrow:after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} +.popover-header { + padding: var(--bs-popover-header-padding-y) + var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid + var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} +.carousel { + position: relative; +} +.carousel.pointer-event { + -ms-touch-action: pan-y; + touch-action: pan-y; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner:after { + display: block; + clear: both; + content: ""; +} +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: -webkit-transform 0.6s ease-in-out; + transition: -webkit-transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out; + transition: transform 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + -webkit-transition: none; + transition: none; + } +} +.carousel-item-next, +.carousel-item-prev, +.carousel-item.active { + display: block; +} +.active.carousel-item-end, +.carousel-item-next:not(.carousel-item-start) { + -webkit-transform: translateX(100%); + transform: translateX(100%); +} +.active.carousel-item-start, +.carousel-item-prev:not(.carousel-item-end) { + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} +.carousel-fade .carousel-item { + opacity: 0; + -webkit-transition-property: opacity; + transition-property: opacity; + -webkit-transform: none; + transform: none; +} +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end, +.carousel-fade .carousel-item.active { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-end, +.carousel-fade .active.carousel-item-start { + z-index: 0; + opacity: 0; + -webkit-transition: opacity 0s 0.6s; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-end, + .carousel-fade .active.carousel-item-start { + -webkit-transition: none; + transition: none; + } +} +.carousel-control-next, +.carousel-control-prev { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + -webkit-transition: opacity 0.15s ease; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-next, + .carousel-control-prev { + -webkit-transition: none; + transition: none; + } +} +.carousel-control-next:focus, +.carousel-control-next:hover, +.carousel-control-prev:focus, +.carousel-control-prev:hover { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} +.carousel-control-prev { + left: 0; +} +.carousel-control-next { + right: 0; +} +.carousel-control-next-icon, +.carousel-control-prev-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + -webkit-box-sizing: content-box; + box-sizing: content-box; + -webkit-box-flex: 0; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + -webkit-transition: opacity 0.6s ease; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + -webkit-transition: none; + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} +.carousel-dark .carousel-control-next-icon, +.carousel-dark .carousel-control-prev-icon { + -webkit-filter: invert(1) grayscale(100); + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} +[data-bs-theme="dark"] .carousel .carousel-control-next-icon, +[data-bs-theme="dark"] .carousel .carousel-control-prev-icon { + -webkit-filter: invert(1) grayscale(100); + filter: invert(1) grayscale(100); +} +[data-bs-theme="dark"] .carousel .carousel-indicators [data-bs-target] { + background-color: #000; +} +[data-bs-theme="dark"] .carousel .carousel-caption { + color: #000; +} +.spinner-border, +.spinner-grow { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + -webkit-animation: var(--bs-spinner-animation-speed) linear infinite + var(--bs-spinner-animation-name); + animation: var(--bs-spinner-animation-speed) linear infinite + var(--bs-spinner-animation-name); +} +@-webkit-keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@keyframes spinner-border { + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} +@-webkit-keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +@keyframes spinner-grow { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, +.offcanvas-lg, +.offcanvas-md, +.offcanvas-sm, +.offcanvas-xl, +.offcanvas-xxl { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: 0; + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem + rgba(var(--bs-body-color-rgb), 0.075); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + -webkit-transition: none; + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.show:not(.hiding), + .offcanvas-sm.showing { + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.hiding, + .offcanvas-sm.show, + .offcanvas-sm.showing { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + -webkit-transition: none; + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.show:not(.hiding), + .offcanvas-md.showing { + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.hiding, + .offcanvas-md.show, + .offcanvas-md.showing { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + -webkit-transition: none; + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.show:not(.hiding), + .offcanvas-lg.showing { + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.hiding, + .offcanvas-lg.show, + .offcanvas-lg.showing { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + -webkit-transition: none; + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.show:not(.hiding), + .offcanvas-xl.showing { + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.hiding, + .offcanvas-xl.show, + .offcanvas-xl.showing { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + -webkit-transition: none; + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.show:not(.hiding), + .offcanvas-xxl.showing { + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.hiding, + .offcanvas-xxl.show, + .offcanvas-xxl.showing { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 0; + -ms-flex-positive: 0; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + -webkit-box-shadow: var(--bs-offcanvas-box-shadow); + box-shadow: var(--bs-offcanvas-box-shadow); + -webkit-transition: var(--bs-offcanvas-transition); + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + -webkit-transition: none; + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(-100%); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateX(100%); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(-100%); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid + var(--bs-offcanvas-border-color); + -webkit-transform: translateY(100%); + transform: translateY(100%); +} +.offcanvas.show:not(.hiding), +.offcanvas.showing { + -webkit-transform: none; + transform: none; +} +.offcanvas.hiding, +.offcanvas.show, +.offcanvas.showing { + visibility: visible; +} +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} +.offcanvas-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) + calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} +.offcanvas-body { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn:before { + display: inline-block; + content: ""; +} +.placeholder-xs { + min-height: 0.6em; +} +.placeholder-sm { + min-height: 0.8em; +} +.placeholder-lg { + min-height: 1.2em; +} +.placeholder-glow .placeholder { + -webkit-animation: placeholder-glow 2s ease-in-out infinite; + animation: placeholder-glow 2s ease-in-out infinite; +} +@-webkit-keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient( + 130deg, + #000 55%, + rgba(0, 0, 0, 0.8) 75%, + #000 95% + ); + mask-image: linear-gradient( + 130deg, + #000 55%, + rgba(0, 0, 0, 0.8) 75%, + #000 95% + ); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + -webkit-animation: placeholder-wave 2s linear infinite; + animation: placeholder-wave 2s linear infinite; +} +@-webkit-keyframes placeholder-wave { + to { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +@keyframes placeholder-wave { + to { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix:after { + display: block; + clear: both; + content: ""; +} +.text-bg-primary { + color: #fff !important; + background-color: RGBA(93, 135, 255, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(73, 190, 255, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-success { + color: #fff !important; + background-color: RGBA(19, 222, 185, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-info { + color: #fff !important; + background-color: RGBA(83, 155, 255, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-warning { + color: #fff !important; + background-color: RGBA(255, 174, 31, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-danger { + color: #fff !important; + background-color: RGBA(250, 137, 107, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light { + color: #000 !important; + background-color: RGBA(246, 249, 252, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-dark { + color: #fff !important; + background-color: RGBA(42, 53, 71, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-muted { + color: #fff !important; + background-color: RGBA(90, 106, 133, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-indigo { + color: #fff !important; + background-color: RGBA(102, 16, 242, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-primary { + color: #000 !important; + background-color: RGBA(236, 242, 255, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-secondary { + color: #000 !important; + background-color: RGBA(232, 247, 255, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-info { + color: #000 !important; + background-color: RGBA(235, 243, 254, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-success { + color: #000 !important; + background-color: RGBA(230, 255, 250, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-warning { + color: #000 !important; + background-color: RGBA(254, 245, 229, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-danger { + color: #000 !important; + background-color: RGBA(251, 242, 239, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-indigo { + color: #000 !important; + background-color: RGBA(235, 243, 254, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-dark-light { + color: #fff !important; + background-color: RGBA(42, 53, 71, var(--bs-bg-opacity, 1)) !important; +} +.text-bg-light-gray { + color: #000 !important; + background-color: RGBA(246, 249, 252, var(--bs-bg-opacity, 1)) !important; +} +.link-primary { + color: #5d87ff !important; +} +.link-primary:focus, +.link-primary:hover { + color: #4a6ccc !important; +} +.link-secondary { + color: #49beff !important; +} +.link-secondary:focus, +.link-secondary:hover { + color: #3a98cc !important; +} +.link-success { + color: #13deb9 !important; +} +.link-success:focus, +.link-success:hover { + color: #0fb294 !important; +} +.link-info { + color: #539bff !important; +} +.link-info:focus, +.link-info:hover { + color: #427ccc !important; +} +.link-warning { + color: #ffae1f !important; +} +.link-warning:focus, +.link-warning:hover { + color: #cc8b19 !important; +} +.link-danger { + color: #fa896b !important; +} +.link-danger:focus, +.link-danger:hover { + color: #c86e56 !important; +} +.link-light { + color: #f6f9fc !important; +} +.link-light:focus, +.link-light:hover { + color: #f8fafd !important; +} +.link-dark { + color: #2a3547 !important; +} +.link-dark:focus, +.link-dark:hover { + color: #222a39 !important; +} +.link-muted { + color: #5a6a85 !important; +} +.link-muted:focus, +.link-muted:hover { + color: #48556a !important; +} +.link-indigo { + color: #6610f2 !important; +} +.link-indigo:focus, +.link-indigo:hover { + color: #520dc2 !important; +} +.link-light-primary { + color: #ecf2ff !important; +} +.link-light-primary:focus, +.link-light-primary:hover { + color: #f0f5ff !important; +} +.link-light-secondary { + color: #e8f7ff !important; +} +.link-light-secondary:focus, +.link-light-secondary:hover { + color: #edf9ff !important; +} +.link-light-info { + color: #ebf3fe !important; +} +.link-light-info:focus, +.link-light-info:hover { + color: #eff5fe !important; +} +.link-light-success { + color: #e6fffa !important; +} +.link-light-success:focus, +.link-light-success:hover { + color: #ebfffb !important; +} +.link-light-warning { + color: #fef5e5 !important; +} +.link-light-warning:focus, +.link-light-warning:hover { + color: #fef7ea !important; +} +.link-light-danger { + color: #fbf2ef !important; +} +.link-light-danger:focus, +.link-light-danger:hover { + color: #fcf5f2 !important; +} +.link-light-indigo { + color: #ebf3fe !important; +} +.link-light-indigo:focus, +.link-light-indigo:hover { + color: #eff5fe !important; +} +.link-dark-light { + color: #2a3547 !important; +} +.link-dark-light:focus, +.link-dark-light:hover { + color: #222a39 !important; +} +.link-light-gray { + color: #f6f9fc !important; +} +.link-light-gray:focus, +.link-light-gray:hover { + color: #f8fafd !important; +} +.ratio { + position: relative; + width: 100%; +} +.ratio:before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} +.sticky-top { + position: sticky; + top: 0; + z-index: 1020; +} +.sticky-bottom { + position: sticky; + bottom: 0; + z-index: 1020; +} +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; +} +.vstack { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; +} +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.stretched-link:after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.vr { + display: inline-block; + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} +.align-baseline { + vertical-align: baseline !important; +} +.align-top { + vertical-align: top !important; +} +.align-middle { + vertical-align: middle !important; +} +.align-bottom { + vertical-align: bottom !important; +} +.align-text-bottom { + vertical-align: text-bottom !important; +} +.align-text-top { + vertical-align: text-top !important; +} +.float-start { + float: left !important; +} +.float-end { + float: right !important; +} +.float-none { + float: none !important; +} +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} +.opacity-0 { + opacity: 0 !important; +} +.opacity-25 { + opacity: 0.25 !important; +} +.opacity-50 { + opacity: 0.5 !important; +} +.opacity-75 { + opacity: 0.75 !important; +} +.opacity-100 { + opacity: 1 !important; +} +.overflow-auto { + overflow: auto !important; +} +.overflow-hidden { + overflow: hidden !important; +} +.overflow-visible { + overflow: visible !important; +} +.overflow-scroll { + overflow: scroll !important; +} +.overflow-x-auto { + overflow-x: auto !important; +} +.overflow-x-hidden { + overflow-x: hidden !important; +} +.overflow-x-visible { + overflow-x: visible !important; +} +.overflow-x-scroll { + overflow-x: scroll !important; +} +.overflow-y-auto { + overflow-y: auto !important; +} +.overflow-y-hidden { + overflow-y: hidden !important; +} +.overflow-y-visible { + overflow-y: visible !important; +} +.overflow-y-scroll { + overflow-y: scroll !important; +} +.d-inline { + display: inline !important; +} +.d-inline-block { + display: inline-block !important; +} +.d-block { + display: block !important; +} +.d-grid { + display: -ms-grid !important; + display: grid !important; +} +.d-table { + display: table !important; +} +.d-table-row { + display: table-row !important; +} +.d-table-cell { + display: table-cell !important; +} +.d-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; +} +.d-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; +} +.d-none { + display: none !important; +} +.shadow { + -webkit-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15) !important; + box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15) !important; +} +.shadow-sm { + -webkit-box-shadow: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075) !important; + box-shadow: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075) !important; +} +.shadow-lg { + -webkit-box-shadow: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175) !important; + box-shadow: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175) !important; +} +.shadow-none { + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.position-static { + position: static !important; +} +.position-relative { + position: relative !important; +} +.position-absolute { + position: absolute !important; +} +.position-fixed { + position: fixed !important; +} +.position-sticky { + position: sticky !important; +} +.top-0 { + top: 0 !important; +} +.top-50 { + top: 50% !important; +} +.top-100 { + top: 100% !important; +} +.bottom-0 { + bottom: 0 !important; +} +.bottom-50 { + bottom: 50% !important; +} +.bottom-100 { + bottom: 100% !important; +} +.start-0 { + left: 0 !important; +} +.start-50 { + left: 50% !important; +} +.start-100 { + left: 100% !important; +} +.end-0 { + right: 0 !important; +} +.end-50 { + right: 50% !important; +} +.end-100 { + right: 100% !important; +} +.translate-middle { + -webkit-transform: translate(-50%, -50%) !important; + transform: translate(-50%, -50%) !important; +} +.translate-middle-x { + -webkit-transform: translateX(-50%) !important; + transform: translateX(-50%) !important; +} +.translate-middle-y { + -webkit-transform: translateY(-50%) !important; + transform: translateY(-50%) !important; +} +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} +.border-0 { + border: 0 !important; +} +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-top-0 { + border-top: 0 !important; +} +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-end-0 { + border-right: 0 !important; +} +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-bottom-0 { + border-bottom: 0 !important; +} +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) + var(--bs-border-color) !important; +} +.border-start-0 { + border-left: 0 !important; +} +.border-primary { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-primary-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-secondary-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-success { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-success-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} +.border-warning { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-warning-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-danger { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-danger-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} +.border-muted { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-muted-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-indigo { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-indigo-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-primary { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-primary-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-secondary { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-secondary-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-info { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-info-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-success { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-success-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-warning { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-warning-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-danger { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-danger-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-indigo { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-indigo-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-dark-light { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-dark-light-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-light-gray { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-light-gray-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-white { + --bs-border-opacity: 1; + border-color: rgba( + var(--bs-white-rgb), + var(--bs-border-opacity) + ) !important; +} +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} +.border-1 { + --bs-border-width: 1px; +} +.border-2 { + --bs-border-width: 2px; +} +.border-3 { + --bs-border-width: 3px; +} +.border-4 { + --bs-border-width: 4px; +} +.border-5 { + --bs-border-width: 5px; +} +.border-opacity-10 { + --bs-border-opacity: 0.1; +} +.border-opacity-25 { + --bs-border-opacity: 0.25; +} +.border-opacity-50 { + --bs-border-opacity: 0.5; +} +.border-opacity-75 { + --bs-border-opacity: 0.75; +} +.border-opacity-100 { + --bs-border-opacity: 1; +} +.w-25 { + width: 25% !important; +} +.w-50 { + width: 50% !important; +} +.w-75 { + width: 75% !important; +} +.w-100 { + width: 100% !important; +} +.w-auto { + width: auto !important; +} +.mw-100 { + max-width: 100% !important; +} +.vw-100 { + width: 100vw !important; +} +.min-vw-100 { + min-width: 100vw !important; +} +.h-25 { + height: 25% !important; +} +.h-50 { + height: 50% !important; +} +.h-75 { + height: 75% !important; +} +.h-100 { + height: 100% !important; +} +.h-auto { + height: auto !important; +} +.mh-100 { + max-height: 100% !important; +} +.vh-100 { + height: 100vh !important; +} +.min-vh-100 { + min-height: 100vh !important; +} +.flex-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; +} +.flex-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; +} +.flex-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; +} +.flex-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; +} +.flex-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; +} +.flex-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; +} +.flex-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; +} +.flex-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; +} +.flex-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; +} +.flex-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; +} +.flex-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; +} +.flex-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; +} +.justify-content-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; +} +.justify-content-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; +} +.justify-content-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; +} +.justify-content-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; +} +.justify-content-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; +} +.justify-content-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; +} +.align-items-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; +} +.align-items-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; +} +.align-items-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; +} +.align-items-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; +} +.align-items-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; +} +.align-content-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; +} +.align-content-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; +} +.align-content-center { + -ms-flex-line-pack: center !important; + align-content: center !important; +} +.align-content-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; +} +.align-content-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; +} +.align-content-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; +} +.align-self-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; +} +.align-self-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; +} +.align-self-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; +} +.align-self-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; +} +.align-self-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; +} +.align-self-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; +} +.order-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; +} +.order-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; +} +.order-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; +} +.order-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; +} +.order-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; +} +.order-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; +} +.order-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; +} +.order-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; +} +.m-0 { + margin: 0 !important; +} +.m-1 { + margin: 0.25rem !important; +} +.m-2 { + margin: 0.5rem !important; +} +.m-3 { + margin: 1rem !important; +} +.m-4 { + margin: 1.5rem !important; +} +.m-5 { + margin: 3rem !important; +} +.m-6 { + margin: 12px !important; +} +.m-7 { + margin: 30px !important; +} +.m-8 { + margin: 10px !important; +} +.m-9 { + margin: 20px !important; +} +.m-auto { + margin: auto !important; +} +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} +.mx-6 { + margin-right: 12px !important; + margin-left: 12px !important; +} +.mx-7 { + margin-right: 30px !important; + margin-left: 30px !important; +} +.mx-8 { + margin-right: 10px !important; + margin-left: 10px !important; +} +.mx-9 { + margin-right: 20px !important; + margin-left: 20px !important; +} +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} +.my-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; +} +.my-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; +} +.my-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; +} +.my-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; +} +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} +.mt-0 { + margin-top: 0 !important; +} +.mt-1 { + margin-top: 0.25rem !important; +} +.mt-2 { + margin-top: 0.5rem !important; +} +.mt-3 { + margin-top: 1rem !important; +} +.mt-4 { + margin-top: 1.5rem !important; +} +.mt-5 { + margin-top: 3rem !important; +} +.mt-6 { + margin-top: 12px !important; +} +.mt-7 { + margin-top: 30px !important; +} +.mt-8 { + margin-top: 10px !important; +} +.mt-9 { + margin-top: 20px !important; +} +.mt-auto { + margin-top: auto !important; +} +.me-0 { + margin-right: 0 !important; +} +.me-1 { + margin-right: 0.25rem !important; +} +.me-2 { + margin-right: 0.5rem !important; +} +.me-3 { + margin-right: 1rem !important; +} +.me-4 { + margin-right: 1.5rem !important; +} +.me-5 { + margin-right: 3rem !important; +} +.me-6 { + margin-right: 12px !important; +} +.me-7 { + margin-right: 30px !important; +} +.me-8 { + margin-right: 10px !important; +} +.me-9 { + margin-right: 20px !important; +} +.me-auto { + margin-right: auto !important; +} +.mb-0 { + margin-bottom: 0 !important; +} +.mb-1 { + margin-bottom: 0.25rem !important; +} +.mb-2 { + margin-bottom: 0.5rem !important; +} +.mb-3 { + margin-bottom: 1rem !important; +} +.mb-4 { + margin-bottom: 1.5rem !important; +} +.mb-5 { + margin-bottom: 3rem !important; +} +.mb-6 { + margin-bottom: 12px !important; +} +.mb-7 { + margin-bottom: 30px !important; +} +.mb-8 { + margin-bottom: 10px !important; +} +.mb-9 { + margin-bottom: 20px !important; +} +.mb-auto { + margin-bottom: auto !important; +} +.ms-0 { + margin-left: 0 !important; +} +.ms-1 { + margin-left: 0.25rem !important; +} +.ms-2 { + margin-left: 0.5rem !important; +} +.ms-3 { + margin-left: 1rem !important; +} +.ms-4 { + margin-left: 1.5rem !important; +} +.ms-5 { + margin-left: 3rem !important; +} +.ms-6 { + margin-left: 12px !important; +} +.ms-7 { + margin-left: 30px !important; +} +.ms-8 { + margin-left: 10px !important; +} +.ms-9 { + margin-left: 20px !important; +} +.ms-auto { + margin-left: auto !important; +} +.m-n1 { + margin: -0.25rem !important; +} +.m-n2 { + margin: -0.5rem !important; +} +.m-n3 { + margin: -1rem !important; +} +.m-n4 { + margin: -1.5rem !important; +} +.m-n5 { + margin: -3rem !important; +} +.m-n6 { + margin: -12px !important; +} +.m-n7 { + margin: -30px !important; +} +.m-n8 { + margin: -10px !important; +} +.m-n9 { + margin: -20px !important; +} +.mx-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; +} +.mx-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; +} +.mx-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; +} +.mx-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; +} +.mx-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; +} +.mx-n6 { + margin-right: -12px !important; + margin-left: -12px !important; +} +.mx-n7 { + margin-right: -30px !important; + margin-left: -30px !important; +} +.mx-n8 { + margin-right: -10px !important; + margin-left: -10px !important; +} +.mx-n9 { + margin-right: -20px !important; + margin-left: -20px !important; +} +.my-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; +} +.my-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; +} +.my-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; +} +.my-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; +} +.my-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; +} +.my-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; +} +.my-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; +} +.my-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; +} +.my-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; +} +.mt-n1 { + margin-top: -0.25rem !important; +} +.mt-n2 { + margin-top: -0.5rem !important; +} +.mt-n3 { + margin-top: -1rem !important; +} +.mt-n4 { + margin-top: -1.5rem !important; +} +.mt-n5 { + margin-top: -3rem !important; +} +.mt-n6 { + margin-top: -12px !important; +} +.mt-n7 { + margin-top: -30px !important; +} +.mt-n8 { + margin-top: -10px !important; +} +.mt-n9 { + margin-top: -20px !important; +} +.me-n1 { + margin-right: -0.25rem !important; +} +.me-n2 { + margin-right: -0.5rem !important; +} +.me-n3 { + margin-right: -1rem !important; +} +.me-n4 { + margin-right: -1.5rem !important; +} +.me-n5 { + margin-right: -3rem !important; +} +.me-n6 { + margin-right: -12px !important; +} +.me-n7 { + margin-right: -30px !important; +} +.me-n8 { + margin-right: -10px !important; +} +.me-n9 { + margin-right: -20px !important; +} +.mb-n1 { + margin-bottom: -0.25rem !important; +} +.mb-n2 { + margin-bottom: -0.5rem !important; +} +.mb-n3 { + margin-bottom: -1rem !important; +} +.mb-n4 { + margin-bottom: -1.5rem !important; +} +.mb-n5 { + margin-bottom: -3rem !important; +} +.mb-n6 { + margin-bottom: -12px !important; +} +.mb-n7 { + margin-bottom: -30px !important; +} +.mb-n8 { + margin-bottom: -10px !important; +} +.mb-n9 { + margin-bottom: -20px !important; +} +.ms-n1 { + margin-left: -0.25rem !important; +} +.ms-n2 { + margin-left: -0.5rem !important; +} +.ms-n3 { + margin-left: -1rem !important; +} +.ms-n4 { + margin-left: -1.5rem !important; +} +.ms-n5 { + margin-left: -3rem !important; +} +.ms-n6 { + margin-left: -12px !important; +} +.ms-n7 { + margin-left: -30px !important; +} +.ms-n8 { + margin-left: -10px !important; +} +.ms-n9 { + margin-left: -20px !important; +} +.p-0 { + padding: 0 !important; +} +.p-1 { + padding: 0.25rem !important; +} +.p-2 { + padding: 0.5rem !important; +} +.p-3 { + padding: 1rem !important; +} +.p-4 { + padding: 1.5rem !important; +} +.p-5 { + padding: 3rem !important; +} +.p-6 { + padding: 12px !important; +} +.p-7 { + padding: 30px !important; +} +.p-8 { + padding: 10px !important; +} +.p-9 { + padding: 20px !important; +} +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} +.px-6 { + padding-right: 12px !important; + padding-left: 12px !important; +} +.px-7 { + padding-right: 30px !important; + padding-left: 30px !important; +} +.px-8 { + padding-right: 10px !important; + padding-left: 10px !important; +} +.px-9 { + padding-right: 20px !important; + padding-left: 20px !important; +} +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} +.py-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; +} +.py-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; +} +.py-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; +} +.py-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; +} +.pt-0 { + padding-top: 0 !important; +} +.pt-1 { + padding-top: 0.25rem !important; +} +.pt-2 { + padding-top: 0.5rem !important; +} +.pt-3 { + padding-top: 1rem !important; +} +.pt-4 { + padding-top: 1.5rem !important; +} +.pt-5 { + padding-top: 3rem !important; +} +.pt-6 { + padding-top: 12px !important; +} +.pt-7 { + padding-top: 30px !important; +} +.pt-8 { + padding-top: 10px !important; +} +.pt-9 { + padding-top: 20px !important; +} +.pe-0 { + padding-right: 0 !important; +} +.pe-1 { + padding-right: 0.25rem !important; +} +.pe-2 { + padding-right: 0.5rem !important; +} +.pe-3 { + padding-right: 1rem !important; +} +.pe-4 { + padding-right: 1.5rem !important; +} +.pe-5 { + padding-right: 3rem !important; +} +.pe-6 { + padding-right: 12px !important; +} +.pe-7 { + padding-right: 30px !important; +} +.pe-8 { + padding-right: 10px !important; +} +.pe-9 { + padding-right: 20px !important; +} +.pb-0 { + padding-bottom: 0 !important; +} +.pb-1 { + padding-bottom: 0.25rem !important; +} +.pb-2 { + padding-bottom: 0.5rem !important; +} +.pb-3 { + padding-bottom: 1rem !important; +} +.pb-4 { + padding-bottom: 1.5rem !important; +} +.pb-5 { + padding-bottom: 3rem !important; +} +.pb-6 { + padding-bottom: 12px !important; +} +.pb-7 { + padding-bottom: 30px !important; +} +.pb-8 { + padding-bottom: 10px !important; +} +.pb-9 { + padding-bottom: 20px !important; +} +.ps-0 { + padding-left: 0 !important; +} +.ps-1 { + padding-left: 0.25rem !important; +} +.ps-2 { + padding-left: 0.5rem !important; +} +.ps-3 { + padding-left: 1rem !important; +} +.ps-4 { + padding-left: 1.5rem !important; +} +.ps-5 { + padding-left: 3rem !important; +} +.ps-6 { + padding-left: 12px !important; +} +.ps-7 { + padding-left: 30px !important; +} +.ps-8 { + padding-left: 10px !important; +} +.ps-9 { + padding-left: 20px !important; +} +.gap-0 { + gap: 0 !important; +} +.gap-1 { + gap: 0.25rem !important; +} +.gap-2 { + gap: 0.5rem !important; +} +.gap-3 { + gap: 1rem !important; +} +.gap-4 { + gap: 1.5rem !important; +} +.gap-5 { + gap: 3rem !important; +} +.gap-6 { + gap: 12px !important; +} +.gap-7 { + gap: 30px !important; +} +.gap-8 { + gap: 10px !important; +} +.gap-9 { + gap: 20px !important; +} +.row-gap-0 { + row-gap: 0 !important; +} +.row-gap-1 { + row-gap: 0.25rem !important; +} +.row-gap-2 { + row-gap: 0.5rem !important; +} +.row-gap-3 { + row-gap: 1rem !important; +} +.row-gap-4 { + row-gap: 1.5rem !important; +} +.row-gap-5 { + row-gap: 3rem !important; +} +.row-gap-6 { + row-gap: 12px !important; +} +.row-gap-7 { + row-gap: 30px !important; +} +.row-gap-8 { + row-gap: 10px !important; +} +.row-gap-9 { + row-gap: 20px !important; +} +.column-gap-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} +.column-gap-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} +.column-gap-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} +.column-gap-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} +.column-gap-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} +.column-gap-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} +.column-gap-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; +} +.column-gap-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; +} +.column-gap-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; +} +.column-gap-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; +} +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} +.fs-1 { + font-size: 0.625rem !important; +} +.fs-2 { + font-size: 0.75rem !important; +} +.fs-3 { + font-size: 0.875rem !important; +} +.fs-4 { + font-size: 1rem !important; +} +.fs-5 { + font-size: 1.125rem !important; +} +.fs-6 { + font-size: 1.25rem !important; +} +.fs-8 { + font-size: calc(1.3125rem + 0.75vw) !important; +} +.fst-italic { + font-style: italic !important; +} +.fst-normal { + font-style: normal !important; +} +.fw-lighter { + font-weight: 300 !important; +} +.fw-light { + font-weight: 300 !important; +} +.fw-normal { + font-weight: 400 !important; +} +.fw-medium { + font-weight: 500 !important; +} +.fw-semibold { + font-weight: 600 !important; +} +.fw-bold { + font-weight: 500 !important; +} +.fw-bolder { + font-weight: 700 !important; +} +.lh-1 { + line-height: 1 !important; +} +.lh-sm { + line-height: 1.25 !important; +} +.lh-base { + line-height: 1.5 !important; +} +.lh-lg { + line-height: 2 !important; +} +.text-start { + text-align: left !important; +} +.text-end { + text-align: right !important; +} +.text-center { + text-align: center !important; +} +.text-decoration-none { + text-decoration: none !important; +} +.text-decoration-underline { + text-decoration: underline !important; +} +.text-decoration-line-through { + text-decoration: line-through !important; +} +.text-lowercase { + text-transform: lowercase !important; +} +.text-uppercase { + text-transform: uppercase !important; +} +.text-capitalize { + text-transform: capitalize !important; +} +.text-wrap { + white-space: normal !important; +} +.text-nowrap { + white-space: nowrap !important; +} +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} +.text-muted { + --bs-text-opacity: 1; + color: #5a6a85 !important; +} +.text-indigo { + --bs-text-opacity: 1; + color: rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important; +} +.text-light-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-primary-rgb), var(--bs-text-opacity)) !important; +} +.text-light-secondary { + --bs-text-opacity: 1; + color: rgba( + var(--bs-light-secondary-rgb), + var(--bs-text-opacity) + ) !important; +} +.text-light-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-info-rgb), var(--bs-text-opacity)) !important; +} +.text-light-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-success-rgb), var(--bs-text-opacity)) !important; +} +.text-light-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-warning-rgb), var(--bs-text-opacity)) !important; +} +.text-light-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-danger-rgb), var(--bs-text-opacity)) !important; +} +.text-light-indigo { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-indigo-rgb), var(--bs-text-opacity)) !important; +} +.text-dark-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-light-rgb), var(--bs-text-opacity)) !important; +} +.text-light-gray { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-gray-rgb), var(--bs-text-opacity)) !important; +} +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} +.text-opacity-25 { + --bs-text-opacity: 0.25; +} +.text-opacity-50 { + --bs-text-opacity: 0.5; +} +.text-opacity-75 { + --bs-text-opacity: 0.75; +} +.text-opacity-100 { + --bs-text-opacity: 1; +} +.text-primary-emphasis { + color: var(--bs-primary-text) !important; +} +.text-secondary-emphasis { + color: var(--bs-secondary-text) !important; +} +.text-success-emphasis { + color: var(--bs-success-text) !important; +} +.text-info-emphasis { + color: var(--bs-info-text) !important; +} +.text-warning-emphasis { + color: var(--bs-warning-text) !important; +} +.text-danger-emphasis { + color: var(--bs-danger-text) !important; +} +.text-light-emphasis { + color: var(--bs-light-text) !important; +} +.text-dark-emphasis { + color: var(--bs-dark-text) !important; +} +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-primary-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-secondary-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-success-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-warning-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-danger-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} +.bg-muted { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-muted-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-indigo { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-indigo-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-primary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-primary-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-secondary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-secondary-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-info { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-info-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-success { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-success-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-warning { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-warning-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-danger { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-danger-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-indigo { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-indigo-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-dark-light { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-dark-light-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-light-gray { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-light-gray-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-black-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-white-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-body-bg-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-secondary-bg-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-tertiary-bg-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-body-emphasis { + --bs-bg-opacity: 1; + background-color: rgba( + var(--bs-emphasis-bg-rgb), + var(--bs-bg-opacity) + ) !important; +} +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} +.bg-opacity-100 { + --bs-bg-opacity: 1; +} +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} +.bg-gradient { + background-image: var(--bs-gradient) !important; +} +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; +} +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + -ms-user-select: none !important; + user-select: none !important; +} +.pe-none { + pointer-events: none !important; +} +.pe-auto { + pointer-events: auto !important; +} +.rounded { + border-radius: var(--bs-border-radius) !important; +} +.rounded-0 { + border-radius: 0 !important; +} +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} +.rounded-5 { + border-radius: var(--bs-border-radius-2xl) !important; +} +.rounded-circle { + border-radius: 50% !important; +} +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-2xl) !important; + border-top-right-radius: var(--bs-border-radius-2xl) !important; +} +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-2xl) !important; + border-bottom-right-radius: var(--bs-border-radius-2xl) !important; +} +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-2xl) !important; + border-bottom-left-radius: var(--bs-border-radius-2xl) !important; +} +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-2xl) !important; + border-top-left-radius: var(--bs-border-radius-2xl) !important; +} +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} +.visible { + visibility: visible !important; +} +.invisible { + visibility: hidden !important; +} +.z-n1 { + z-index: -1 !important; +} +.z-0 { + z-index: 0 !important; +} +.z-1 { + z-index: 1 !important; +} +.z-2 { + z-index: 2 !important; +} +.z-3 { + z-index: 3 !important; +} +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-sm-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-sm-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-sm-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-sm-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .flex-sm-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-sm-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-sm-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-sm-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-sm-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .justify-content-sm-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; + } + .align-items-sm-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-sm-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-sm-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-sm-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-sm-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-sm-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-sm-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-sm-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-sm-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-sm-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-sm-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-sm-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-sm-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-sm-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-sm-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-sm-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-sm-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } + .order-sm-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; + } + .order-sm-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; + } + .order-sm-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; + } + .order-sm-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; + } + .order-sm-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; + } + .order-sm-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; + } + .order-sm-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; + } + .order-sm-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-6 { + margin: 12px !important; + } + .m-sm-7 { + margin: 30px !important; + } + .m-sm-8 { + margin: 10px !important; + } + .m-sm-9 { + margin: 20px !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-6 { + margin-right: 12px !important; + margin-left: 12px !important; + } + .mx-sm-7 { + margin-right: 30px !important; + margin-left: 30px !important; + } + .mx-sm-8 { + margin-right: 10px !important; + margin-left: 10px !important; + } + .mx-sm-9 { + margin-right: 20px !important; + margin-left: 20px !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; + } + .my-sm-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; + } + .my-sm-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; + } + .my-sm-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-6 { + margin-top: 12px !important; + } + .mt-sm-7 { + margin-top: 30px !important; + } + .mt-sm-8 { + margin-top: 10px !important; + } + .mt-sm-9 { + margin-top: 20px !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-6 { + margin-right: 12px !important; + } + .me-sm-7 { + margin-right: 30px !important; + } + .me-sm-8 { + margin-right: 10px !important; + } + .me-sm-9 { + margin-right: 20px !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-6 { + margin-bottom: 12px !important; + } + .mb-sm-7 { + margin-bottom: 30px !important; + } + .mb-sm-8 { + margin-bottom: 10px !important; + } + .mb-sm-9 { + margin-bottom: 20px !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-6 { + margin-left: 12px !important; + } + .ms-sm-7 { + margin-left: 30px !important; + } + .ms-sm-8 { + margin-left: 10px !important; + } + .ms-sm-9 { + margin-left: 20px !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .m-sm-n1 { + margin: -0.25rem !important; + } + .m-sm-n2 { + margin: -0.5rem !important; + } + .m-sm-n3 { + margin: -1rem !important; + } + .m-sm-n4 { + margin: -1.5rem !important; + } + .m-sm-n5 { + margin: -3rem !important; + } + .m-sm-n6 { + margin: -12px !important; + } + .m-sm-n7 { + margin: -30px !important; + } + .m-sm-n8 { + margin: -10px !important; + } + .m-sm-n9 { + margin: -20px !important; + } + .mx-sm-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-sm-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-sm-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-sm-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-sm-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-sm-n6 { + margin-right: -12px !important; + margin-left: -12px !important; + } + .mx-sm-n7 { + margin-right: -30px !important; + margin-left: -30px !important; + } + .mx-sm-n8 { + margin-right: -10px !important; + margin-left: -10px !important; + } + .mx-sm-n9 { + margin-right: -20px !important; + margin-left: -20px !important; + } + .my-sm-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-sm-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-sm-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-sm-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-sm-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-sm-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; + } + .my-sm-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; + } + .my-sm-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; + } + .my-sm-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; + } + .mt-sm-n1 { + margin-top: -0.25rem !important; + } + .mt-sm-n2 { + margin-top: -0.5rem !important; + } + .mt-sm-n3 { + margin-top: -1rem !important; + } + .mt-sm-n4 { + margin-top: -1.5rem !important; + } + .mt-sm-n5 { + margin-top: -3rem !important; + } + .mt-sm-n6 { + margin-top: -12px !important; + } + .mt-sm-n7 { + margin-top: -30px !important; + } + .mt-sm-n8 { + margin-top: -10px !important; + } + .mt-sm-n9 { + margin-top: -20px !important; + } + .me-sm-n1 { + margin-right: -0.25rem !important; + } + .me-sm-n2 { + margin-right: -0.5rem !important; + } + .me-sm-n3 { + margin-right: -1rem !important; + } + .me-sm-n4 { + margin-right: -1.5rem !important; + } + .me-sm-n5 { + margin-right: -3rem !important; + } + .me-sm-n6 { + margin-right: -12px !important; + } + .me-sm-n7 { + margin-right: -30px !important; + } + .me-sm-n8 { + margin-right: -10px !important; + } + .me-sm-n9 { + margin-right: -20px !important; + } + .mb-sm-n1 { + margin-bottom: -0.25rem !important; + } + .mb-sm-n2 { + margin-bottom: -0.5rem !important; + } + .mb-sm-n3 { + margin-bottom: -1rem !important; + } + .mb-sm-n4 { + margin-bottom: -1.5rem !important; + } + .mb-sm-n5 { + margin-bottom: -3rem !important; + } + .mb-sm-n6 { + margin-bottom: -12px !important; + } + .mb-sm-n7 { + margin-bottom: -30px !important; + } + .mb-sm-n8 { + margin-bottom: -10px !important; + } + .mb-sm-n9 { + margin-bottom: -20px !important; + } + .ms-sm-n1 { + margin-left: -0.25rem !important; + } + .ms-sm-n2 { + margin-left: -0.5rem !important; + } + .ms-sm-n3 { + margin-left: -1rem !important; + } + .ms-sm-n4 { + margin-left: -1.5rem !important; + } + .ms-sm-n5 { + margin-left: -3rem !important; + } + .ms-sm-n6 { + margin-left: -12px !important; + } + .ms-sm-n7 { + margin-left: -30px !important; + } + .ms-sm-n8 { + margin-left: -10px !important; + } + .ms-sm-n9 { + margin-left: -20px !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .p-sm-6 { + padding: 12px !important; + } + .p-sm-7 { + padding: 30px !important; + } + .p-sm-8 { + padding: 10px !important; + } + .p-sm-9 { + padding: 20px !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-sm-6 { + padding-right: 12px !important; + padding-left: 12px !important; + } + .px-sm-7 { + padding-right: 30px !important; + padding-left: 30px !important; + } + .px-sm-8 { + padding-right: 10px !important; + padding-left: 10px !important; + } + .px-sm-9 { + padding-right: 20px !important; + padding-left: 20px !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-sm-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; + } + .py-sm-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; + } + .py-sm-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; + } + .py-sm-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pt-sm-6 { + padding-top: 12px !important; + } + .pt-sm-7 { + padding-top: 30px !important; + } + .pt-sm-8 { + padding-top: 10px !important; + } + .pt-sm-9 { + padding-top: 20px !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pe-sm-6 { + padding-right: 12px !important; + } + .pe-sm-7 { + padding-right: 30px !important; + } + .pe-sm-8 { + padding-right: 10px !important; + } + .pe-sm-9 { + padding-right: 20px !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .pb-sm-6 { + padding-bottom: 12px !important; + } + .pb-sm-7 { + padding-bottom: 30px !important; + } + .pb-sm-8 { + padding-bottom: 10px !important; + } + .pb-sm-9 { + padding-bottom: 20px !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .ps-sm-6 { + padding-left: 12px !important; + } + .ps-sm-7 { + padding-left: 30px !important; + } + .ps-sm-8 { + padding-left: 10px !important; + } + .ps-sm-9 { + padding-left: 20px !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .gap-sm-6 { + gap: 12px !important; + } + .gap-sm-7 { + gap: 30px !important; + } + .gap-sm-8 { + gap: 10px !important; + } + .gap-sm-9 { + gap: 20px !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .row-gap-sm-6 { + row-gap: 12px !important; + } + .row-gap-sm-7 { + row-gap: 30px !important; + } + .row-gap-sm-8 { + row-gap: 10px !important; + } + .row-gap-sm-9 { + row-gap: 20px !important; + } + .column-gap-sm-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-sm-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; + } + .column-gap-sm-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; + } + .column-gap-sm-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; + } + .column-gap-sm-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-md-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-md-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-md-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-md-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-md-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .flex-md-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-md-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-md-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-md-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-md-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-md-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .justify-content-md-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; + } + .align-items-md-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-md-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-md-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-md-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-md-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-md-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-md-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-md-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-md-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-md-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-md-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-md-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-md-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-md-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-md-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-md-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-md-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } + .order-md-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; + } + .order-md-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; + } + .order-md-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; + } + .order-md-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; + } + .order-md-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; + } + .order-md-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; + } + .order-md-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; + } + .order-md-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-6 { + margin: 12px !important; + } + .m-md-7 { + margin: 30px !important; + } + .m-md-8 { + margin: 10px !important; + } + .m-md-9 { + margin: 20px !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-6 { + margin-right: 12px !important; + margin-left: 12px !important; + } + .mx-md-7 { + margin-right: 30px !important; + margin-left: 30px !important; + } + .mx-md-8 { + margin-right: 10px !important; + margin-left: 10px !important; + } + .mx-md-9 { + margin-right: 20px !important; + margin-left: 20px !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; + } + .my-md-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; + } + .my-md-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; + } + .my-md-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-6 { + margin-top: 12px !important; + } + .mt-md-7 { + margin-top: 30px !important; + } + .mt-md-8 { + margin-top: 10px !important; + } + .mt-md-9 { + margin-top: 20px !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-6 { + margin-right: 12px !important; + } + .me-md-7 { + margin-right: 30px !important; + } + .me-md-8 { + margin-right: 10px !important; + } + .me-md-9 { + margin-right: 20px !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-6 { + margin-bottom: 12px !important; + } + .mb-md-7 { + margin-bottom: 30px !important; + } + .mb-md-8 { + margin-bottom: 10px !important; + } + .mb-md-9 { + margin-bottom: 20px !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-6 { + margin-left: 12px !important; + } + .ms-md-7 { + margin-left: 30px !important; + } + .ms-md-8 { + margin-left: 10px !important; + } + .ms-md-9 { + margin-left: 20px !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .m-md-n1 { + margin: -0.25rem !important; + } + .m-md-n2 { + margin: -0.5rem !important; + } + .m-md-n3 { + margin: -1rem !important; + } + .m-md-n4 { + margin: -1.5rem !important; + } + .m-md-n5 { + margin: -3rem !important; + } + .m-md-n6 { + margin: -12px !important; + } + .m-md-n7 { + margin: -30px !important; + } + .m-md-n8 { + margin: -10px !important; + } + .m-md-n9 { + margin: -20px !important; + } + .mx-md-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-md-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-md-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-md-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-md-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-md-n6 { + margin-right: -12px !important; + margin-left: -12px !important; + } + .mx-md-n7 { + margin-right: -30px !important; + margin-left: -30px !important; + } + .mx-md-n8 { + margin-right: -10px !important; + margin-left: -10px !important; + } + .mx-md-n9 { + margin-right: -20px !important; + margin-left: -20px !important; + } + .my-md-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-md-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-md-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-md-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-md-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-md-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; + } + .my-md-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; + } + .my-md-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; + } + .my-md-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; + } + .mt-md-n1 { + margin-top: -0.25rem !important; + } + .mt-md-n2 { + margin-top: -0.5rem !important; + } + .mt-md-n3 { + margin-top: -1rem !important; + } + .mt-md-n4 { + margin-top: -1.5rem !important; + } + .mt-md-n5 { + margin-top: -3rem !important; + } + .mt-md-n6 { + margin-top: -12px !important; + } + .mt-md-n7 { + margin-top: -30px !important; + } + .mt-md-n8 { + margin-top: -10px !important; + } + .mt-md-n9 { + margin-top: -20px !important; + } + .me-md-n1 { + margin-right: -0.25rem !important; + } + .me-md-n2 { + margin-right: -0.5rem !important; + } + .me-md-n3 { + margin-right: -1rem !important; + } + .me-md-n4 { + margin-right: -1.5rem !important; + } + .me-md-n5 { + margin-right: -3rem !important; + } + .me-md-n6 { + margin-right: -12px !important; + } + .me-md-n7 { + margin-right: -30px !important; + } + .me-md-n8 { + margin-right: -10px !important; + } + .me-md-n9 { + margin-right: -20px !important; + } + .mb-md-n1 { + margin-bottom: -0.25rem !important; + } + .mb-md-n2 { + margin-bottom: -0.5rem !important; + } + .mb-md-n3 { + margin-bottom: -1rem !important; + } + .mb-md-n4 { + margin-bottom: -1.5rem !important; + } + .mb-md-n5 { + margin-bottom: -3rem !important; + } + .mb-md-n6 { + margin-bottom: -12px !important; + } + .mb-md-n7 { + margin-bottom: -30px !important; + } + .mb-md-n8 { + margin-bottom: -10px !important; + } + .mb-md-n9 { + margin-bottom: -20px !important; + } + .ms-md-n1 { + margin-left: -0.25rem !important; + } + .ms-md-n2 { + margin-left: -0.5rem !important; + } + .ms-md-n3 { + margin-left: -1rem !important; + } + .ms-md-n4 { + margin-left: -1.5rem !important; + } + .ms-md-n5 { + margin-left: -3rem !important; + } + .ms-md-n6 { + margin-left: -12px !important; + } + .ms-md-n7 { + margin-left: -30px !important; + } + .ms-md-n8 { + margin-left: -10px !important; + } + .ms-md-n9 { + margin-left: -20px !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .p-md-6 { + padding: 12px !important; + } + .p-md-7 { + padding: 30px !important; + } + .p-md-8 { + padding: 10px !important; + } + .p-md-9 { + padding: 20px !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-md-6 { + padding-right: 12px !important; + padding-left: 12px !important; + } + .px-md-7 { + padding-right: 30px !important; + padding-left: 30px !important; + } + .px-md-8 { + padding-right: 10px !important; + padding-left: 10px !important; + } + .px-md-9 { + padding-right: 20px !important; + padding-left: 20px !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-md-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; + } + .py-md-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; + } + .py-md-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; + } + .py-md-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pt-md-6 { + padding-top: 12px !important; + } + .pt-md-7 { + padding-top: 30px !important; + } + .pt-md-8 { + padding-top: 10px !important; + } + .pt-md-9 { + padding-top: 20px !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pe-md-6 { + padding-right: 12px !important; + } + .pe-md-7 { + padding-right: 30px !important; + } + .pe-md-8 { + padding-right: 10px !important; + } + .pe-md-9 { + padding-right: 20px !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .pb-md-6 { + padding-bottom: 12px !important; + } + .pb-md-7 { + padding-bottom: 30px !important; + } + .pb-md-8 { + padding-bottom: 10px !important; + } + .pb-md-9 { + padding-bottom: 20px !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .ps-md-6 { + padding-left: 12px !important; + } + .ps-md-7 { + padding-left: 30px !important; + } + .ps-md-8 { + padding-left: 10px !important; + } + .ps-md-9 { + padding-left: 20px !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .gap-md-6 { + gap: 12px !important; + } + .gap-md-7 { + gap: 30px !important; + } + .gap-md-8 { + gap: 10px !important; + } + .gap-md-9 { + gap: 20px !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .row-gap-md-6 { + row-gap: 12px !important; + } + .row-gap-md-7 { + row-gap: 30px !important; + } + .row-gap-md-8 { + row-gap: 10px !important; + } + .row-gap-md-9 { + row-gap: 20px !important; + } + .column-gap-md-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-md-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; + } + .column-gap-md-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; + } + .column-gap-md-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; + } + .column-gap-md-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-lg-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-lg-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-lg-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-lg-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .flex-lg-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-lg-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-lg-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-lg-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-lg-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .justify-content-lg-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; + } + .align-items-lg-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-lg-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-lg-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-lg-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-lg-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-lg-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-lg-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-lg-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-lg-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-lg-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-lg-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-lg-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-lg-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-lg-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-lg-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-lg-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-lg-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } + .order-lg-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; + } + .order-lg-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; + } + .order-lg-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; + } + .order-lg-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; + } + .order-lg-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; + } + .order-lg-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; + } + .order-lg-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; + } + .order-lg-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-6 { + margin: 12px !important; + } + .m-lg-7 { + margin: 30px !important; + } + .m-lg-8 { + margin: 10px !important; + } + .m-lg-9 { + margin: 20px !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-6 { + margin-right: 12px !important; + margin-left: 12px !important; + } + .mx-lg-7 { + margin-right: 30px !important; + margin-left: 30px !important; + } + .mx-lg-8 { + margin-right: 10px !important; + margin-left: 10px !important; + } + .mx-lg-9 { + margin-right: 20px !important; + margin-left: 20px !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; + } + .my-lg-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; + } + .my-lg-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; + } + .my-lg-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-6 { + margin-top: 12px !important; + } + .mt-lg-7 { + margin-top: 30px !important; + } + .mt-lg-8 { + margin-top: 10px !important; + } + .mt-lg-9 { + margin-top: 20px !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-6 { + margin-right: 12px !important; + } + .me-lg-7 { + margin-right: 30px !important; + } + .me-lg-8 { + margin-right: 10px !important; + } + .me-lg-9 { + margin-right: 20px !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-6 { + margin-bottom: 12px !important; + } + .mb-lg-7 { + margin-bottom: 30px !important; + } + .mb-lg-8 { + margin-bottom: 10px !important; + } + .mb-lg-9 { + margin-bottom: 20px !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-6 { + margin-left: 12px !important; + } + .ms-lg-7 { + margin-left: 30px !important; + } + .ms-lg-8 { + margin-left: 10px !important; + } + .ms-lg-9 { + margin-left: 20px !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .m-lg-n1 { + margin: -0.25rem !important; + } + .m-lg-n2 { + margin: -0.5rem !important; + } + .m-lg-n3 { + margin: -1rem !important; + } + .m-lg-n4 { + margin: -1.5rem !important; + } + .m-lg-n5 { + margin: -3rem !important; + } + .m-lg-n6 { + margin: -12px !important; + } + .m-lg-n7 { + margin: -30px !important; + } + .m-lg-n8 { + margin: -10px !important; + } + .m-lg-n9 { + margin: -20px !important; + } + .mx-lg-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-lg-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-lg-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-lg-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-lg-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-lg-n6 { + margin-right: -12px !important; + margin-left: -12px !important; + } + .mx-lg-n7 { + margin-right: -30px !important; + margin-left: -30px !important; + } + .mx-lg-n8 { + margin-right: -10px !important; + margin-left: -10px !important; + } + .mx-lg-n9 { + margin-right: -20px !important; + margin-left: -20px !important; + } + .my-lg-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-lg-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-lg-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-lg-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-lg-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-lg-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; + } + .my-lg-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; + } + .my-lg-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; + } + .my-lg-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; + } + .mt-lg-n1 { + margin-top: -0.25rem !important; + } + .mt-lg-n2 { + margin-top: -0.5rem !important; + } + .mt-lg-n3 { + margin-top: -1rem !important; + } + .mt-lg-n4 { + margin-top: -1.5rem !important; + } + .mt-lg-n5 { + margin-top: -3rem !important; + } + .mt-lg-n6 { + margin-top: -12px !important; + } + .mt-lg-n7 { + margin-top: -30px !important; + } + .mt-lg-n8 { + margin-top: -10px !important; + } + .mt-lg-n9 { + margin-top: -20px !important; + } + .me-lg-n1 { + margin-right: -0.25rem !important; + } + .me-lg-n2 { + margin-right: -0.5rem !important; + } + .me-lg-n3 { + margin-right: -1rem !important; + } + .me-lg-n4 { + margin-right: -1.5rem !important; + } + .me-lg-n5 { + margin-right: -3rem !important; + } + .me-lg-n6 { + margin-right: -12px !important; + } + .me-lg-n7 { + margin-right: -30px !important; + } + .me-lg-n8 { + margin-right: -10px !important; + } + .me-lg-n9 { + margin-right: -20px !important; + } + .mb-lg-n1 { + margin-bottom: -0.25rem !important; + } + .mb-lg-n2 { + margin-bottom: -0.5rem !important; + } + .mb-lg-n3 { + margin-bottom: -1rem !important; + } + .mb-lg-n4 { + margin-bottom: -1.5rem !important; + } + .mb-lg-n5 { + margin-bottom: -3rem !important; + } + .mb-lg-n6 { + margin-bottom: -12px !important; + } + .mb-lg-n7 { + margin-bottom: -30px !important; + } + .mb-lg-n8 { + margin-bottom: -10px !important; + } + .mb-lg-n9 { + margin-bottom: -20px !important; + } + .ms-lg-n1 { + margin-left: -0.25rem !important; + } + .ms-lg-n2 { + margin-left: -0.5rem !important; + } + .ms-lg-n3 { + margin-left: -1rem !important; + } + .ms-lg-n4 { + margin-left: -1.5rem !important; + } + .ms-lg-n5 { + margin-left: -3rem !important; + } + .ms-lg-n6 { + margin-left: -12px !important; + } + .ms-lg-n7 { + margin-left: -30px !important; + } + .ms-lg-n8 { + margin-left: -10px !important; + } + .ms-lg-n9 { + margin-left: -20px !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .p-lg-6 { + padding: 12px !important; + } + .p-lg-7 { + padding: 30px !important; + } + .p-lg-8 { + padding: 10px !important; + } + .p-lg-9 { + padding: 20px !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-lg-6 { + padding-right: 12px !important; + padding-left: 12px !important; + } + .px-lg-7 { + padding-right: 30px !important; + padding-left: 30px !important; + } + .px-lg-8 { + padding-right: 10px !important; + padding-left: 10px !important; + } + .px-lg-9 { + padding-right: 20px !important; + padding-left: 20px !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-lg-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; + } + .py-lg-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; + } + .py-lg-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; + } + .py-lg-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pt-lg-6 { + padding-top: 12px !important; + } + .pt-lg-7 { + padding-top: 30px !important; + } + .pt-lg-8 { + padding-top: 10px !important; + } + .pt-lg-9 { + padding-top: 20px !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pe-lg-6 { + padding-right: 12px !important; + } + .pe-lg-7 { + padding-right: 30px !important; + } + .pe-lg-8 { + padding-right: 10px !important; + } + .pe-lg-9 { + padding-right: 20px !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .pb-lg-6 { + padding-bottom: 12px !important; + } + .pb-lg-7 { + padding-bottom: 30px !important; + } + .pb-lg-8 { + padding-bottom: 10px !important; + } + .pb-lg-9 { + padding-bottom: 20px !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .ps-lg-6 { + padding-left: 12px !important; + } + .ps-lg-7 { + padding-left: 30px !important; + } + .ps-lg-8 { + padding-left: 10px !important; + } + .ps-lg-9 { + padding-left: 20px !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .gap-lg-6 { + gap: 12px !important; + } + .gap-lg-7 { + gap: 30px !important; + } + .gap-lg-8 { + gap: 10px !important; + } + .gap-lg-9 { + gap: 20px !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .row-gap-lg-6 { + row-gap: 12px !important; + } + .row-gap-lg-7 { + row-gap: 30px !important; + } + .row-gap-lg-8 { + row-gap: 10px !important; + } + .row-gap-lg-9 { + row-gap: 20px !important; + } + .column-gap-lg-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-lg-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; + } + .column-gap-lg-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; + } + .column-gap-lg-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; + } + .column-gap-lg-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xl-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .flex-xl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xl-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xl-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xl-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .justify-content-xl-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; + } + .align-items-xl-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xl-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xl-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xl-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xl-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xl-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-xl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xl-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-xl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xl-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } + .order-xl-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; + } + .order-xl-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; + } + .order-xl-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; + } + .order-xl-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; + } + .order-xl-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; + } + .order-xl-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; + } + .order-xl-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; + } + .order-xl-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-6 { + margin: 12px !important; + } + .m-xl-7 { + margin: 30px !important; + } + .m-xl-8 { + margin: 10px !important; + } + .m-xl-9 { + margin: 20px !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-6 { + margin-right: 12px !important; + margin-left: 12px !important; + } + .mx-xl-7 { + margin-right: 30px !important; + margin-left: 30px !important; + } + .mx-xl-8 { + margin-right: 10px !important; + margin-left: 10px !important; + } + .mx-xl-9 { + margin-right: 20px !important; + margin-left: 20px !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; + } + .my-xl-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; + } + .my-xl-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; + } + .my-xl-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-6 { + margin-top: 12px !important; + } + .mt-xl-7 { + margin-top: 30px !important; + } + .mt-xl-8 { + margin-top: 10px !important; + } + .mt-xl-9 { + margin-top: 20px !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-6 { + margin-right: 12px !important; + } + .me-xl-7 { + margin-right: 30px !important; + } + .me-xl-8 { + margin-right: 10px !important; + } + .me-xl-9 { + margin-right: 20px !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-6 { + margin-bottom: 12px !important; + } + .mb-xl-7 { + margin-bottom: 30px !important; + } + .mb-xl-8 { + margin-bottom: 10px !important; + } + .mb-xl-9 { + margin-bottom: 20px !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-6 { + margin-left: 12px !important; + } + .ms-xl-7 { + margin-left: 30px !important; + } + .ms-xl-8 { + margin-left: 10px !important; + } + .ms-xl-9 { + margin-left: 20px !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .m-xl-n1 { + margin: -0.25rem !important; + } + .m-xl-n2 { + margin: -0.5rem !important; + } + .m-xl-n3 { + margin: -1rem !important; + } + .m-xl-n4 { + margin: -1.5rem !important; + } + .m-xl-n5 { + margin: -3rem !important; + } + .m-xl-n6 { + margin: -12px !important; + } + .m-xl-n7 { + margin: -30px !important; + } + .m-xl-n8 { + margin: -10px !important; + } + .m-xl-n9 { + margin: -20px !important; + } + .mx-xl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xl-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xl-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xl-n6 { + margin-right: -12px !important; + margin-left: -12px !important; + } + .mx-xl-n7 { + margin-right: -30px !important; + margin-left: -30px !important; + } + .mx-xl-n8 { + margin-right: -10px !important; + margin-left: -10px !important; + } + .mx-xl-n9 { + margin-right: -20px !important; + margin-left: -20px !important; + } + .my-xl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xl-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xl-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xl-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; + } + .my-xl-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; + } + .my-xl-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; + } + .my-xl-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; + } + .mt-xl-n1 { + margin-top: -0.25rem !important; + } + .mt-xl-n2 { + margin-top: -0.5rem !important; + } + .mt-xl-n3 { + margin-top: -1rem !important; + } + .mt-xl-n4 { + margin-top: -1.5rem !important; + } + .mt-xl-n5 { + margin-top: -3rem !important; + } + .mt-xl-n6 { + margin-top: -12px !important; + } + .mt-xl-n7 { + margin-top: -30px !important; + } + .mt-xl-n8 { + margin-top: -10px !important; + } + .mt-xl-n9 { + margin-top: -20px !important; + } + .me-xl-n1 { + margin-right: -0.25rem !important; + } + .me-xl-n2 { + margin-right: -0.5rem !important; + } + .me-xl-n3 { + margin-right: -1rem !important; + } + .me-xl-n4 { + margin-right: -1.5rem !important; + } + .me-xl-n5 { + margin-right: -3rem !important; + } + .me-xl-n6 { + margin-right: -12px !important; + } + .me-xl-n7 { + margin-right: -30px !important; + } + .me-xl-n8 { + margin-right: -10px !important; + } + .me-xl-n9 { + margin-right: -20px !important; + } + .mb-xl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xl-n3 { + margin-bottom: -1rem !important; + } + .mb-xl-n4 { + margin-bottom: -1.5rem !important; + } + .mb-xl-n5 { + margin-bottom: -3rem !important; + } + .mb-xl-n6 { + margin-bottom: -12px !important; + } + .mb-xl-n7 { + margin-bottom: -30px !important; + } + .mb-xl-n8 { + margin-bottom: -10px !important; + } + .mb-xl-n9 { + margin-bottom: -20px !important; + } + .ms-xl-n1 { + margin-left: -0.25rem !important; + } + .ms-xl-n2 { + margin-left: -0.5rem !important; + } + .ms-xl-n3 { + margin-left: -1rem !important; + } + .ms-xl-n4 { + margin-left: -1.5rem !important; + } + .ms-xl-n5 { + margin-left: -3rem !important; + } + .ms-xl-n6 { + margin-left: -12px !important; + } + .ms-xl-n7 { + margin-left: -30px !important; + } + .ms-xl-n8 { + margin-left: -10px !important; + } + .ms-xl-n9 { + margin-left: -20px !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .p-xl-6 { + padding: 12px !important; + } + .p-xl-7 { + padding: 30px !important; + } + .p-xl-8 { + padding: 10px !important; + } + .p-xl-9 { + padding: 20px !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xl-6 { + padding-right: 12px !important; + padding-left: 12px !important; + } + .px-xl-7 { + padding-right: 30px !important; + padding-left: 30px !important; + } + .px-xl-8 { + padding-right: 10px !important; + padding-left: 10px !important; + } + .px-xl-9 { + padding-right: 20px !important; + padding-left: 20px !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xl-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; + } + .py-xl-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; + } + .py-xl-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; + } + .py-xl-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pt-xl-6 { + padding-top: 12px !important; + } + .pt-xl-7 { + padding-top: 30px !important; + } + .pt-xl-8 { + padding-top: 10px !important; + } + .pt-xl-9 { + padding-top: 20px !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pe-xl-6 { + padding-right: 12px !important; + } + .pe-xl-7 { + padding-right: 30px !important; + } + .pe-xl-8 { + padding-right: 10px !important; + } + .pe-xl-9 { + padding-right: 20px !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .pb-xl-6 { + padding-bottom: 12px !important; + } + .pb-xl-7 { + padding-bottom: 30px !important; + } + .pb-xl-8 { + padding-bottom: 10px !important; + } + .pb-xl-9 { + padding-bottom: 20px !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .ps-xl-6 { + padding-left: 12px !important; + } + .ps-xl-7 { + padding-left: 30px !important; + } + .ps-xl-8 { + padding-left: 10px !important; + } + .ps-xl-9 { + padding-left: 20px !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .gap-xl-6 { + gap: 12px !important; + } + .gap-xl-7 { + gap: 30px !important; + } + .gap-xl-8 { + gap: 10px !important; + } + .gap-xl-9 { + gap: 20px !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .row-gap-xl-6 { + row-gap: 12px !important; + } + .row-gap-xl-7 { + row-gap: 30px !important; + } + .row-gap-xl-8 { + row-gap: 10px !important; + } + .row-gap-xl-9 { + row-gap: 20px !important; + } + .column-gap-xl-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xl-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; + } + .column-gap-xl-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; + } + .column-gap-xl-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; + } + .column-gap-xl-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-xxl-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + -webkit-box-flex: 1 !important; + -ms-flex: 1 1 auto !important; + flex: 1 1 auto !important; + } + .flex-xxl-row { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: row !important; + flex-direction: row !important; + } + .flex-xxl-column { + -webkit-box-orient: vertical !important; + -webkit-box-direction: normal !important; + -ms-flex-direction: column !important; + flex-direction: column !important; + } + .flex-xxl-row-reverse { + -webkit-box-orient: horizontal !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: row-reverse !important; + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + -webkit-box-orient: vertical !important; + -webkit-box-direction: reverse !important; + -ms-flex-direction: column-reverse !important; + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + -webkit-box-flex: 0 !important; + -ms-flex-positive: 0 !important; + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + -webkit-box-flex: 1 !important; + -ms-flex-positive: 1 !important; + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + -ms-flex-negative: 0 !important; + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + -ms-flex-negative: 1 !important; + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + -ms-flex-wrap: wrap !important; + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + -ms-flex-wrap: nowrap !important; + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + -ms-flex-wrap: wrap-reverse !important; + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + -webkit-box-pack: start !important; + -ms-flex-pack: start !important; + justify-content: flex-start !important; + } + .justify-content-xxl-end { + -webkit-box-pack: end !important; + -ms-flex-pack: end !important; + justify-content: flex-end !important; + } + .justify-content-xxl-center { + -webkit-box-pack: center !important; + -ms-flex-pack: center !important; + justify-content: center !important; + } + .justify-content-xxl-between { + -webkit-box-pack: justify !important; + -ms-flex-pack: justify !important; + justify-content: space-between !important; + } + .justify-content-xxl-around { + -ms-flex-pack: distribute !important; + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + -webkit-box-pack: space-evenly !important; + -ms-flex-pack: space-evenly !important; + justify-content: space-evenly !important; + } + .align-items-xxl-start { + -webkit-box-align: start !important; + -ms-flex-align: start !important; + align-items: flex-start !important; + } + .align-items-xxl-end { + -webkit-box-align: end !important; + -ms-flex-align: end !important; + align-items: flex-end !important; + } + .align-items-xxl-center { + -webkit-box-align: center !important; + -ms-flex-align: center !important; + align-items: center !important; + } + .align-items-xxl-baseline { + -webkit-box-align: baseline !important; + -ms-flex-align: baseline !important; + align-items: baseline !important; + } + .align-items-xxl-stretch { + -webkit-box-align: stretch !important; + -ms-flex-align: stretch !important; + align-items: stretch !important; + } + .align-content-xxl-start { + -ms-flex-line-pack: start !important; + align-content: flex-start !important; + } + .align-content-xxl-end { + -ms-flex-line-pack: end !important; + align-content: flex-end !important; + } + .align-content-xxl-center { + -ms-flex-line-pack: center !important; + align-content: center !important; + } + .align-content-xxl-between { + -ms-flex-line-pack: justify !important; + align-content: space-between !important; + } + .align-content-xxl-around { + -ms-flex-line-pack: distribute !important; + align-content: space-around !important; + } + .align-content-xxl-stretch { + -ms-flex-line-pack: stretch !important; + align-content: stretch !important; + } + .align-self-xxl-auto { + -ms-flex-item-align: auto !important; + -ms-grid-row-align: auto !important; + align-self: auto !important; + } + .align-self-xxl-start { + -ms-flex-item-align: start !important; + align-self: flex-start !important; + } + .align-self-xxl-end { + -ms-flex-item-align: end !important; + align-self: flex-end !important; + } + .align-self-xxl-center { + -ms-flex-item-align: center !important; + -ms-grid-row-align: center !important; + align-self: center !important; + } + .align-self-xxl-baseline { + -ms-flex-item-align: baseline !important; + align-self: baseline !important; + } + .align-self-xxl-stretch { + -ms-flex-item-align: stretch !important; + -ms-grid-row-align: stretch !important; + align-self: stretch !important; + } + .order-xxl-first { + -webkit-box-ordinal-group: 0 !important; + -ms-flex-order: -1 !important; + order: -1 !important; + } + .order-xxl-0 { + -webkit-box-ordinal-group: 1 !important; + -ms-flex-order: 0 !important; + order: 0 !important; + } + .order-xxl-1 { + -webkit-box-ordinal-group: 2 !important; + -ms-flex-order: 1 !important; + order: 1 !important; + } + .order-xxl-2 { + -webkit-box-ordinal-group: 3 !important; + -ms-flex-order: 2 !important; + order: 2 !important; + } + .order-xxl-3 { + -webkit-box-ordinal-group: 4 !important; + -ms-flex-order: 3 !important; + order: 3 !important; + } + .order-xxl-4 { + -webkit-box-ordinal-group: 5 !important; + -ms-flex-order: 4 !important; + order: 4 !important; + } + .order-xxl-5 { + -webkit-box-ordinal-group: 6 !important; + -ms-flex-order: 5 !important; + order: 5 !important; + } + .order-xxl-last { + -webkit-box-ordinal-group: 7 !important; + -ms-flex-order: 6 !important; + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-6 { + margin: 12px !important; + } + .m-xxl-7 { + margin: 30px !important; + } + .m-xxl-8 { + margin: 10px !important; + } + .m-xxl-9 { + margin: 20px !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-6 { + margin-right: 12px !important; + margin-left: 12px !important; + } + .mx-xxl-7 { + margin-right: 30px !important; + margin-left: 30px !important; + } + .mx-xxl-8 { + margin-right: 10px !important; + margin-left: 10px !important; + } + .mx-xxl-9 { + margin-right: 20px !important; + margin-left: 20px !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-6 { + margin-top: 12px !important; + margin-bottom: 12px !important; + } + .my-xxl-7 { + margin-top: 30px !important; + margin-bottom: 30px !important; + } + .my-xxl-8 { + margin-top: 10px !important; + margin-bottom: 10px !important; + } + .my-xxl-9 { + margin-top: 20px !important; + margin-bottom: 20px !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-6 { + margin-top: 12px !important; + } + .mt-xxl-7 { + margin-top: 30px !important; + } + .mt-xxl-8 { + margin-top: 10px !important; + } + .mt-xxl-9 { + margin-top: 20px !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-6 { + margin-right: 12px !important; + } + .me-xxl-7 { + margin-right: 30px !important; + } + .me-xxl-8 { + margin-right: 10px !important; + } + .me-xxl-9 { + margin-right: 20px !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-6 { + margin-bottom: 12px !important; + } + .mb-xxl-7 { + margin-bottom: 30px !important; + } + .mb-xxl-8 { + margin-bottom: 10px !important; + } + .mb-xxl-9 { + margin-bottom: 20px !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-6 { + margin-left: 12px !important; + } + .ms-xxl-7 { + margin-left: 30px !important; + } + .ms-xxl-8 { + margin-left: 10px !important; + } + .ms-xxl-9 { + margin-left: 20px !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .m-xxl-n1 { + margin: -0.25rem !important; + } + .m-xxl-n2 { + margin: -0.5rem !important; + } + .m-xxl-n3 { + margin: -1rem !important; + } + .m-xxl-n4 { + margin: -1.5rem !important; + } + .m-xxl-n5 { + margin: -3rem !important; + } + .m-xxl-n6 { + margin: -12px !important; + } + .m-xxl-n7 { + margin: -30px !important; + } + .m-xxl-n8 { + margin: -10px !important; + } + .m-xxl-n9 { + margin: -20px !important; + } + .mx-xxl-n1 { + margin-right: -0.25rem !important; + margin-left: -0.25rem !important; + } + .mx-xxl-n2 { + margin-right: -0.5rem !important; + margin-left: -0.5rem !important; + } + .mx-xxl-n3 { + margin-right: -1rem !important; + margin-left: -1rem !important; + } + .mx-xxl-n4 { + margin-right: -1.5rem !important; + margin-left: -1.5rem !important; + } + .mx-xxl-n5 { + margin-right: -3rem !important; + margin-left: -3rem !important; + } + .mx-xxl-n6 { + margin-right: -12px !important; + margin-left: -12px !important; + } + .mx-xxl-n7 { + margin-right: -30px !important; + margin-left: -30px !important; + } + .mx-xxl-n8 { + margin-right: -10px !important; + margin-left: -10px !important; + } + .mx-xxl-n9 { + margin-right: -20px !important; + margin-left: -20px !important; + } + .my-xxl-n1 { + margin-top: -0.25rem !important; + margin-bottom: -0.25rem !important; + } + .my-xxl-n2 { + margin-top: -0.5rem !important; + margin-bottom: -0.5rem !important; + } + .my-xxl-n3 { + margin-top: -1rem !important; + margin-bottom: -1rem !important; + } + .my-xxl-n4 { + margin-top: -1.5rem !important; + margin-bottom: -1.5rem !important; + } + .my-xxl-n5 { + margin-top: -3rem !important; + margin-bottom: -3rem !important; + } + .my-xxl-n6 { + margin-top: -12px !important; + margin-bottom: -12px !important; + } + .my-xxl-n7 { + margin-top: -30px !important; + margin-bottom: -30px !important; + } + .my-xxl-n8 { + margin-top: -10px !important; + margin-bottom: -10px !important; + } + .my-xxl-n9 { + margin-top: -20px !important; + margin-bottom: -20px !important; + } + .mt-xxl-n1 { + margin-top: -0.25rem !important; + } + .mt-xxl-n2 { + margin-top: -0.5rem !important; + } + .mt-xxl-n3 { + margin-top: -1rem !important; + } + .mt-xxl-n4 { + margin-top: -1.5rem !important; + } + .mt-xxl-n5 { + margin-top: -3rem !important; + } + .mt-xxl-n6 { + margin-top: -12px !important; + } + .mt-xxl-n7 { + margin-top: -30px !important; + } + .mt-xxl-n8 { + margin-top: -10px !important; + } + .mt-xxl-n9 { + margin-top: -20px !important; + } + .me-xxl-n1 { + margin-right: -0.25rem !important; + } + .me-xxl-n2 { + margin-right: -0.5rem !important; + } + .me-xxl-n3 { + margin-right: -1rem !important; + } + .me-xxl-n4 { + margin-right: -1.5rem !important; + } + .me-xxl-n5 { + margin-right: -3rem !important; + } + .me-xxl-n6 { + margin-right: -12px !important; + } + .me-xxl-n7 { + margin-right: -30px !important; + } + .me-xxl-n8 { + margin-right: -10px !important; + } + .me-xxl-n9 { + margin-right: -20px !important; + } + .mb-xxl-n1 { + margin-bottom: -0.25rem !important; + } + .mb-xxl-n2 { + margin-bottom: -0.5rem !important; + } + .mb-xxl-n3 { + margin-bottom: -1rem !important; + } + .mb-xxl-n4 { + margin-bottom: -1.5rem !important; + } + .mb-xxl-n5 { + margin-bottom: -3rem !important; + } + .mb-xxl-n6 { + margin-bottom: -12px !important; + } + .mb-xxl-n7 { + margin-bottom: -30px !important; + } + .mb-xxl-n8 { + margin-bottom: -10px !important; + } + .mb-xxl-n9 { + margin-bottom: -20px !important; + } + .ms-xxl-n1 { + margin-left: -0.25rem !important; + } + .ms-xxl-n2 { + margin-left: -0.5rem !important; + } + .ms-xxl-n3 { + margin-left: -1rem !important; + } + .ms-xxl-n4 { + margin-left: -1.5rem !important; + } + .ms-xxl-n5 { + margin-left: -3rem !important; + } + .ms-xxl-n6 { + margin-left: -12px !important; + } + .ms-xxl-n7 { + margin-left: -30px !important; + } + .ms-xxl-n8 { + margin-left: -10px !important; + } + .ms-xxl-n9 { + margin-left: -20px !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .p-xxl-6 { + padding: 12px !important; + } + .p-xxl-7 { + padding: 30px !important; + } + .p-xxl-8 { + padding: 10px !important; + } + .p-xxl-9 { + padding: 20px !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .px-xxl-6 { + padding-right: 12px !important; + padding-left: 12px !important; + } + .px-xxl-7 { + padding-right: 30px !important; + padding-left: 30px !important; + } + .px-xxl-8 { + padding-right: 10px !important; + padding-left: 10px !important; + } + .px-xxl-9 { + padding-right: 20px !important; + padding-left: 20px !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .py-xxl-6 { + padding-top: 12px !important; + padding-bottom: 12px !important; + } + .py-xxl-7 { + padding-top: 30px !important; + padding-bottom: 30px !important; + } + .py-xxl-8 { + padding-top: 10px !important; + padding-bottom: 10px !important; + } + .py-xxl-9 { + padding-top: 20px !important; + padding-bottom: 20px !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pt-xxl-6 { + padding-top: 12px !important; + } + .pt-xxl-7 { + padding-top: 30px !important; + } + .pt-xxl-8 { + padding-top: 10px !important; + } + .pt-xxl-9 { + padding-top: 20px !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pe-xxl-6 { + padding-right: 12px !important; + } + .pe-xxl-7 { + padding-right: 30px !important; + } + .pe-xxl-8 { + padding-right: 10px !important; + } + .pe-xxl-9 { + padding-right: 20px !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .pb-xxl-6 { + padding-bottom: 12px !important; + } + .pb-xxl-7 { + padding-bottom: 30px !important; + } + .pb-xxl-8 { + padding-bottom: 10px !important; + } + .pb-xxl-9 { + padding-bottom: 20px !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .ps-xxl-6 { + padding-left: 12px !important; + } + .ps-xxl-7 { + padding-left: 30px !important; + } + .ps-xxl-8 { + padding-left: 10px !important; + } + .ps-xxl-9 { + padding-left: 20px !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .gap-xxl-6 { + gap: 12px !important; + } + .gap-xxl-7 { + gap: 30px !important; + } + .gap-xxl-8 { + gap: 10px !important; + } + .gap-xxl-9 { + gap: 20px !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .row-gap-xxl-6 { + row-gap: 12px !important; + } + .row-gap-xxl-7 { + row-gap: 30px !important; + } + .row-gap-xxl-8 { + row-gap: 10px !important; + } + .row-gap-xxl-9 { + row-gap: 20px !important; + } + .column-gap-xxl-0 { + -webkit-column-gap: 0 !important; + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -webkit-column-gap: 0.25rem !important; + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -webkit-column-gap: 0.5rem !important; + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -webkit-column-gap: 1rem !important; + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -webkit-column-gap: 1.5rem !important; + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -webkit-column-gap: 3rem !important; + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .column-gap-xxl-6 { + -webkit-column-gap: 12px !important; + -moz-column-gap: 12px !important; + column-gap: 12px !important; + } + .column-gap-xxl-7 { + -webkit-column-gap: 30px !important; + -moz-column-gap: 30px !important; + column-gap: 30px !important; + } + .column-gap-xxl-8 { + -webkit-column-gap: 10px !important; + -moz-column-gap: 10px !important; + column-gap: 10px !important; + } + .column-gap-xxl-9 { + -webkit-column-gap: 20px !important; + -moz-column-gap: 20px !important; + column-gap: 20px !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-8 { + font-size: 1.875rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: -ms-grid !important; + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: -webkit-box !important; + display: -ms-flexbox !important; + display: flex !important; + } + .d-print-inline-flex { + display: -webkit-inline-box !important; + display: -ms-inline-flexbox !important; + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +.left-sidebar { + width: 270px; + background-color: #fff; + position: absolute; + -webkit-transition: 0.2s ease-in; + transition: 0.2s ease-in; + height: 100%; + z-index: 11; + border-right: 1px solid rgb(229, 234, 239); +} +.left-sidebar .scroll-sidebar { + overflow-y: auto; + padding: 0 24px; + height: calc(100vh - 80px); + border-radius: 7px; +} +.left-sidebar .scroll-sidebar .simplebar-track.simplebar-horizontal { + visibility: hidden !important; +} +.brand-logo { + min-height: 70px; + padding: 0 24px; +} +.unlimited-access { + padding: 18px 22px 25px; + margin: 0 -5px; +} +.unlimited-access .unlimited-access-img { + margin: -35px -5px 0 -43px; +} +.nav-small-cap { + margin-top: 24px; + color: #2a3547; + font-size: 12px; + font-weight: 700; + padding: 3px 12px; + line-height: 26px; + text-transform: uppercase; +} +.nav-small-cap .nav-small-cap-icon { + display: none; +} +.sidebar-nav ul .sidebar-item .sidebar-link { + color: #2a3547; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 14px; + white-space: nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + line-height: 25px; + position: relative; + margin: 0px 0px 2px; + padding: 10px; + border-radius: 7px; + gap: 15px; + font-weight: 400; +} +.sidebar-nav ul .sidebar-item .sidebar-link span:first-child { + display: -webkit-box; + display: -ms-flexbox; + display: flex; +} +.sidebar-nav ul .sidebar-item .sidebar-link .ti { + -ms-flex-negative: 0; + flex-shrink: 0; + font-size: 21px; +} +.sidebar-nav ul .sidebar-item .sidebar-link:hover { + background-color: rgba(93, 135, 255, 0.1); + color: #5d87ff; +} +.sidebar-nav ul .sidebar-item .sidebar-link:hover.has-arrow:after { + border-color: #5d87ff; +} +.sidebar-nav ul .sidebar-item .sidebar-link.active:hover.has-arrow:after { + border-color: #fff; +} +.sidebar-nav ul .sidebar-item .link-disabled { + opacity: 0.38; +} +.sidebar-nav ul .sidebar-item.selected > .sidebar-link, +.sidebar-nav ul .sidebar-item.selected > .sidebar-link.active, +.sidebar-nav ul .sidebar-item > .sidebar-link.active { + background-color: #5d87ff; + color: #fff; +} +.sidebar-nav .sidebar-list .sidebar-list-item { + padding: 8px 0; +} +.collapse.in { + display: block; +} +.app-header { + position: relative; + z-index: 50; + width: 100%; + background: #fff; + padding: 0 25px; +} +.app-header .container-fluid, +.app-header .container-lg, +.app-header .container-md, +.app-header .container-sm, +.app-header .container-xl, +.app-header .container-xxl { + max-width: 1200px; + margin: 0 auto; + padding: 0 30px; +} +.app-header .navbar { + min-height: 70px; + padding: 0; +} +.app-header .navbar .navbar-nav .nav-item .nav-link { + padding: 8px 16px; + line-height: 70px; + height: 70px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + font-size: 20px; + z-index: 2; +} +.app-header .navbar .navbar-nav.quick-links .nav-item .nav-link { + font-size: 0.875rem; + position: relative; + z-index: 2; +} +.app-header .navbar .navbar-nav.quick-links .nav-item:hover .nav-link { + -webkit-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: #5d87ff !important; +} +.app-header .navbar .navbar-nav.quick-links .nav-item:hover .nav-link:before { + content: ""; + position: absolute; + left: 0; + right: 0; + height: 36px; + width: 100%; + border-radius: 7px; + background: #ecf2ff; + z-index: -1; +} +.nav-icon-hover { + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.nav-icon-hover:hover:before { + content: ""; + position: absolute; + left: 50%; + top: 50%; + -webkit-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); + height: 40px; + width: 40px; + z-index: -1; + border-radius: 100px; + -webkit-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + background-color: #ecf2ff; +} +.navbar-nav .dropdown-menu { + position: absolute; + min-width: 200px; +} +.navbar-nav .dropdown-menu .dropdown-item { + border-radius: 8px; +} +.notification { + content: ""; + position: absolute; + top: 22px; + right: 9px; + width: 8px; + height: 8px; +} +@media (max-width: 991.98px) { + .app-header .navbar { + -ms-flex-wrap: nowrap; + flex-wrap: nowrap; + } + .app-header .navbar .navbar-nav { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + } +} +@media (max-width: 767.98px) { + .navbar-nav .dropdown-menu { + position: absolute; + width: 100%; + } + .navbar-nav .nav-item.dropdown { + position: static; + } +} +@-webkit-keyframes animation-dropdown-menu-move-up-scroll { + 0% { + top: 71px; + } + to { + top: 70px; + } +} +@keyframes animation-dropdown-menu-move-up-scroll { + 0% { + top: 71px; + } + to { + top: 70px; + } +} +@-webkit-keyframes animation-dropdown-menu-fade-in { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes animation-dropdown-menu-fade-in { + 0% { + opacity: 0; + } + to { + opacity: 1; + } +} +.dropdown-menu-animate-up { + -webkit-animation: animation-dropdown-menu-fade-in 0.5s ease 1, + animation-dropdown-menu-move-up 0.5s ease-out 1; + animation: animation-dropdown-menu-fade-in 0.5s ease 1, + animation-dropdown-menu-move-up 0.5s ease-out 1; +} +@-webkit-keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +@keyframes fadeInUp { + 0% { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} +@media (max-width: 991.98px) { + .w-xs-100 { + width: 100% !important; + } +} +.page-wrapper { + position: relative; +} +.body-wrapper { + position: relative; +} +.body-wrapper > .container-fluid, +.body-wrapper > .container-lg, +.body-wrapper > .container-md, +.body-wrapper > .container-sm, +.body-wrapper > .container-xl, +.body-wrapper > .container-xxl { + max-width: 1200px; + margin: 0 auto; + padding: 24px; + -webkit-transition: 0.2s ease-in; + transition: 0.2s ease-in; +} +@media (max-width: 767.98px) { + .body-wrapper > .container-fluid, + .body-wrapper > .container-lg, + .body-wrapper > .container-md, + .body-wrapper > .container-sm, + .body-wrapper > .container-xl, + .body-wrapper > .container-xxl { + padding: 30px 20px; + } +} +.simplebar-scrollbar:before { + background: rgba(0, 0, 0, 0.5) !important; +} +#main-wrapper[data-layout="vertical"][data-sidebar-position="fixed"] + .left-sidebar { + position: fixed; + top: 0; +} +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .app-header { + position: fixed; + z-index: 10; +} +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-fluid, +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-lg, +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-md, +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-sm, +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-xl, +#main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .body-wrapper + > .container-xxl { + padding-top: calc(70px + 15px); +} +@media (min-width: 1200px) { + #main-wrapper[data-layout="vertical"][data-header-position="fixed"][data-sidebartype="mini-sidebar"] + .app-header { + width: 100%; + } + #main-wrapper[data-layout="vertical"][data-header-position="fixed"] + .app-header { + width: calc(100% - 270px); + } + #main-wrapper[data-layout="vertical"][data-sidebartype="full"] + .body-wrapper { + margin-left: 270px; + } +} +@media (max-width: 1199px) { + #main-wrapper[data-layout="vertical"][data-sidebartype="full"] + .left-sidebar, + #main-wrapper[data-layout="vertical"][data-sidebartype="mini-sidebar"] + .left-sidebar { + left: -270px; + } + #main-wrapper[data-layout="vertical"][data-sidebartype="full"].show-sidebar + .left-sidebar, + #main-wrapper[data-layout="vertical"][data-sidebartype="mini-sidebar"].show-sidebar + .left-sidebar { + left: 0; + } +} +* { + margin: 0; + padding: 0; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +a { + text-decoration: none; +} +a:hover { + color: #5d87ff; +} +ul { + list-style: none; + padding-left: 0; +} +:focus { + outline: 0; + -webkit-box-shadow: none !important; + box-shadow: none !important; +} +.cursor-pointer { + cursor: pointer; +} +.calendar-events { + cursor: move; +} +.object-fit-cover { + -o-object-fit: cover; + object-fit: cover; +} +.card-title { + font-size: 18px; +} +.card-subtitle { + font-size: 14px; +} +.card { + margin-bottom: 30px; +} +.card-hover { + -webkit-transition: 0.2s ease-in; + transition: 0.2s ease-in; +} +.card-hover:hover { + -webkit-transform: translate3d(0px, -5px, 0px); + transform: translate3d(0px, -5px, 0px); +} +.round-8 { + width: 8px; + height: 8px; +} +.round-20 { + width: 20px !important; + height: 20px !important; +} +.radial-gradient { + position: relative; +} +.radial-gradient:before { + content: ""; + position: absolute; + height: 100%; + width: 100%; + opacity: 0.3; + background: radial-gradient( + rgb(210, 241, 223), + rgb(211, 215, 250), + rgb(186, 216, 244) + ) + 0% 0%/400% 400%; + -webkit-animation: 15s ease 0s infinite normal none running gradient; + animation: 15s ease 0s infinite normal none running gradient; +} +/* .timeline-item { + display: flex; + flex-direction: row; + align-items: flex-start; + margin-bottom: 1rem; +} */ + +.timeline-widget .timeline-item { + min-height: 70px; +} +.timeline-widget .timeline-item .timeline-time { + padding: 6px 16px 6px 0; + min-width: 90px; +} +.timeline-widget .timeline-item .timeline-badge-wrap .timeline-badge { + width: 12px; + height: 12px; + border-radius: 50px; + background-color: transparent; +} +.timeline-widget .timeline-item .timeline-badge-wrap .timeline-badge-border { + width: 1px; + height: 100%; + background-color: #ebf1f6; +} +.timeline-widget .timeline-item .timeline-desc { + padding: 6px 16px; +} +.timeline-widget .timeline-item .timeline-badge.badge-primary { + border: 2px solid #5d87ff; +} diff --git a/public/assets/images/backgrounds/rocket.png b/public/assets/images/backgrounds/rocket.png new file mode 100644 index 0000000000000000000000000000000000000000..5ee44a973df60a5423c1e76e8d24d2c4679b4035 GIT binary patch literal 15492 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 + + + + + + diff --git a/public/assets/images/logos/favicon.png b/public/assets/images/logos/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd86ac7929408e3e148bd4444fd9a686f5521cd GIT binary patch literal 583 zcmeAS@N?(olHy`uVBq!ia0vp^Njvq&uE2jv*CuS}$K0 zYBCUUy~wSVWpZPqcAT`056o`bV&S zc8}bt#JkCxA@$H|3BwiFGG^pD&ONg9&{8*+CYcPbmMyn@N^%@8=m}T~A6RHIaYEeu ze~QfufA{wY+)Xh$w!l+prcvYOo%4A1=pSsIr(>A2RM}44B0Af{q-jUsE8 lnfay9UsOJmUT=PYJz=-a!RfcX_W=FL;OXk;vd$@?2>{s!6XE~> literal 0 HcmV?d00001 diff --git a/public/assets/images/products/s1.jpg b/public/assets/images/products/s1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..144d0e8a8092e60fc3cf4029c6c5cb1e1aed530f GIT binary patch literal 117358 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%0AkIJYjIvT@?I#$$=kb7!aW!f)D`mn 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

    |Jd9u|=zVQa(4IU<9@hUTPTqN@A(wFDJr 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%0A6(sA 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 z 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 zen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/css/icons/tabler-icons/fonts/tabler-icons.ttf b/public/assets/css/icons/tabler-icons/fonts/tabler-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6cebc056866d16bfe012c1469a3168140c06f0be GIT binary patch literal 1521760 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%0DtM1!tx?*QSmU$ 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�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 PCY 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